Qwen2技术报告

【本文已在同名 微信公众号 / 知乎 / 个人博客linsight.cn 上线】


不久前Qwen2发布了4个dense模型和1个MoE模型,模型规模从0.5B到57B,实用效果都还不错。现在技术报告终于来了,来看下技术报告里披露了那些有用的信息。

模型

Qwen2的5个模型结构和训练token数如下表

tokenizer

Qwen2使用和Qwen1一样的tokenizer,压缩率比较好,也支持多语言。

词表包含151,643个常规token和3个control token。而在训练的时候,为了方便分布式训练,实际的vocab size设到了151936,多出来的部分实际是没有用到的。

dense model

  • 和之前的版本不同,Qwen2都使用了GQA而不是MHA。
  • SwiGLU、RoPE、RMSNorm + pre-norm和之前一样,属于常规设置。
  • 参考了苏神在《Bias项的神奇作用:RoPE + Bias = 更好的长度外推性》里的做法,在QKV加上bias以提升RoPE长度外推的能力。
  • 参考《Training-free long-context scaling of large language models》,实现了Dual Chunk Attention(DCA),并使用YaRN对attention weights进行rescale以获取更好的长度外推效果。

MoE model

Qwen2-57B-A14B使用了fine-grained expert和shared expert,都是已经证明效果比较好的做法。

Qwen2-57B-A14B是从Qwen2-7B初始化的,类似《Sparse upcycling: Training mixture-ofexperts from dense checkpoints》的做法,但是更加强调了在细粒度专家之间实现多样化。

假设专家大小为h_E, 专家数量为n,用于初始化MoE模型的原始FFN层大小为h_FFN,那么FFN层将被复制 ⌈n × h_E / h_FFN⌉ 次。这样可以确保和任意专家大小和专家数量兼容。

为了促进每个FFN copy内部的多样性,参数在intermeidate维度会做shuffle。这样使得后面得到的每个细粒度专家都能从不同特征初始化。

在这个基础上,每个细粒度专家内部有50%的参数会用随机初始化覆盖,只保留50%训练过的参数。这样可以增强模型在训练中探索的能力。

预训练

预训练数据

Qwen2预训练语料的处理包含了几个关键领域:
- Quality Enhancement:包括使用之前版本的Qwen模型来过滤掉低质量数据,和合成高质量的预训练数据。
- Data Expansion:相比Qwen1.5,Qwen2多收集很多代码数据、数学数据和囊括30种语言的多语言数据。
- Distribution Improvement:在小规模的数据上做了数据配比的实验,优化不同来源和领域的数据混合。

基于以上的工作,Qwen2最终得到了7T高质量数据。除了0.5B模型,其他dense模型都是在7T数据上训练,Qwen2-57B-A14B则是在4.5T数据上训练的。而在0.5B模型上,尝试使用了放松清洗阈值而得到的12T数据进行了训练,但是相比7T高质量数据,12T数据的训练并没有带来进一步的提升。

长上下文训练

在预训练的最后阶段,把训练窗口从4096提升到32,768以提升模型的长上下文能力。这个阶段使用了长度更长的文本。

除了数据的变化,RoPE的base也从10,000提升到1,000,000。再加上YaRN和Dual Chunk Attention,Qwen2模型可以在131,072长度的窗口上保持比较好的效果。

POST-TRAINING

Qwen2的对齐阶段包括SFT和RLHF。主要针对coding,mathematics,logical reasoning,instruction following 和 multilingual comprehension 提升效果。

数据

在数据的获取上,Qwen2的方法更多关注在“scalable alignment with minimal human annotation”(《Towards scalable automated alignment of LLMs: A survey》)。

构建数据的过程主要包括两个步骤,collaborative data annotation 和 automated data synthesis。

