Qwen2 Technical Report
-
ArXiv URL: http://arxiv.org/abs/2407.10671v4
-
作者: Tianhang Zhu; Huan Lin; Zhi-Wei Fan; Kai Dang; Runji Lin; Binyuan Hui; Yang Yao; Baosong Yang; Jinzheng He; Xiaohuan Zhou; 等48人
-
发布机构: Alibaba Group
TL;DR
本文介绍了Qwen2系列大型语言模型,通过改进模型架构、扩大并优化多语言和代码数学预训练数据、采用可扩展的对齐技术,在0.5B到72B的多个尺寸上全面超越了现有开源模型,并在各项基准测试中展现出与顶尖闭源模型相当的竞争力。
关键定义
本文沿用了现有的大型语言模型基础概念,并通过引入或组合特定的技术来构建Qwen2系列。以下是对理解本文至关重要的几个核心技术:
-
分组查询注意力 (Grouped Query Attention, GQA): 一种注意力机制的变体。与传统的多头注意力(MHA)不同,GQA将查询头(Query heads)分组,每组共享一个键(Key)和值(Value)头。本文采用GQA旨在优化推理过程中的KV缓存占用,从而显著提升吞吐量。
-
双块注意力 (Dual Chunk Attention, DCA): 一种为处理长序列而设计的注意力机制。它将长序列分割成若干个固定长度的块(chunk),通过有效捕捉块内部及块之间的相对位置信息,来提升模型的长上下文处理性能。
-
细粒度专家 (Fine-grained Experts): 在本文的混合专家(MoE)模型中采用的一种设计策略。相比传统MoE模型(如Mixtral 8x7B),该策略使用规模更小但数量更多的专家,并在每次前向传播时激活更多的专家。这种设计提供了更丰富的专家组合可能性,旨在提升模型的整体性能和适应性。
-
可扩展对齐 (Scalable Alignment): 本文在后训练(Post-training)阶段的核心理念。该方法致力于以最少的人工标注,通过一系列自动化策略(如拒绝采样、执行反馈、数据再利用和宪法反馈)来大规模地生成高质量的指令微调(SFT)和偏好(Preference)数据,从而高效地使模型与人类偏好对齐。
相关工作
当前,大型语言模型(LLM)领域发展迅速,以GPT-4o、Claude-3 Opus为代表的闭源模型不断刷新性能顶峰,而以Llama-3为首的开源模型也在努力缩小与前者的差距,成为开源社区的事实标准(SOTA)。先前发布的Qwen和Qwen1.5系列已在社区中取得了一定影响力。
然而,现有模型仍面临关键挑战,包括:如何在保持模型开放性的前提下,持续提升在复杂推理(尤其是代码和数学)、多语言理解、长上下文处理等核心能力上的表现,以追赶甚至超越最先进的闭源模型。
本文旨在解决这一问题,具体目标是:发布新一代的开源模型系列Qwen2,通过在模型架构、训练数据和对齐技术上的全面革新,显著提升模型在各项核心能力上的表现,并提供从小型(0.5B)到大型(72B)的多种尺寸,以满足从端侧设备到云端服务器的不同部署需求。
本文方法
Qwen2是一个基于Transformer架构的大语言模型系列,通过下一词元(next-token)预测任务进行训练。该系列涵盖了从0.5B到72B参数的密集模型(Dense Model)和57B参数的混合专家模型(MoE Model)。
模型架构
Tokenizer
Qwen2沿用了与Qwen1.5相同的Tokenizer,它基于字节级字节对编码(byte-level BPE),拥有151,643个常规词元和3个控制词元。该Tokenizer具有很高的编码效率,特别适合Qwen2的多语言任务。
Qwen2密集模型
Qwen2密集模型的架构在标准Transformer的基础上进行了几项关键改进:
- 分组查询注意力 (GQA): 采用GQA代替传统的多头注意力,以减少推理时KV缓存的内存占用,提高吞吐量。
- 长上下文支持: 为了扩展模型的上下文窗口,本文结合了两种技术:
- 双块注意力 (Dual Chunk Attention, DCA):将长序列切分为小块进行处理,有效捕捉块内和块间的相对位置信息。
- YARN: 一种通过重新缩放(rescale)注意力权重来改善模型长度外推(length extrapolation)能力的方法。
- 标准组件: 同样采用了SwiGLU激活函数、旋转位置编码 (RoPE)、QKV偏置、RMSNorm层归一化以及预归一化(pre-normalization)等成熟技术以保证训练稳定性。
Qwen2混合专家模型 (MoE)
Qwen2的MoE模型架构在Qwen1.5-MoE的基础上进行了优化,其核心是将Transformer层中的前馈神经网络(FFN)替换为MoE FFN层。
\[\mathbf{p} = \mathrm{softmax}(G(\mathbf{x}))\] \[\mathbf{y} = \sum_{i \in \text{top}_{k}(\mathbf{p})} \mathbf{p}_{i} E_{i}(\mathbf{x})\]其中,$G$是门控网络,$E_i$是第$i$个专家。其关键设计包括:
- 创新点1:细粒度专家: Qwen2-MoE模型采用了“细粒度专家”设计。与Mixtral 8x7B(激活8个专家中的2个)不同,Qwen2-57B-A14B拥有64个路由专家和8个共享专家,每次前向传播会激活8个路由专家。这种设计在总参数和激活参数相似的情况下,提供了更多样化、更动态的专家组合,提升了模型的性能和适应性。
- 创新点2:专家路由与初始化:
- 路由: 采用了共享专家和路由专家相结合的策略,共享专家处理通用任务,路由专家则根据特定输入被选择性激活。
- 初始化: 受到“Upcycling”的启发,但更强调多样化。首先,通过复制和参数混洗(shuffle)一个预训练好的密集模型的FFN层来生成多个不同的FFN副本;然后,从这些副本中提取“细粒度”专家;最后,对每个专家50%的参数进行随机重新初始化,以增加训练初期的探索能力。
模型配置
Qwen2系列包含五个尺寸,其关键配置如下表所示。值得注意的是,Qwen2模型的KV缓存大小相较于Qwen1.5显著减小,这在长上下文推理中非常有优势。
| 配置 | 0.5B | 1.5B | 7B | 72B | 57B-A14B (MoE) |
|---|---|---|---|---|---|
| 隐藏层大小 | 896 | 1,536 | 3,584 | 8,192 | 3,584 |
| 层数 | 24 | 28 | 28 | 80 | 28 |
| 查询头数量 | 14 | 12 | 28 | 64 | 28 |
| KV头数量 | 2 | 2 | 4 | 8 | 4 |
| 头大小 | 64 | 128 | 128 | 128 | 128 |
| 中间层大小 | 4,864 | 8,960 | 18,944 | 29,568 | 2,560 (每个专家) |
| 路由专家数 | - | - | - | - | 64 |
| 激活专家数 | - | - | - | - | 8 |
| 共享专家数 | - | - | - | - | 8 |
| 词表大小 | 151,646 | 151,646 | 151,646 | 151,646 | 151,646 |
| 训练Token数 | 12T | 7T | 7T | 7T | 4.5T (额外) |
预训练
- 预训练数据:
- 质量与规模: 预训练数据从Qwen1.5的3T tokens扩展至7T tokens。本文通过实验发现,盲目增加数据量(如扩展到12T tokens)并不能带来显著性能提升,因此最终选择质量更高的7T tokens数据集。
- 数据优化: 改进了数据过滤算法,并利用Qwen模型自身来过滤低质量数据及合成高质量数据。
- 领域扩展: 大幅增加了高质量的代码、数学和多语言数据(支持约30种语言)。
- 数据混合: 通过在小模型上实验,优化了来自不同来源和领域的数据混合比例。
- 长上下文训练:
- 在预训练的后期,将上下文长度从4,096扩展到32,768。
- 引入了大量高质量的长文本数据。
- 将RoPE的基础频率从10,000调整到1,000,000以优化长上下文场景下的性能。
后训练
后训练阶段旨在以“可扩展对齐”的理念,用最少的人工实现模型与人类价值观的对齐。
- 后训练数据:
- 协同数据标注:
- 使用\(InsTag\)工具从大规模指令语料中自动提取数据本体(ontology)。
- 通过多样性、语义丰富度等标准筛选出代表性指令。
- 通过自进化策略(self-evolution)增加指令的复杂性。
- 人工对模型生成的多个回复进行排序,产出高质量的SFT数据和偏好数据。
- 自动化数据合成:
- 拒绝采样: 对于数学等有确定答案的任务,让模型生成多个解题路径,保留最终答案正确且路径合理的作为高质量数据。
- 执行反馈: 对于代码任务,模型生成代码和测试用例,通过实际编译执行来验证代码正确性,并以此生成训练数据。
- 数据再利用: 对公开领域的高质量文本(如文学作品、维基百科角色介绍),让模型反向生成对应的指令,构成高质量的“指令-回复”对。
- 宪法反馈: 编译一份包含应遵守和应避免的原则的“宪法”,指导模型生成符合或违背这些原则的回复,以此构建偏好数据。
- 协同数据标注:
- SFT与RLHF:
- SFT: 在超过50万条高质量指令数据上进行微调,序列长度为32,768。
- RLHF: 采用两阶段训练。首先进行离线直接偏好优化(Direct Preference Optimization, DPO);然后进入在线阶段,模型迭代地生成回复,由奖励模型筛选出最优和最差回复构成新的偏好对,继续进行DPO训练。同时使用Online Merging Optimizer来减轻轻量对齐带来的性能损失(即“对齐税”)。
实验结论
基础模型评估
Qwen2基础模型在各个尺寸上均优于同级别的开源模型。
- Qwen2-72B: 在MMLU、MMLU-Pro(知识)、HumanEval、MATH(代码与数学)、C-Eval(中文)等多个核心基准上全面超越Llama-3-70B和Mixtral-8x22B等模型。特别是在代码和数学能力上,相比Qwen1.5-72B有巨大提升(HumanEval +18.3%,MATH +17.0%)。
- Qwen2-57B-A14B (MoE): 仅激活14B参数,其性能便可与30B级别的密集模型(如Yi-1.5-34B)相媲美,在代码和数学任务上甚至表现更优,证明了其细粒度专家设计的有效性和高效率。
- Qwen2-7B: 在7B级别中表现出色,在大多数评测项上优于Llama-3-8B等先进模型,尤其是在代码、数学和中文能力上优势明显。
- Qwen2-1.5B & 0.5B: 即使是小模型,Qwen2-1.5B也在语言理解和数学方面超过了Phi-2等专门优化的模型,验证了高质量数据对小模型性能提升的有效性。
| 70B+基础模型性能对比 | Mixtral-8x22B | Llama-3-70B | Qwen1.5-72B | Qwen2-72B |
|---|---|---|---|---|
| MMLU (知识) | 77.8 | 79.5 | 77.5 | 84.2 |
| HumanEval (代码) | 46.3 | 48.2 | 46.3 | 64.6 |
| GSM8K (数学) | 83.7 | 83.0 | 79.5 | 89.5 |
| MATH (数学) | 41.7 | 42.5 | 34.1 | 51.1 |
| C-Eval (中文) | 54.6 | 65.2 | 84.1 | 91.0 |
指令微调模型评估
Qwen2的指令微调模型(Instruct系列)同样表现优异,其强大的能力很大程度上受益于其出色的基础模型。
- Qwen2-72B-Instruct: 在知识理解(MMLU-Pro)、代码(LiveCodeBench)、数学(MATH)以及对齐(MT-Bench, Arena-Hard)等多个方面显著优于Llama-3-70B-Instruct等同级模型。
- Qwen2-7B-Instruct: 与Llama-3-8B-Instruct相比具有竞争力,在代码和数学上表现更强。但报告也指出,在指令遵循(IFEval)方面,Qwen2-7B-Instruct落后于对手,这是未来需要改进的方向。
- 小型指令模型: Qwen2的0.5B和1.5B指令微调模型相比Qwen1.5的同尺寸模型,在代码、数学和指令遵循能力上均取得了巨大飞跃。
| 70B+指令微调模型性能对比 | Mixtral-8x22B | Llama-3-70B | Qwen1.5-72B | Qwen2-72B |
|---|---|---|---|---|
| MMLU-Pro (知识) | 56.1 | 56.2 | 51.7 | 64.4 |
| LiveCodeBench v1 (代码) | 21.8 | 29.3 | 17.9 | 35.7 |
| MATH (数学) | 47.4 | 50.4 | 42.5 | 69.0 |
| MT-Bench (对齐) | 8.66 | 8.95 | 8.61 | 9.12 |
| Arena-Hard (对齐) | 36.4 | 41.1 | 36.1 | 48.1 |
最终结论
Qwen2系列模型是开源社区的一项重大进展。通过在预训练数据质量和广度、模型架构(如GQA、DCA、细粒度MoE)以及后训练对齐技术(可扩展对齐)上的系统性创新,Qwen2在不同尺寸上均达到了SOTA水平,特别是在代码、数学和多语言能力方面表现突出。实验结果证明,一个强大的基础模型是构建顶级指令微调模型的关键,并且,专注于数据质量和可扩展的自动化对齐方法是提升模型能力的高效路径。