技术报告:https//arxiv.org/abs/2412.15115 Github 代码:https//github.com/QwenLM/Qwen2.5
0 Abstract
Qwen2.5 一系列全面的 LLMs,旨在满足各种需求。
与之前的版本相比,Qwen2.5 在预训练(Pretrain)和后训练(SFT、RLHF)阶段都有显著改进。
预训练数据从 7T tokens 扩展为 18T tokens,为常识、专业知识、推理能力提供了坚实的基础。
后训练阶段包括在超过 1M 数据上进行的 SFT 和多阶段 RL——offline DPO 和 onine GRPO。后训练显著增强了人类偏好,改善了长文本生成、结构数据分析和指令跟踪能力。
开源了各个规模的 Base 和 Instruct 模型,包括 0.5B、1.5B、3B、7B、14B、32B、72B,以及量化版本。闭源模型目前包括两个 MoE 变体:Qwen2.5-Turbo 和 Qwen2.5-Plus。
Qwen2.5 在语言理解、推理、数学、代码、人类偏好对齐等广泛 benchmark 上展现了顶级性能。Qwen2.5-72B-Istruct 优于许多其他开源和闭源模型。Qwen2.5-Turbo 和 Qwen2.5-Plus 的成本也与 GPT-4o-mini 和 GPT-4o 相比具有竞争力。
Qwen2.5 在支持训练领域专家模型的训练中发挥了重要作用,包括 Qwen2.5-Math、Qwen2.5-Coder、QwQ 和多模态模型。
1 Introduction
Qwen 的几个关键特征:
-
• Better in Size: 相比上一代 Qwen2,新增了 3B、14B、32B 模型。Qwen2.5-Turbo 和 Qwen2.5-Plus 在准确率、延迟、成本之间提供了很好的平衡。
-
• Better in Data: 预训练数据增加到了 18T tokens,关注知识、代码、数学。分阶段进行预训练以允许不同数据混合之间的过渡。后训练数据超过 1M 样本,涵盖 SFT、DPO、GRPO。
-
• Better in Use: 相比上一代,生成长度从 2K 提升至 8K。更好地支持结构化输入和输出(如表格和 json)。更易于使用工具。此外,Qwen2.5-Turbo 支持 1M 的上下文长度。
2 Architecture & Tokenizer
对于 Dense 模型,保持 Transformer-based Decoder 架构。
关键组件:用于高效 KV cache 的 GQA、SwiGLU 激活函数、RoPE 位置编码、注意力机制中 QKV bias、RMSNorm 归一化。
GQA:https://arxiv.org/abs/2305.13245 SwiGLU:https://arxiv.org/abs/1612.08083 RoPE:https://arxiv.org/abs/2104.09864 QKV bias:https://spaces.ac.cn/archives/9577 RMSNorm:https://arxiv.org/abs/2305.14858
在 Dense 模型架构的基础上,通过用 MoE 层替换标准 FFN 层来扩展到 MoE 架构。与 Qwen1.5-MoE 相同,进行细粒度专家划分(Fine-Grained Expert Segmentation)和共享专家路由(Shared Experts Routing)。提供了下游任务中模型性能的实质提升。
Fine-Grained Expert Segmentation:https://arxiv.org/abs/2401.06066 Shared Experts Routing : https://proceedings.mlr.press/v162/rajbhandari22a/rajbhandari22a.pdf https://arxiv.org/abs/2401.06066
Tokenizer 为 byte-level BPE 编码的 Qwen’s tokenizer,词表大小 151,643。与之前版本相比,control tokens 的数量从 3 增加到 22,加入了 2 个用于工具调用的新 token。
3 Pre-training
预训练阶段由多个关键部分组成:
-
通过复杂的过滤和打分机制,结合数据混合策略,仔细收集高质量 pretrain 数据。
-
对超参数进行了大量研究,以有效进行各个规模模型的训练。
-
加入专门的长上下文 pretrain 来增强模型对长文的能力。
3.1 Pre-training Data
与上一代相比,Qwen2.5 预训练数据质量的提升:
-
Better data filtering: 数据质量评估和过滤是 pipeline 的关键部分。使用 Qwen2-Instruct 作为过滤器,对数据进行全面、多维度地评估和打分。由于 Qwen2 在更大的多语言语料库上进行了训练,因此过滤相比 Qwen2 有了显著提升,提高了高质量数据的保留,有效过滤了跨多个语言的低质数据。
-
Better math and code data: 结合了 Qwen2.5-Math 和 Qwen2.5-Coder 的训练数据。这种数据集成策略被证明非常有效。
-
Better synthetic data: 同时使用 Qwen2-72B-Instruct 和 Qwen2-Math-72B-Instruct 进行高质量和成数据生成。通过专有的通用 RM 和 Qwen2-Math-RM-72B 进行严格过滤。
-
Better data mixture: 使用 Qwen2-Instruct 对不同领域的内容进行分类和平衡。分析显示,电商、社交媒体、娱乐等领域数据过多,这些数据通常包含重复、基于模版、机器生成等内容。相反,科技、学术研究等领域数据虽然包含更高质量信息,但是占比较低。通下采样和上采样,进行更优的数据混合。
通过这些方法,得到了更大更高质量的 18T 数据集。
3.2 Scaling Law for Hyper-parameters
基于预训练数据进行超参数 scaling law 研究。在先前的给定计算资源下的最优模型规模的 scaling law 的基础上,进行跨模型架构的最优超参数识别。对于不同大小的 Dense 模型和 MoE 模型来确定 batch size 和 学习率等关键超参数。
通过大量实验系统研究了模型架构与最优超参数之间的关系。分析了最优学习率 和 如何随着模型规模 和预训练数据规模 的变化而变化。实验包括 44M 到 14B 规模的 Dense 模型以及 44M 到 1B 规模的 MoE 模型,从 0.8B 到 600B tokens 数据集上训练。利用最优超参数预测,将最终的 loss 建模为模型架构和训练数据规模的函数。
此外,利用 scaling law 来预测和比较不同规模 MoE 模型及其 Dense 模型的表现,指导 MoE 模型的超参数配置,使得能够通过调整 activated 参数和总参数来实现与特定 Dense 模型变体(如 Qwen2.5-72B 和 Qwen2.5-14B)的性能等价。
3.3 Long-context Pre-training
两阶段训练方法:
初始阶段,4096 上下文长度。之后,在预训练的最后阶段扩展到 32768 上下文长度(除了 Qwen2.5-Turbo)。同时,利用 ABF 技术将 RoPE 的基频从 10,000 提高到 1,000,000。
ABF:https://arxiv.org/abs/2309.16039
对于 Qwen2.5-Turbo,进行 4 个阶段的渐进上下文长度扩展策略:32,768、65,536、131,072、262,144。RoPE 基频为 1,000,000。在每个阶段,仔细调整训练数据来涵盖 40% 序列满足当前最大长度,60% 为更短的序列。
采用 YARN 和 Dual Chunk Attention(DCA) 来增强模型在推理过程中处理长序列的能力。通过这些创新,实现了模序列长度容量的 4 倍增长,Qwen2.5-Turbo 能够处理 1M tokens,其他模型能够处理 131,072 tokens。
YARN:https://arxiv.org/abs/2309.00071 DCA:https://arxiv.org/abs/2402.17463
4 Post-training
与 Qwen2 相比,Qwen2.5 在后训练设计上有两个改进:
(1)Expanded Supervised Fine-tuning Data Coverage
利用了百万级别的高质量 SFT 数据,数据扩展专门针对先前模型的不足领域,如长序列生成、数学问题、代码、指令跟随、结构化数据理解、逻辑推理、跨语言迁移、鲁棒的系统指令。
(2)Two-stage Reinforcement Learning
Qwen2.5 的 RL 过程分为两个阶段:Offline RL 和 Online RL。
-
Offline RL:这一阶段关注 RM 较难评估的能力的开发,如推理、事实、指令跟随。通过精心构造和验证训练数据,确保 Offline RL 信号既是可学习的又是可靠的。
-
Online RL:这一阶段利用 RM 检测输出质量细微差别的能力,包括 truthfulness、helpfulness、简明性、相关性、无害性、无偏性。
4.1 Supervised Fine-tuning
(1) Long-sequence Generation
Qwen2.5 输出上下文长度高达 8,192 tokens。开发了 long-response 数据集。利用回译(back-translation)技术来从预训练语料中生成长文本 query 数据,施加输出长度约束,并使用 Qwen2 过滤低质量的数据。
(2) Mathematics
引入了 Qwen2.5-Math 的 CoT 数据,数据源包括公共数据集、K-12 问题集和合成问题数据。
为了保证高质量的推理,采用结合 RM 和带 annotated answers 指导的拒绝采样策略,产生 step-by-step 推理过程。
(3) Coding
加入了 Qwen2.5-Coder 的指令微调数据。将多个特定语言的 Agents 集成到一个协作框架中,在近 40 种编程语言中生成多样且高质量的指令 pairs。
通过从代码相关的 Q&A 网站合成新数据以及从 Github 收集代码片段来扩展指令数据集。
使用一个全面的多语言沙盒进行自动化单元测试、静态代码检查、代码片段验证,确保代码质量和正确性。
(4) Instruction-following
实现了一个严格的基于代码的验证框架。LLMs 来生成指令和验证代码,以及用于交叉验证的全面单元测试。通过基于执行反馈的拒绝采样进行数据选择。
(5) Structured Data Unserstanding
开发了一个全面的结构化理解数据集。包括表格 QA、事实验证、纠错、结构化理解等传统任务,也包括设计结构化和半结构化理解的复杂任务。
通过将推理链融入 response,增强了模型从结构化数据中推断信息的能力。
(6) Logical Reasoning
引入了一组跨越不同领域的 70,000 个新 queries。包括选择题、true/false 问题、开放问题,训练模型的一系列推理方法。通过迭代式精调,系统地筛选出包含错误答案或者有缺陷推理过程的数据。
(7) Cross-Lingual Transfer
采用翻译模型将指令从高资源语言转化为各种低资源语言,生成相应的 response 候选。
为了确保这些 response 的准确性和一致性,评估了每个多语言 response 和原始 response 的语义对齐。
(8) Robust System Instruction
构建了几百个通用 system prompts 来提升多样性。使用不同 system prompt 进行评估表行,模型保持了良好的性能,降低了方差,提升了鲁棒性。
(9) Response Filtering
采用包括专用的 critic 模型和 multi-agent 协作评分系统在内的多种自动化标注方法来评估 response 的质量。保留经过所有评估系统都认为完美无缺的 response。
最终,构建了一个包含超过 1M 数据的 SFT 数据集。在 32,768 序列长度下微调了 2 个 epochs。学习率从 逐渐降低到 。为了解决过拟合问题,应用了 0.1 的 weight decay 并进行最大值为 1.0 的梯度裁剪。
4.2 Offline Reinforcement Learning
与 Online RL 相比,Offline RL 能够预先准备训练数据,适用于存在标准答案单但 RM 难以评估的任务。
这里主要关注客观 query 领域,比如数学、代码、指令遵循、逻辑推理,在这些领域获得准确的 evaluation 可能很复杂。
在 SFT 中,大规模应用执行反馈和答案匹配等策略来确保 response 的质量。在 Offline RL 阶段重用这一 pipeline,使用 SFT 模型对一组新的 query 进行重新采样。
在 DPO 中,通过质量检查的 response 为正例,未通过的为负例。通过人工和自动检查过程来进一步提高训练数据的可靠性和准确性,同时确保数据不仅是可学习的,也符合人类的期望。
最终,构建了规模约为 150,000 pairs 的训练数据。用 Online Merging Optimizer 训练了 1 个 epoch,学习率为 。
Online Merging Optimizer:https://arxiv.org/abs/2405.17931
4.3 Online Reinforcement Learning
为了开发一个用于 Online RL 的强大 RM,采用了一套精心制定的标注标准。这套标准确保模型生成的 response 不仅是高质量的,而且符合道德并且以用户为中心。
数据标注具体标准如下:
-
Truthfulness:responses 必须以事实准确性为基础,真实的反应提供的背景和指令。模型应避免生成错误或给出数据不支持的信息。
-
Helpfulness:模型的输出应该是真正有用的,有效地解决用户的查询,同时提供积极、吸引人、有教育意义和相关的内容。它应该精确地遵循给定的说明,为用户提供价值。
-
Conciseness:response 应简明扼要,避免不必要的冗长。目标是清晰有效地传达信息,而不会用过多的细节压倒用户。
-
Relevance:response 的所有部分都应该与用户的查询、对话历史和助手的上下文直接相关。模型应调整其输出,以确保其完全符合用户的需求和期望。
-
Harmlessness:模型必须优先考虑用户安全,避免任何可能导致非法、不道德或有害行为的内容。它应该始终促进道德行为和负责任的沟通。
-
Debiasing:模型应产生无偏见的 response,包括但不限于性别、种族、国籍和政治。它应该平等、公平地对待所有话题,遵守广泛接受的道德和伦理标准。
用于训练 RM 的 query 来自两个不同的数据集:开源数据和具有更高复杂性的专有数据。
response 是由 Qwen 模型的 ckpts 生成的,这些 ckpts 来自 SFT、DPO、RL 等不同阶段的训练。
为了引入多样性,用不同 temperature 进行采样。
偏好 pairs 是由人工和自动化标注过程构建的,DPO 训练数据也囊括到 RM 数据中。
Online RL 框架采用了 GRPO。
用于训练 RM 的 query 集和 RL 训练的 query 集是相同的。
query 的训练顺序由其 response RM 得分的方差决定。response 方差较大的 query 先被训练。对每个 query 采样 8 个 responses。
所有的模型每个 episode 在 2048 global batch size 和 2048 samples(一对 query-response 为一个 sample) 下训练。
4.4 Long Context Fine-tuning
为了进一步扩展 Qwen2.5-Turbo 的上下文长度,在后训练期间引入了更长的 SFT 数据,使得模型在长 query 下与人类偏好保持一致。
两阶段 SFT:
-
第一阶段,短指令微调,每个指令最多 32,768 tokens。
-
第二阶段,结合短指令(最多 32,768 tokens)和长指令(最多 262,144 tokens)。
在 RL 阶段,使用类似其他 Qwen2.5 模型的训练策略,只关注短指令。这种设计有两个主要原因。首先, RL 训练对于长下文来说成本很高;其次,目前缺乏能为长下文任务提供合适奖励信号的 RM。此外,仅在短指令上进行 RL 仍然可以显著增强模型与人类在长下文任务上的偏好一致性。
5 Evaluation
全面的评估组件,包括常见的公开 benchmarks 和 skill-oriented 内部数据集。评估主要是自动化,尽可能少的人类交互。
为了防止数据泄露,在构建预训练和后训练数据时用 n-gram 匹配来排除潜在的污染数据。对于一个训练数据 ,如果存在一个测试数据 使得最长公共子序列(LCS)同时满足 和 ,则删除这条数据。
模型性能只展示部分表格,详见原文。
5.1 Base Models
5.2 Instruction-tuned Model
5.2.1 Open Benchmark Evaluation
5.2.2 In-house Automatic Evaluation
5.2.3 Reward Model
5.2.4 Long Context Capabilities
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。