Abs:https://arxiv.org/abs/2407.10671
Code:https://github.com/QwenLM/Qwen2
Qwen 团队近日发布了目前最强开源大模型 Qwen2 的技术报告。文中介绍了预训练和对齐过程中所采用的技术和方法,最后对模型进行了详细的评估。
Abstract
发布了一系列的 Base 模型和 Instruct 模型,参数量从 0.5B 到 72B,包括 dense 系列模型和一个 MoE 模型。Qwen2 超越了包括 Qwen1.5 在内的大多数先前的开源模型。与闭源模型相比,在语言理解、生成、多语言、代码、数学、推理等不同基准上也表现出了有竞争力的性能。旗舰的 Qwen2-72B-Base 和 Qwen2-72B-Instruct 在许多评测集上表现出卓越的性能。此外,Qwen2 也展示出了鲁棒的多语言性能,精通大约 30 种语言,凸显了其全能性。Qwen2 模型权重在 Hugging Face 和 ModelScope 上进行了开源,样例代码在 Github 上进行了开源。
支持的语言:
Introduction
随着 ChatGPT 的问世,在全球掀起了 LLM 的热潮。Llama 系列模型的发布进一步激发了开源社区的兴趣。最近,Claude-3 Opus 和 GPT-4o 迅速登顶 Chatbot Arena 王座。此外,Llama-3 已经成为 SOTA 的开源系列模型,缩小了与领先的闭源模型的差距,被认为达到了 GPT-4 水平。越来越多的 LLM 正在追求 OpenAI 的 GPT 系列的进步,其中包括 Qwen、Mistral、Gemma 等在内的许多系列都是以开源形式发布的。
近几个月来,Qwen 团队成功发布了 Qwen 系列模型并进化为 Qwen1.5。同时,Qwen 团队推出了 vision-language 模型 Qwen-VL 和 audio-language 模型 Qwen-Audio。
在这篇技术报告中,Qwen 团队发布了最新的 Qwen2 系列 LLM。Transformer 架构,next-token prediction 训练。发布了包括 0.5B、1.5B、7B、72B 在内的 4 个 dense 模型以及 1 个 57B 的 MoE 模型(每个 token 激活其中 14B 参数)。所有的模型在一个超过 7T tokens 的高质量大规模数据集上进行预训练,数据涵盖广泛的领域和语种。与之前的 Qwen 版本相比,Qwen2 包含了更广泛的语言数据,提高了代码和数学数据的数量和质量。通常认为这可以提高 LLM 的推理能力。预训练后,所有模型都进行了 SFT 和 DPO。
Qwen 团队对 Qwen2 进行了全面评估,基本都优于竞品模型。Qwen2-72B-Instruct 在 MT-Bench 得分为 9.1,Arena-Hard 48.1,LiveCodeBench 35.7。Qwen2-72B-Base 在 MMLU 得分 84.2,GPQA 37.9,HumanEval 64.6,GSM8K 89.5,BBH 82.4。
Tokenizer & Model
这一节介绍 Qwen2 的 Tokenizer 和模型设计。
Tokenizer
采用与 Qwen 相同的基于 byte-leval 的 BPE Tokenizer。值得注意的是,这种 Tokenizer 具有很高的编码效率,从而促进了 Qwen2 的多语言能力。【字节对编码(BPE, Byte Pair Encoder),又称 digram coding 双字母组合编码,是一种数据压缩 算法,用来在固定大小的词表中实现可变⻓度的子词。该算法简单有效,因而目前它是最流行的方法。】
词汇表包含 151643 个常规 tokens 和 3 个 特殊控制 tokens。
Model Architecture
基于decoder-only Transformer 架构,带有 causal masks 的 self-attention。
包括 4 个规模的 dense 模型和 1 个 MoE 模型。
Qwen2 Dense Model:
模型架构包括多个 Transformer 层,每层具有 causal attention 机制和 FFN。
与先前 Qwen 系列模型的主要区别如下:
1、采用 GQA 来代替了传统的 multi-head attention。GQA 在推理过程中优化了 KV cache,可以显著提升吞吐量。
Paper:GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints
Abs:https://arxiv.org/abs/2305.13245
2、为了扩展 Qwen2 的上下文窗口,实现了 DCA,将长序列分割成具有可管理长度的 chunks。如果输入可以在一个 chunk 中处理,则 DCA 跟原始 attention 输出相同的结果。否则,DCA 通过有效捕获 chunks 内和 chunks 之间 tokens 的相对位置信息来提升上下文性能。此外,还通过 YARN 来重新缩放注意力权重,以实现更好的长度外推。
- Paper:Training-Free Long-Context Scaling of Large Language Models
Abs:https://arxiv.org/abs/2402.17463 - Paper:YaRN: Efficient Context Window Extension of Large Language Models
Abs:https://arxiv.org/abs/2309.00071
3、激活函数 SwiGLU,位置编码 RoPE,QKV bias,RMSNorm,pre-norm。
Qwen2 Mixture-of-Experts Model
Qwen2 MoE 的架构和 Qwen1.5-MoE-A2.7B 非常相似。
MoE FFN 由 n 个单独的 FFN 组成,每个 FFN 是一个专家。输入的每个 token 被定向到特定的专家 Ei 来根据门控网络 G 分配的概率进行计算:
接下来,介绍 Qwen2 MoE 中重要的设计考虑。
- Expert Granularity
MoE 模型和 dense 模型间的关键结构差异在于 MoE 层有多个 FFN,每个 FFN 是一个独立的专家。因此,直接将每个专家的参数设置为原始 dense 模型中 FFN 的参数即可从 dense 架构过度到 MoE 架构。
Mistral-7B 到 Mixtral 8x7B 每次从 8 个专家中激活 2 个。而 Qwen2 MoE 采用细粒度专家,在创建小规模专家的同时激活更多数量的专家。给定相同数量的专家参数和激活参数,细粒度专家可以提供更丰富的专家组合。
通过利用这些细粒度专家,Qwen2 MoE 促进了更多样和动态的专家使用,从而提高了整体的性能和适配性。
- Expert Routing
专家路由机制的设计对提升 MoE 模型的性能至关重要。
近期,在 MoE 层内整合 shared 和 routing-specific 专家有着显著趋势。Qwen2 MoE 采用了这种方法,因为这样促进了 shared 专家在不同任务中的应用,同时保留了其他专家在特定路由场景中的选择性应用。shared 和 specialized 专家的引入为 MoE 路由机制提供了一种适应性更强、更有效的方案。
- Expert Initialization
Paper:Sparse Upcycling: Training Mixture-of-Experts from Dense Checkpoints
Abs:https://arxiv.org/abs/2212.05055
初始化专家的方式与 upcycling 相似,利用 dense 模型的权重。但 Qwen2 MoE 的方法强调细粒度专家之间的多样化。
给定指定细粒度专家的中间层大小 hE ,专家数量 n ,原始 FFN 中间层大小 hFFN ,则将 FFN 复制 ⌈hFFNn×hE⌉ 次。可以容纳任意数量的专家。
为了促进每个 FFN copy 的多样性,对参数沿着中间层纬度进行 shuffle。这保证了每个细粒度专家即使在不同的 FFN copy 中表现出独特的特征。
之后,从 FFN copies 中提取出细粒度专家,丢弃其余的维度。
对于每个细粒度专家,将 50% 的参数重新随机初始化。这个过程引入了额外的随机性,可能有助于增强模型在训练过程中的探索能力。
Model Configuration
5 个不同规模的模型:
- Qwen2-0.5B
- Qwen2-1.5B
- Qwen2-7B
- Qwen2-57B-A14B
- Qwen2-72B
Qwen2-57B-A14B 是从 Qwen2-7B 升级而来。
值得注意的是,与 Qwen1.5 相比,Qwen2 模型每个 token 的 Key-Value(KV)大小要低得多。这样可以减少内存占用,在长上下文推理中更有优势。
Pre-Training
对于 Qwen2 的预训练,重点是优化数据集并且探索上下文长度扩展的有效方法。
Pre-Training Data
一个新的、大规模、高质量的多语言数据集。
与之前的 Qwen 和 Qwen1.5 相比,在语料库上有所改进,增强了几个关键领域的数据规模、质量和多样性。
Quality Enhancement
通过额外的启发式算法和基于模型的方法对数据过滤算法进行改进,包括使用 Qwen 模型过滤出低质量的数据。此外,这些模型被用于合成高质量的预训练数据。
Data Expansion
与 Qwen1.5 相比,Qwen2 收集了大量高质量的代码、数学和多语言数据,增强了模型对应的能力。
新的数据集支持大约 30 种语言,例如英语、中文、西班牙语、法语、德语、阿拉伯语、俄语、韩语、日语、泰语和越南语。
Distribution Improvement
为了确保模型学习的分布类似于人类,对小模型进行了实验来优化不同来源和领域数据的混合。
基于此,预训练数据从 Qwen1.5 的 3T tokens 增加到了 7T tokens。进一步放宽阈值则有 12T tokens。
然而,在 12T tokens 数据集上训练的模型(0.5B)没有比 7T tokens 上的模型有显著的性能提升。可以怀疑数据量的增加不一定有益于模型的训练。
因此,考虑到成本,选择使用更高质量的 7T tokens 数据集来训练更大的模型。
所有的 Qwen2 dense 模型(不包括 Qwen2-0.5B)都是在 7T tokens 数据集上预训练的。Qwen-0.5B 在 12T tokens 数据集上预训练。MoE 模型根据 upcycling 原则额外经过了4.5T tokens 预训练。
与之前的 Qwen 模型类似,高质量的多任务 instruction 数据被整合到 Qwen2 的预训练之中,以提高模型的 ICL 和 instruction-following 能力。
Long-Context Training
为了增强 Qwen2 的长上下文能力,在预训练的结束阶段将上下文长度从 4096 tokens 增加到了 32768 tokens。这一扩展过程引入了大量高质量、更长的数据。同时将 RoPE 的基频从 10000 修改为 1000000,以优化长上下文场景中的性能。
为了充分利用模型的长度外推潜力,采用了 YARN 机制和 Dual Chunk Attention 机制。这些策略使模型可以处理多达 131072 tokens 序列,同时保持较高的性能。
Post-Training
在大规模预训练之后,对 Qwen2 进行了 post-training。这一过程对于提升模型在包括代码、数学、逻辑推理、指令遵循、多语言理解等领域的能力很重要。此外,这一过程也确保了模型生成的内容与人类价值观对齐,使模型 helpful、诚实、无害。
与严重依赖大量人工监督的传统方法不同,Qwen2 更侧重于可扩展的对齐,尽量减少人工标注。具体来说,研究了获取 SFT 和 RLHF 高质量数据的方法,旨在提升数据质量和可靠性的同时减少对人类标柱的需求。
Post-Training Data
数据主要由两部分组成:
- demonstration 数据 D={(xi,yi)}
- • 偏好数据 P={(xi,yi+,yi−)}
其中, xi 表示指令(instruction), yi 表示 response, yi+ 和 yi− 是 xi 的两个 response,但 yi+比yi− 更符合人类偏好。SFT 使用的数据集为 D ,RLHF 使用的数据集为 P 。
训练数据的构建包括两个步骤:协作式数据标注和自动化数据合成。
首先,从大规模的指令语料库中提取数据本体,从而得到一批广泛而多样的高质量指令。这些指令通过系统化增强来增加复杂性。通过人工标注,得到了 targetresponseyi 和正负例对 (yi+,yi−) 。
随后,许多自动化对齐策略被应用于大量合成代码、数学、指令遵循、创作、角色扮演、安全等领域的人工标注数据。
Collaborative Data Annotation
- •Automatic Ontology Extraction
Paper:InsTag: Instruction Tagging for Analyzing Supervised Fine-tuning of Large Language Models
Abs:https://arxiv.org/abs/2308.07074
首先应用一个开放式细粒度标注器 InsTag 来从大规模指令数据中提取出底层本体。后续进行手工优化确保提取的本体的准确性。
- Instruction Selection
Paper:How Abilities in Large Language Models are Affected by Supervised Fine-tuning Data Composition
Abs:https://arxiv.org/abs/2310.05492
每个带有 tag 标记的指令都会根据 tag 多样性、语义丰富行、复杂性、意图完整性进行评估。选择一组具有代表性的指令。
- Instruction Evolution
Paper:ChatGLM: A Family of Large Language Models from GLM-130B to GLM-4 All Tools
Abs:https://arxiv.org/abs/2406.12793
为了丰富指令数据集,采用了 self-evolution 策略来 prompt Qwen 模型向现有的指令添加约束或要求,从而增加指令的复杂度并确保数据集中难度分布的多样性。
- Human Annotation
使用不同的生成策略和不同规模的 Qwen 模型获得对指令的多个 responses。标注者根据他们的偏好对这些 responses 进行排序,确保最佳 response 符合要求,进而产生 demonstration 和偏好数据。
Automated Data Synthesis
保证指令 response 的标注质量是一个巨大的挑战,特别是那些需要专业知识、经验、细心或耐心的标注。因此,设计了多种自动对齐策略来大规模合成数据。
- Rejection Sampling
Paper:Scaling Relationship on Learning Mathematical Reasoning with Large Language Models
Abs:https://arxiv.org/abs/2308.01825
对于数学等带有明确最终答案的任务,采用拒绝采样来提升 solution 的质量。
LLM 被用来为每个指令生成多个推理路径 responses。保留可以得出准确结果并且被模型认为合理的推理路径,作为 demonstration 数据。通过对比正确和不正确的推理路径来获得偏好数据。
- Execution Feedback
对于代码任务,LLM 被用来生成解决方案和相关测试用例。通过根据测试用例编译和执行生成的解决方案来评估其有效性,从而得到 demonstration 和 偏好数据。
Paper:Self-play with Execution Feedback: Improving Instruction-following Capabilities of Large Language Models
Abs:https://arxiv.org/abs/2406.13542
这种方法也可以应用于评估指令遵循能力。对于有约束条件的指令,LLM 可以生成 Python 验证函数,确保 response 符合指令的要求。
- Data Repurposing
对于没有受过专业训练的标注人员来说,在文学写作任务中很难给出熟练的 response。为了解决这个问题,从公开领域收集高质量的文学作品,用 LLM 来给出带有不同程度的细节的指令。得到的指令和原始文学作品一起作为 demonstration 数据。
Paper:Large Language Models are Superpositions of All Characters: Attaining Arbitrary Role-play via Self-Alignment
Abs:https://arxiv.org/abs/2401.12474
例如,为了得到生动逼真的角色扮演 responses,从维基百科等知识库中获取详细的角色简介,然后指示 LLM 生成相应的指令和 responses。这个类似阅读理解任务的过程可以确保保持角色简介的完整性。
- Constitutional Feedback
Paper:Constitutional AI: Harmlessness from AI Feedback
Abs:https://arxiv.org/abs/2212.08073
Constitutional AI 指的是通过引导 LLM 来基于预定义的规则生成 responses 的过程。为了确保遵守安全和价值观等准则,编制了 constitution 数据集。数据集描述了 LLM 应该遵循和应该避免的原则,用于指示 LLM 做出与这些规则一致或者偏离的 responses,进而作为 demonstration 和偏好数据的参考。
Supervised Fine-Tuning
收集了一个大规模 SFT 数据集,包含了超过 50 万条数据,涵盖指令遵循、代码、数学、逻辑推理、角色扮演、多语言、安全等领域。
模型微调 2 个 epoch,序列长度 32768 tokens。学习率从 7×10−6 逐渐降低到 7×10−7 。
为了解决过拟合问题,应用了 0.1 的 weight decay,并进行上限为 1.0 的梯度裁剪。
Reinforcement Learning from Human Feedback
Paper:Direct Preference Optimization: Your Language Model is Secretly a Reward Model
Abs:https://arxiv.org/abs/2305.18290
Paper:Online Merging Optimizers for Boosting Rewards and Mitigating Tax in Alignment
Abs:https://arxiv.org/abs/2405.17931
RLHF 训练包括两个连续的阶段:offline 和 online 训练。
在 offline 训练阶段,使用预先准备好的偏好数据集 P 进行 DPO 训练。
在 online 训练阶段,模型利用奖励模型(Reward Model,RM) 实时地迭代式提升。具体来说,从当前的 policy 模型中采样多个 response,用 RM 来选择最佳和最差的 response 来形成每一段 DPO 训练的偏好 pair 数据。此外,还采用 Online Merging Optimizer 来缓解对齐税问题(模型与人类对齐过程中造成的性能下降)。
Evaluation
为了全面评估 Qwen2 Base 模型和 Instruct 模型,实施了一个全面评估协议。协议考差了包括一般知识理解、语言理解、生成、代码、数学、推理和其他专业领域等一系列能力。
具体来说,除非另有说明,用 LLM 通过 few-shot prompting 对 Base 模型进行 benchmark 评估。对于 Instruct 模型,除了 benchmark 评估外,还优先考虑人类偏好评估。
Base Language Models
Core Capabilities
只放 72B 和 7B 结果,更多更详细的结果见原始论文。
Instruction-Tuned Model
Open Benchmark Evaluation
In-House Automatic Evalution
Long Context Capabilities
Multilingual Evaluation
Safety & Responsebility
Conclusion
本技术报告介绍了 Qwen2 系列,一套多功能的 Base 和 Instruct 语言模型,参数从 0.5B 到 72B 不等,包括 dense 模型和 MoE 模型。
Qwen2 超越了之前的开源模型,在语言理解、生成、多语言能力、代码、数学、推理等广泛的 benchmark 评估中表现出了与闭源模型的竞争力。
在本次的 Qwen2 更新中,我们特别关注长上下文、多语言、代码、数学、安全和 responsibility。
为了促进社区的发展和开放,我们开源了 Qwen2 模型权重,使研究人员和开发人员能够在各种应用和研究项目中充分利用 Qwen2 的潜力。我们的目标是为 AI 技术的进步及其对社会的积极影响做出贡献。