在Qwen2技术报告中,详细描述了其训练流程和相关技术方法,涉及预训练、长上下文处理、后训练(微调和人类反馈强化学习)以及评估等方面。以下是对Qwen2训练流程和技术方法的更详细解释:
1. 预训练阶段(Pre-training)
预训练是Qwen2模型开发的关键阶段,涵盖了大规模多语言数据的使用、上下文处理能力的增强,以及新颖架构的使用。
1.1 预训练数据(Pre-training Data)
- 数据规模:Qwen2在一个包含 7万亿tokens 的高质量多语言数据集上进行了预训练。与Qwen1.5相比,Qwen2在代码、数学、多语言数据方面显著扩展,支持约30种语言,如英语、中文、西班牙语、法语、德语、阿拉伯语、韩语、日语等。
- 数据过滤:为了确保数据质量,Qwen2 使用启发式和模型驱动的算法过滤低质量数据,并通过现有Qwen模型生成高质量合成训练数据。通过这两类方法的结合,模型能够更好地理解和生成复杂的多语言文本。
1.2 长上下文训练(Long-context Training)
- Qwen2通过使用 Dual Chunk Attention(DCA) 和 YARN 机制将上下文长度从 4096 tokens 扩展至 32768 tokens,在模型的预训练后期引入了大量的长文本数据。这些机制使得模型能够有效处理长文本,确保处理长达131,072 tokens的文本时仍能保持高性能。
1.3 模型架构(Model Architecture)
Qwen2的架构包括稠密模型和 专家混合模型(MoE),它们各自优化了不同规模和任务下的计算效率与性能:
- 稠密模型:Qwen2 的稠密模型通过 Grouped Query Attention(GQA) 代替传统的多头注意力机制,优化了推理中的 KV 缓存使用,显著提高了吞吐量。
- MoE模型:Qwen2 的 MoE 模型采用了专家混合网络,每个token只激活部分专家,这不仅提高了计算效率,还保留了模型的高性能。Qwen2-57B-A14B MoE模型具有57亿参数,但每次只激活其中的14亿,用于处理特定任务。
2. 后训练阶段(Post-training)
在大规模预训练之后,Qwen2进入后训练阶段,进一步优化其在指令跟随、编码、推理、多语言处理等方面的表现。
2.1 微调(Supervised Fine-Tuning, SFT)
微调阶段使用了超过50万条样例,涵盖了编程、数学、逻辑推理等多项任务。通过精心设计的任务指令和人类标注数据,模型学会如何遵循指令生成符合预期的输出。