1、collaborative data annotation

  • 本体提取:借助InsTag(《#InsTag: Instruction tagging for analyzing supervised fine-tuning of large language models》)的tagger,再加上人工精炼保证本体提取的准确。
  • 指令选择:每条带有tag的指令都根据tag多样性、语义丰富性、复杂性和意图完整性进行了评估。基于这些标准选择有代表性的指令(《How abilities in large language models are affected by supervised fine-tuning data composition》)。
  • 指令进化:为了丰富指令数据集,采用了self-evolution策略(《Tree-Instruct: A preliminary study of the intrinsic relationship between complexity and alignment》),用Qwen模型对现有指令添加约束或要求,增加其复杂性,并确保数据集中难度级别的多样性。
  • 人类打标:使用不同的生成策略和不同规模的Qwen模型获取一条指令的多个response。标注者这些response进行排序,确保最佳response符合标准,最终得到demonstration和preference数据。

2、automated data synthesis

  • 拒绝采样:对于数学或类似的有明确最终答案的任务,应用了拒绝采样(《Scaling relationship on learning mathematical reasoning with large language models》)来提高solution的质量。LLM被用来为每条指令生成多个response。那些准确且被模型认为是合理的response就保留下来。通过对比正确和错误的response还可以获得偏好数据。
  • 执行反馈:对于编程任务,LLM被用来生成solution和相关测试用例。这些solution的有效性通过执行测试用例来评估。这种方法也适用于评估指令遵循情况(《Self-play with execution feedback: Improving instruction-following capabilities of large language models》)。比如对有长度限制的指令,LLM的任务是生成一个Python验证函数,以确保response的长度要求。
  • 数据再利用:对于没有专门训练的标注者来说,在文学写作任务中给出好的答案是很困难的。为了解决这个问题,收集了高质量的文学作品,并使用LLM开发不同详细程度的指令。这些指令与原作品配对,作为训练数据。比如为了获取角色扮演数据,先从知识库(如维基百科)中获取详细的角色资料,并指导LLM生成相应的指令和response(《Large language models are superpositions of all characters: Attaining arbitrary role-play via self-alignment》)。这个过程类似于阅读理解任务,确保了角色资料的完整性。
  • Constitutional Feedback:参考《Constitutional AI: Harmlessness from AI feedback》的做法,制定了response要遵循的规则和原则,用于知道模型生成合情合理合法合规的response。

SFT

  • 数量>500,000条样本上训练
  • 训练2个epoch
  • lr = 7e-6,最终decay到7e-7
  • weight decay = 0.1
  • gradient clip = 1.0
  • seq length = 32,768

RLHF

强化学习使用DPO,并参照《Online merging optimizers for boosting rewards and mitigating tax in alignment》,用Online Merging Optimizer以缓解alignment tax的影响。

评测

base模型

各个规模的base模型评测结果如下。

1、0.5B模型和1.5B模型

2、7B模型

3、32B模型和57B-A14B模型

INSTRUCTION-TUNED模型

各个规模的it模型评测结果如下。

1、0.5B模型和1.5B模型

2、7B模型

3、32B模型和57B-A14B模型

长窗口

Qwen2模型的长窗口能力在3个评测集上进行了评估。

1、the Needle in a Haystack

2、NeedleBench(OpenCompass)

(见下图)

3、LV-Eval

小结

  • Qwen2 MoE模型的初始化思路可以作为从dense模型upcycling的一个参考。
  • 预训练数据量来到10T token,这里12T训练数据没有更大收益的原因,除了数据质量外,猜测可能是0.5B模型本身容量有限导致。
  • 在数据配比上,报告没有给出太多信息,但这块很重要,各家应该有些压箱底信息没有舍得给出来。

读到这了,来一发点赞收藏关注吧~

博客:http://www.linsight.cn/
知乎:Linsight
微信公众号:Linsight


【往期文章】
MoE模型的前世今生
DeepSeek-V2和MLA
昆仑万维-SkyworkMoE
成本10w刀的JetMoE
MoE的top-p routing
对MoE模型的一些观察
从loss视角理解大模型涌现能力
LLM长上下文的问题
解锁大模型长上下文能力
大模型推理窗口-从有限到无限大
理解Attention:从起源到MHA,MQA和GQA
大模型推理加速-投机解码
大模型推理加速-MEDUSA
LLM的重复生成和ICL
大模型偏好对齐-DPO
大模型偏好对齐-ODPO
大模型偏好对齐-simPO
大模型偏好对齐-IPO
Yi技术报告-划重点看细节
MiniCPM
GLM4报告的一些技术点
Gemma2
苹果的OpenELM
从Yuan2.0到Yuan2.0-M32
bilibili的index-1.9B
transformer中normalization的二三事
从代码实现看normalization-到底做了什么
稀疏注意力计算:sliding window attention
理解LLM位置编码:RoPE
RoPE的远距离衰减
大模型算法题(1)
大模型算法题(2)
大模型算法题(3)
大模型算法题(4)
大模型算法题(5)
大模型算法题(6)
大模型算法题(7)


Reference

【1】QWEN2 TECHNICAL REPORT https://arxiv.org/abs/2407.10671