Qwen 模型学习笔记:RM、SFT 与 RLHF 技术解析
一、Qwen 模型概述
Qwen 是阿里巴巴开源的大型语言模型系列,旨在实现通用人工智能(AGI)。其架构包括基础语言模型(如 Qwen-7B、Qwen-14B、Qwen-72B)和经过后训练的对话模型(如 Qwen-Chat)。后训练主要通过 SFT 和 RLHF 技术进行,以提升模型的对齐性和实用性。
二、SFT(Supervised Fine-Tuning)有监督微调
1. 定义与目的
SFT 是在预训练模型的基础上,利用人工标注的数据集进行微调,使模型更好地理解和执行特定任务或指令。
2. 数据构建与训练策略
数据格式:采用 ChatML 格式,区分系统提示、用户输入和助手输出。
训练策略:使用 AdamW 优化器,学习率先增后恒定,序列长度限制在 2048,训练步数约 4000 步。
目标:使模型能够生成符合人类指令的回答,并具备一定的上下文理解能力。
3. 技术实现
Qwen 使用 MS-SWIFT 框架进行 SFT,支持 LoRA 等参数高效微调技术,兼容多种硬件平台,如 RTX、A100、Ascend NPU 等。
三、RM(Reward Model)奖励模型
1. 定义与作用
RM 是在 SFT 模型的基础上,通过人工标注的答案排名数据,训练一个模型来评估回答的质量,为后续的强化学习提供奖励信号。
2. 架构与训练
模型架构:去除 SFT 模型最后一层的 softmax,改为线性层,输入为问题和答案对,输出为一个标量分数。
训练数据:人工对多个答案进行排序,构成训练数据集。
损失函数:采用 Pairwise Ranking Loss,优化模型的评分能力。
3. 应用与效果
RM 模型能够有效地评估答案的质量,为 RLHF 提供可靠的奖励信号,提升模型生成内容的相关性和准确性。
四、RLHF(Reinforcement Learning from Human Feedback)基于人类反馈的强化学习
1. 定义与目的
RLHF 是通过人类反馈来优化模型的生成策略,使其生成的内容更符合人类的偏好和需求。
2. 训练流程
阶段一:使用 SFT 模型生成多个候选答案。
阶段二:利用 RM 对候选答案进行评分。
阶段三:根据评分结果,使用强化学习算法(如 PPO 或 DPO)调整模型参数,使其生成更优质的答案。
3. 技术实现
Qwen 在 RLHF 阶段,采用了 PPO(Proximal Policy Optimization)算法进行训练,优化模型的生成策略,提升其在对话中的表现。
Qwen2 模型学习笔记:
一、引言
在大语言模型蓬勃发展的当下,Qwen 系列持续迭代更新,Qwen2 由此诞生。它基于 Transformer 架构,经过大规模预训练和优化,致力于提升语言理解、生成、多语言处理等多方面能力,推动 LLMs 技术进步。
二、分词器与模型架构
(一)分词器
Qwen2 沿用字节级字节对编码分词器,词汇表含 151,643 个常规词元与 3 个控制词元。该分词器把文本拆分成小片段即 “词元”,编码效率高,在多语言处理上优势明显,能高效拆分和编码多种语言文本。
具体实现
初始化词汇表:收集文本数据集中的字节序列构建初始词汇表。
统计字节对频率:遍历训练文本数据集,统计相邻字节对的出现频率。
合并高频字节对:将最高频的字节对合并为新词元,更新词汇表。
重复合并过程:持续统计和合并,直至达到预设词汇表大小或满足停止条件。
文本编码:按字节划分文本,依据词汇表替换为词元,特殊策略处理未知序列。
(二)模型架构
1. 密集模型
密集模型参数密集连接,采用分组查询注意力(GQA)优化推理,通过分组查询共享键和值计算,降低计算成本提升推理速度。结合双块注意力(DCA)与 YARN,扩展上下文窗口,增强长文本处理能力。
分组查询注意力(GQA):优化传统多头注意力,减少键值计算重复。
双块注意力(DCA)与 YARN:DCA 划分序列块,YARN 改进循环神经网络,协同扩展上下文窗口。
机制细节
GQA 将查询分组,组内共享键值计算,在推理阶段减少重复运算,提升效率。
DCA 将输入序列划分成多个块,块内和块间分别进行注意力计算,降低长序列计算复杂度。
YARN 结合 DCA,使模型在不显著增加计算成本的情况下扩展上下文窗口长度,提升长文本处理能力。
2. 混合专家模型(MoE)
以多个 FFN 为专家,细粒度设计、合理路由及初始化策略,增强模型性能与适应性。
FFN 专家:多个前馈神经网络作专家,各擅长不同类型信息处理。
细粒度专家设计:针对特定任务或数据特征设计专家,发挥专长。
合理专家路由:智能调度任务至合适专家,提高效率和准确性。
初始化策略:合理初始参数设置,助力模型快速收敛。
专家训练机制
数据准备:收集大规模相关数据,分为训练集、验证集和测试集。
初始化 FFN 专家:采用随机初始化或基于预训练模型的初始化。
定义损失函数:根据任务类型选择合适的损失函数,如分类任务用交叉熵损失函数,回归任务用均方误差损失函数。
前向传播:输入数据按 FFN 网络结构依次计算。
计算损失和反向传播:根据预测结果和真实标签计算损失,通过反向传播更新参数。
专家路由机制参与训练:路由机制根据输入特征学习分配输入至合适的 FFN 专家,引入可学习参数并根据反馈调整。
迭代训练:重复前向传播、计算损失和反向传播步骤,优化模型性能。
模型评估与调整:使用测试集评估性能,分析原因并调整模型,直至达到满意性能。
专家掌握不同知识的原因
细粒度专家设计:不同专家专注于特定任务或数据特征。
数据分布差异:专家接触到的数据子集存在差异,学习到不同的特征和模式。
随机初始化差异:初始参数不同导致学习路径不同。
专家路由机制引导:路由机制将特定特征数据分配给特定专家,使其更擅长处理这类数据。
模型结构和参数差异:独立的参数更新使专家对数据的表示和理解产生差异。
(三)模型配置
涵盖 5 种规模模型,Qwen2-57B-A14B 基于 Qwen2-7B 扩展。相比 Qwen1.5,KV 尺寸更小,利于长上下文推理。
三、预训练
(一)预训练数据
构建大规模高质量多语言数据集,优化质量、扩充规模、改进分布。部分模型用 7 万亿词元数据训练,Qwen2-0.5B 用 12 万亿词元数据,融入多任务指令数据。
(二)长上下文训练
上下文长度扩展至 32,768 词元,增加高质量长数据,调整 RoPE 基础频率,采用 YARN 和 DCA 机制,使模型能处理 131,072 词元序列。
四、后训练
(一)后训练数据
通过协作数据标注和自动化数据合成获取示范数据和偏好数据,用于监督微调(SFT)和人类反馈强化学习(RLHF)。
协作数据标注:
自动本体提取:利用 instag 工具从大量指令数据集中自动提取描述任务和内容的基本结构,经人工验证和优化,保证分类准确全面。
指令选择:依据多样性、语义丰富性、复杂性和完整性等标准,从本体中挑选具有代表性的高质量指令。
指令进化:采用自我进化策略,让 Qwen 模型对现有指令扩展或添加额外约束,增加数据集的复杂性和多样性。
人工注释:使用不同规模的 Qwen 模型生成多个响应,由人工对这些响应排序,选出最佳响应作为示范数据,同时生成偏好数据。
自动化数据合成:
拒绝采样:针对确定性任务如数学问题,生成多个解答路径,保留正确且合理的路径作为示范数据,错误路径作为偏好数据。
执行反馈:对于编码任务生成解决方案和测试用例,通过编译和运行代码验证正确性,将能正确输出的代码作为示范数据,错误代码作为偏好数据。
数据再利用:聚合公共领域的高质量文本,生成相关的指令与响应对。
宪法反馈:使用预定义原则指导模型生成符合安全和价值观念的响应,符合原则的响应作为示范数据,违背原则的作为偏好数据。
(二)监督微调
用超 50 万个示例的指令数据集,对模型进行两轮微调,调整学习率、权重衰减和梯度裁剪。
(三)人类反馈强化学习
分离线和在线阶段,利用直接偏好优化(DPO)和在线合并优化器,提升模型性能并减轻对齐损耗。
离线训练阶段:监督微调(SFT),使用大量有监督数据对模型进行微调,使模型学习基本语言能力和遵循指令生成合理输出的能力。
在线训练阶段:
基于直接偏好优化(DPO)的强化学习:利用人类反馈定义奖励函数,通过 DPO 算法优化模型。
在线合并优化器的应用:整合 RL 策略和 SFT 模型参数差异,引导梯度向 SFT 优化方向,使模型在优化过程中保持语言能力和基本性能。
减少对齐损耗的方法:
引入 KL 散度惩罚项:防止策略在追求偏好奖励时偏离原始目标,避免过度适应人类偏好而丢失预训练和 SFT 阶段获得的能力。
在线合并优化器:整合参数差异,调节训练方向,实现奖励最大化和减少遗忘的平衡。
模型融合与权重插值:将不同模型结合,实现更平衡的性能,减轻对齐损耗。
五、评估
(一)基础语言模型评估
使用多基准数据集评估核心能力,Qwen2 各规模模型在多数任务上优于同类基线模型,展现强大语言理解、编码、数学等能力。
语言理解能力评估:
使用 GLUE、SuperGLUE 等基准数据集,涵盖文本分类、情感分析、语义相似度计算、文本蕴含判断等任务。
通过准确率、召回率、F1 值等指标衡量模型对语言情感倾向、语义关系等的理解能力。
编码能力评估:
采用 CodeXGLUE 中的代码生成、代码翻译等任务数据集。
以生成代码的准确率、语法正确性、能否正确运行等作为评估指标。
数学能力评估:
利用 MATH、GSM8K 等数学问题数据集,涵盖多个数学领域。
通过模型解答问题的准确率评估其数学运算和推理能力。
(二)指令调优模型评估
综合多种方法评估,涵盖开放基准、内部自动、长上下文、多语言、安全与责任评估及污染分析。Qwen2 指令调优模型表现优异。
开放基准评估:
使用公开基准数据集,如 GLUE、SuperGLUE、CodeXGLUE、MATH 等。
将模型性能与其他同类模型对比,评估其在不同任务上的竞争力。
内部自动评估:
建立内部评估指标和工具,评估生成文本的质量、多样性、连贯性等。
通过计算相似度指标、分析词汇句式使用情况、检查逻辑结构等进行量化评估。
长上下文能力评估:
构建包含长文本序列的数据集,如长文档、小说、技术报告等。
评估模型对长文本的理解、摘要生成、关键信息提取能力,以准确率、召回率、生成摘要质量等为指标。
多语言评估:
收集多种语言的数据集,评估模型在不同语言上的理解、生成、翻译能力。
使用多语言评估指标(如 BLEU 变体)量化翻译准确性、流利度及语法语义把握程度。
安全与责任评估:
人工审查大量文本样本,检查是否生成有害、虚假、歧视性或违反道德规范的内容。
评估模型对恶意输入的鲁棒性,如识别对抗攻击、保护敏感信息等。
污染分析:
审查训练数据来源、收集过程及质量,分析偏差、错误或低质量信息对模型性能的影响。
采用数据清洗和验证技术,对比清洗前后模型性能变化,判断数据污染影响程度。
Qwen2.5 模型学习笔记:
一、引言
大语言模型(LLMs)的迅猛发展开启了通用人工智能(AGI)的新篇章,推动了 AI 研究与应用的边界。Qwen2.5 在此背景下应运而生,带来了多种参数规模的开源和专有模型,在性能上实现了显著的提升,进一步推动了 AI 技术的发展。
二、架构与分词器
(一)模型架构
开源的密集模型:基于 Transformer 的解码器架构,融入 GQA、SwiGLU、RoPE 等技术,确保了模型训练的稳定性。
专有模型:在密集模型的基础上,将标准 FFN 层替换为 MoE 层,实现了细粒度专家分割和共享专家路由。
(二)分词器
使用 Qwen 分词器,基于字节级字节对编码(BBPE),扩展了控制令牌数量,建立了统一词汇表,有效减少了兼容性问题。
三、预训练
(一)数据增强
预训练数据智能过滤:利用 Qwen2 模型对预训练数据进行智能过滤,提升数据质量。
融入专业数据:加入 Qwen2.5 Math 和 Qwen2.5 Coder 的专业数据,增强模型在数学和编程任务上的表现。
生成与筛选合成数据:使用 Qwen2-72B 和 Qwen2-Math 模型生成高质量合成数据,并通过 Qwen2-Math-RM 模型筛选,确保数据质量和多样性。
数据分类与均衡处理:使用 Qwen2 模型对数据进行分类,并进行均衡处理,避免数据偏差。
多阶段训练:分为两个阶段训练,Qwen2.5-Turbo 版本采用四阶段训练策略,使模型适应不同长度的输入。
生成查询与添加指令:从预训练数据集中生成查询,并添加长度控制指令,增强模型在长文本生成任务中的表现。
执行反馈的拒绝采样:确保模型能够准确理解和执行各种指令。
构建多样化系统提示:增强模型在处理不同类型系统指令时的稳定性和可靠性。
响应生成策略:保证数据的多样性,平衡探索和利用,让模型学习更多样化的响应。
(二)超参数调整
基于 Qwen2.5 预训练数据制定超参数缩放定律:
学习率缩放定律:学习率与模型参数量的关系为 η∝N−α,其中 α≈0.25。
批量大小缩放定律:批量大小与模型参数量和数据规模的关系为 B∝(N⋅D)β,其中 β≈0.4。
组合缩放定律:学习率与批量大小的关系为 η∝B−γ,其中 γ 在 0.1-0.3 之间。
(三)长上下文训练
采用两阶段预训练策略:
第一阶段:短序列预训练,在较短的上下文长度(如 4K 或 8K 词元)上训练模型。
第二阶段:长序列扩展训练,使用可扩展的位置编码方案,如 YARN 或 DCA,分阶段逐步增加训练序列的最大长度。
四、微调优化
(一)监督微调(SFT)
使用超百万高质量样本,增强模型在长序列生成、数学、编码等领域的能力,构建超 100 万 SFT 示例数据集进行模型微调。
(二)离线强化学习(Offline RL)
针对数学、编码等任务,利用 SFT 模型重采样构建约 15 万训练对,结合人工和自动审查,使用在线合并优化器训练模型。
(三)在线强化学习(Online RL)
依据严格数据标注标准训练奖励模型,采用 GRPO 算法,根据奖励模型评估的响应分数方差确定训练顺序。
(四)长上下文微调
针对 Qwen2.5-Turbo,在 SFT 阶段采用两阶段方法,结合长短指令进行微调;RL 阶段专注于短指令训练。
五、评估验证
(一)评估策略
使用综合评估套件,包括常用开源基准和内部数据集,排除潜在污染数据,主要进行自动评估。
(二)评估结果
Qwen2.5 系列在多任务基准测试中表现优异,在数学、编码等任务上超越同类模型。在长上下文能力评估中,Qwen2.5-Turbo 和 Qwen2.5-72B-Instruct 等模型性能突出。
六、研究结论
Qwen2.5 在预训练和微调方面进行了改进,通过大规模数据训练和优化技术,在多任务上表现优异,可作为基础模型用于多种应用。未来研究将聚焦于改进基础模型、开发多模态模型和提升推理能力。
附录
SwiGLU 激活函数
SwiGLU 是一种在大语言模型中使用的激活函数,提升模型的非线性表达能力。其计算方式为 SwiGLU(x)=x1⋅GELU(x2),能够增强模型对复杂数据模式的捕捉能力。
FFN 与 MoE 的区别
结构差异:FFN 是基础固定的结构,由两层全连接层组成;MoE 包含多个 FFN 专家网络和一个路由机制。
功能差异:FFN 主要进行特征变换和提取;MoE 实现更细粒度的任务处理和更高效的资源利用。
计算方式差异:FFN 顺序进行线性变换和非线性激活计算;MoE 依赖路由机制动态调整计算路径。
Qwen3 模型学习笔记:
一、模型架构
(一)基础架构
Qwen 3 延续了 Qwen 2.5 的核心技术,以下是对各技术的详细解释:
GQA(Grouped Query Attention):平衡计算效率与建模能力
平衡的必要性:
在 Transformer 模型中,传统的 Multi-Head Attention(MHA)每个 Query 头都有独立的 Key 和 Value,虽然能提高模型的表达能力,适用于复杂任务,但推理速度慢,因为每一步都要存储和读取所有 Query 头的 Key 和 Value,导致 KV 缓存大,占用大量显存和内存带宽。
而 Multi-Query Attention(MQA)虽通过让所有 Query 头共享相同的 Key 和 Value,大大提高了推理速度和降低了显存占用,但不同 Query 头会已关注相同信息,导致模型表达能力下降,训练也可能不稳定。
GQA 的实现方式:
GQA 介于 MHA 和 MQA 之间,它将注意力头分成若干组,每组内的注意力头共享相同的 Key 和 Value,但每个头仍然有独立的 Query。例如,若有 8 个 Query 头,GQA-4 会将其分成 4 组,每组共享一组 Key 和 Value。这样,GQA 允许部分 Query 头共享 Key-Value,在一定程度上保持了多样性,同时又减少了计算量和存储需求。
平衡效果:
计算效率方面:由于分组共享 Key 和 Value,与 MHA 相比,GQA 大大减少了 KV 缓存的大小,降低了内存占用和内存带宽需求,从而提高了推理速度。虽然它的推理速度比 MQA 略慢,但比 MHA 快得多。
建模能力方面:GQA 避免了所有 Query 头共享同一组 Key 和 Value 的情况,保留了不同注意力头的多样性,使得模型能够已关注到更多不同方面的信息,因此在模型质量上比 MQA 高,能更好地处理长序列建模和复杂推理任务等,不过其模型质量相比 MHA 还是略低一点。但实验表明,GQA-8(8 组)是质量和速度最优的选择,可以接近 MHA 的质量,同时拥有 MQA 级别的推理速度。
SwiGLU 激活函数:提升非线性表达能力
SwiGLU 是一种在大语言模型(如 Qwen2.5 系列模型)中使用的激活函数,全称为 “Switching Gaussian Error Linear Unit”(切换高斯误差线性单元)。
提升非线性表达能力:在神经网络中,激活函数是赋予模型非线性能力的关键组件。SwiGLU 能够让模型学习到数据中复杂的非线性关系。例如,在判断一句话的情感倾向时,句子里词汇间的关系复杂,像否定词、程度副词都会影响整体情感,SwiGLU 能帮助模型理解这些复杂关系,准确判断出情感是积极、消极还是中性。
独特的计算方式:SwiGLU 的计算过程涉及将输入向量分成两部分,假设输入向量是 x,会被分成 x₁ 和 x₂ 。一部分经过高斯误差线性单元(GELU)激活函数处理,另一部分保持不变,然后将这两部分的结果按元素相乘。公式表示为 SwiGLU(x)=x₁⋅GELU(x₂) 。这种计算方式让模型可以根据不同部分输入的特点,灵活地进行信息融合和变换,增强对复杂数据模式的捕捉能力。
提高模型性能:在大语言模型中使用 SwiGLU 激活函数,能显著提升模型的性能。它可以让模型在处理自然语言任务时,更精准地理解语义、生成高质量文本。比如在文本生成任务中,使用 SwiGLU 的模型生成的文本逻辑更连贯、语法更正确、语义更丰富;在机器翻译任务里,能更准确地翻译各种复杂语句,提升翻译质量。
RoPE(Rotary Position Embedding):增强位置编码效果
RoPE 是一种用于处理序列数据中位置信息的技术,在语言模型等领域有广泛应用。
基础频率的定义:RoPE 使用正弦和余弦函数来为每个位置生成一个唯一的编码,基础频率通常被定义为 ω=10000^(−2i/d),其中 i 表示维度索引,d 是模型的维度。通过这种方式定义的基础频率,RoPE 可以为不同位置生成具有特定频率和相位的正弦和余弦信号,从而将位置信息融入到模型中。
作用:不同的基础频率会影响位置编码的分辨率和周期性,进而影响模型对序列中长距离依赖关系的捕捉能力。RoPE 能够增强模型的位置编码效果,使模型更好地理解和处理序列数据中的位置信息,提高模型在自然语言处理等任务中的性能。
(二)关键改进
QK-Norm 取代 QKV-bias
原理与作用方式:
QKV-bias:在 Qwen 2.5 的注意力机制中,QKV-bias 是通过向查询(Q)、键(K)、值(V)三个向量分别添加偏置项来实现的。其目的是帮助模型更好地捕捉文本中不同词元之间的关系,优化模型对各种语义和语法信息的处理能力,进而稳定训练过程。例如,在处理一些具有特定语法结构或语义关系的文本时,偏置项可以引导模型更已关注某些关键部分,从而提高模型对这些信息的理解和处理效果。
QK-Norm:Qwen 3 中的 QK-Norm 则是对查询(Q)和键(K)进行归一化操作。具体来说,它会对 Q 和 K 在特征维度上进行归一化,使得它们的均值为 0,方差为 1。这样做的目的是提升注意力计算的稳定性,通过归一化 Q 和 K,可以减少它们在数值上的波动,使得注意力机制在计算时更加稳定,避免因 Q 和 K 的数值过大或过小而导致注意力计算出现偏差或不稳定的情况。
带来的效果与潜在问题:
QKV-bias:虽然 QKV-bias 在一定程度上能够稳定训练并帮助模型捕捉词元关系,但它可能会引入偏差。因为偏置项的设置是固定的,无论输入的文本内容是什么,都会按照预设的偏置进行调整。这可能导致模型在某些情况下过度依赖偏置项,而忽略了输入文本本身的特征,从而影响模型的泛化能力。例如,在处理一些与训练数据分布不同的新文本时,模型可能会因为偏置项的影响而无法准确地理解和处理文本信息。
QK-Norm:QK-Norm 通过归一化操作,能够有效缓解传统注意力机制的不稳定性问题。在不同的输入文本情况下,它都能根据输入的实际情况对 Q 和 K 进行归一化处理,使得注意力计算更加准确和稳定。实验表明,QK-Norm 能够提高模型在各种任务上的性能表现,尤其是在处理一些复杂的自然语言处理任务时,如文本生成、问答系统等,能够生成更准确、更符合语义的结果。同时,由于它是基于输入进行动态归一化的,所以不会像 QKV-bias 那样引入固定的偏差,有助于提高模型的泛化能力。
MoE 架构优化
去除共享专家:Qwen 3-MoE 完全采用独立专家,替代 Qwen 2.5-MoE 中的部分共享专家。共享专家可能会导致不同任务之间的信息干扰,而独立专家可以确保每个专家专注于特定任务或数据类型,从而提高模型的性能和效率。
引入 Global-Batch Load Balancing Loss:
问题背景:在 MoE 模型中,一个 MoE 层由一个路由器和一组专家组成。基于 TopK 机制的稀疏激活会使训练中出现专家激活不均衡的问题,即少数专家被频繁选择并得到更多优化,而剩余专家则冗余,这会影响模型性能。
现有方法局限性:目前主流 MoE 训练框架实现的负载均衡损失(LBL)通常是在局部(micro-batch)层次上进行的,即每个 micro-batch 内计算 LBL 并在全局(global-batch)层次上平均。但一个 micro-batch 的输入往往来自个别领域,这会导致模型将每个领域的输入均匀分配给所有专家,阻碍专家针对特定领域数据的特异化。
Global-Batch Load Balancing Loss 原理及优势:
原理:通过轻量的通信将局部均衡放松为全局均衡。具体操作包括在所有 micro-batch 之间同步专家选择频率,在每个 GPU 上计算负载均衡损失,以及在所有 micro-batch 之间聚合损失。由于专家选择频率只是一个专家数大小的向量,即使在全局通信的情况下也不会带来明显开销。
优势:能显著增强专家的特异化并提高模型性能。实验表明,相比局部均衡,Global-Batch Load Balancing Loss 在各种模型、数据和任务设置下都能取得更好的性能,且使 MoE 模型在不同领域上展现出显著的专家特异性,即某些专家对特定领域数据有更高的激活频率。
实际应用中的优化:只使用全局均衡可能会影响局部均衡状况,降低 MoE 的计算效率。因此,可以在主要使用全局均衡的情况下,在训练过程中添加局部均衡限制,如添加默认实现的 LBL,损失权重设为全局 LBL 的 1%。这样做可以提升模型的速度,同时模型的效果也几乎不受影响。
(三)模型规模覆盖
Qwen 3 系列包含多种参数规模的模型(0.6B、1.7B、4B、14B、72B、235B 及 MoE 版本),尤其注重小模型的优化(如 0.6B、1.7B),以适配边缘设备和移动端应用场景。这种多样化的模型规模覆盖使得 Qwen 3 能够满足不同用户在不同场景下的需求,无论是对计算资源有限的边缘设备还是对高性能要求的服务器端应用。
二、预训练
(一)数据规模与多样性
总数据量达 36T tokens(是 Qwen 2.5 的两倍),支持 119 种语言和方言(覆盖范围扩大至 Qwen 2.5 的三倍)。如此大规模和多样化的数据能够使模型更好地学习和理解各种语言和文化背景下的文本信息,提高模型的通用性和适应性。
(二)三阶段训练策略
S1 阶段:语言与常识奠基
使用大规模通用语料训练基础语言能力。
采用 4k 上下文窗口,确保高效训练。这个阶段的目标是让模型学习基本的语言模式和语义信息,为后续的训练打下坚实的基础。
S2 阶段:推理能力专项提升
引入高质量数学、代码、逻辑推理数据。
通过课程学习(Curriculum Learning)逐步增加难度。课程学习是一种根据任务难度逐步训练模型的方法,有助于模型更好地掌握复杂的推理能力,避免在训练初期就被高难度任务所困扰。
S3 阶段:长上下文扩展
扩展序列长度至 32k,适应文档理解、长对话等任务。
采用动态 NTK(Neural Tangent Kernel)方法缓解长序列训练的稳定性问题。长序列训练往往会面临训练不稳定的问题,动态 NTK 方法可以通过动态调整模型的训练参数来保持训练的稳定,确保模型能够有效地学习到长距离的依赖关系。
(三)基座模型性能
旗舰模型 235B-A22B 在大部分数据集上均为 SOTA(State of the Art,即领域内最佳)。这表明 Qwen 3 在预训练阶段就已经达到了非常高的性能水平,为后续的后训练优化提供了强大的基础。
三、后训练
(一)Stage1: Long-CoT 冷启动
构建综合数据集,覆盖数学、编程、逻辑推理及通用 STEM 问题,每个问题都配有经过验证的参考答案或基于代码的测试用例。数据构建包括 query filtering 和 response filtering 两个阶段:
query filtering:使用 Qwen2.5-72B-Instruct 识别并剔除难以验证的问题,包括含多个子问题的问题、要求生成通用文本的问题、Qwen2.5-72B-Instruct 能不依赖 CoT 推理就直接答对的问题。此外,还用 Qwen2.5-72B-Instruct 给每个问题标注所属领域,以保证领域覆盖的广度和平衡性。
response filtering:使用 QwQ-32B 为每个问题生成 N 个候选 response。对于 QwQ-32B 一直无法正确回答的题目,则进行人工标注。对于通过 Pass@N 的问题,还需进一步筛选,剔除最终答案错误、存在大量重复内容、明显是在猜测、没有充分推理过程、推理过程与结论不一致、存在不恰当的语言混杂或风格突变、与评测集样本过于相似的 response。经过严格筛选后,将选出的部分用于模型冷启动 sft。这一阶段的目标是灌输基本推理模式,而非追求高性能,所以要尽量保留模型的潜力,便于在之后的强化学习阶段(RL) 进一步提升。为此,建议尽量减少训练样本量和训练步骤,以避免过早收敛。
(二)Stage2: Reasoning RL
通过强化学习进一步提升模型的推理能力,使用了 3,995 个 query-verifier pairs 进行训练。这些 pairs 的筛选必须满足以下四个标准:
没有用于冷启动阶段。
适合冷启动后的模型学习:必须是冷启动模型可以理解并且能有效学习的,确保在推理能力上逐步进阶。
尽可能具有挑战性:能够推动模型的推理能力不断提升,不仅仅是简单任务的重复训练。
涵盖广泛的子领域:确保模型的全面性。训练技巧上采用了 Large Batch Size 和 High Number of Rollouts per Query,Batch Size 调大很好理解,High Number of Rollouts per Query 指的一个 query 会被模型反复推理多次。算法用的 GRPO,Qwen3-235B-A22B 模型在 170 个 step 后,AIME’24 分数从 70.1 提升至 85.1。
(三)Stage3: Thinking Mode Fusion
该阶段的核心目的是将 Think 模式和 No Think 模式进行融合,使用户可以通过 hink 或者
o_think 来控制模型是否进入思考模式。
SFT 数据构建:SFT 使用融合了 “think” 和 “no_think” 的数据。其中,think 数据 query 来自 Stage 1 的任务,然后用 Stage 2 得到的模型进行拒绝采样生成 response;“no_think” 数据则覆盖代码、数学、多语言、指令跟随、创意写作、问答、角色扮演等更广泛的任务。为了提升模型对低资源语言的能力,特别提高了翻译任务的比例。
Chat 模版设计:用户输入中可通过 /think 或 /no_think 指定模式;默认情况下模型为思维模式。非思维模式下,response 中仍保留空的 think 块 () ,以确保格式一致性。多轮对话中,系统会随机插入多个 /think 和 /no_think,让模型学习根据最近一个标签的模式进行回复。
Thinking Budget(思考预算):无需训练,可以让用户指定思考输出的 token 长度,当思考 token 数达到用户指定长度后,直接加上 “Considering the limited time by the user, I have to give the solution based on the thinking directly now.
.
”,强制模型结束思考给出结果。
(四)Stage4: General RL
该阶段旨在全面提升模型在不同任务场景下的能力和稳定性,构建了一个涵盖 20 多个任务的大规模奖励体系。每个任务都有定制的评分标准,重点强化以下几个核心能力:
指令遵循:确保模型能准确理解并执行用户的要求,包括内容、格式、长度、结构等各类指令。
格式遵循:不仅要理解用户显式的指令,还需遵循隐式格式规则,例如正确响应 /think 与 /no_think 标记,规范使用和分隔思维内容与最终回答。
偏好对齐:对于开放性问题,提升模型的有用性、互动性和表达风格,使回答更符合人类偏好。
Agent 能力:训练模型正确调用工具接口,提升作为智能体的执行能力。
特殊任务:例如在 RAG(检索增强生成)任务中,引导模型生成更准确且具上下文契合度的回答,降低幻觉风险。奖励类型包括三类:
规则型奖励(Rule-based):适用于推理与格式类任务,通过明确的规则精准判断模型输出是否正确。
带参考答案的模型奖励:提供参考答案,用 Qwen2.5-72B-Instruct 来对模型输出进行评分。
无参考答案的模型奖励:基于人类偏好数据训练的奖励模型,对模型输出打分。
(五)蒸馏
用于 5 个 dense 模型和一个 MoE 模型。主要是两个阶段:
response 蒸馏(数据蒸馏):结合教师模型在 /think 和 /no_think 两种模式下生成的输出对学生模型进行蒸馏。
logits 蒸馏:将学生模型的 logits 与教师模型对齐,以最小化 KL 散度。在小模型上使用 logits 蒸馏的效果要优于直接做 RL 的效果,并且 logits 蒸馏的 GPU Hours 仅为 RL 的 1/10。
四、结语
Qwen 3 的主要改进在于预训练数据的增加和后训练流程的优化,特别是 Think 和 No Think 模式的融合是其亮点。发布于 2025-05-15 08:57
通过上述详细的解释,我们可以更深入地理解 Qwen 3 系列大模型的技术细节与创新之处。从模型架构的优化到预训练和后训练策略的改进,Qwen 3 在多个方面都取得了显著的进展,使其在各种任务中都能表现出色。
暂无评论内容