Qwen3 的技术报告。挑一些我个人觉得有意思的点分享一下:
预训练数据量惊人:
总共用了约 36 万亿 token!来源也很多样,
- Qwen2.5-VL 模型从海量 PDF 提取文本,
- 还有专门的 Qwen2.5-Math 和 Qwen2.5-Coder 模型合成数学和代码数据。
三阶段预训练策略很清晰:
- S1 通用阶段:超 30 万亿 token 打底通用知识 (覆盖119种语言,序列长度4k)。
- S2 推理阶段:约 5T 高质量 token 强化推理 (STEM, code,序列长度4k),这阶段还加速了学习率衰减,据说是为了保护S1成果,提高收敛,防过拟合。
- S3 长上下文阶段:几千亿 token 把上下文从 4k 扩展到 32k (75%是16k-32k数据,25%是4k-16k)。技术上用了 RoPE (base freq 10k->1M) + ABF + YARN + DCA。
SFT 阶段搞了个 "Thinking Mode Fusion",挺有意思的:
- “思考”数据用 Stage 2 模型自己拒识采样,“非思考”数据精挑细选。
融合后,模型能处理不完整思考,这为「思考预算控制」打下基础,而且这个能力据说是自然涌现的! - 当思考 token 超限,就手动插入特定指令+ </think>,模型基于已有思考给答案。
- 默认开启思考模式(训练数据里加了不带 /think flag 的推理样本)。保留空思考块 <think></think> 不仅保证格式一致,开发者也能手动避免模型思考。
蒸馏表现优异! 报告明确说蒸馏比直接 RL 效果和成本都好。Qwen3 小模型蒸馏分两步:
- 离线蒸馏:教师模型(带/think和不带/think模式)的输出直接微调学生模型,打下推理和模式切换基础。
- 在线蒸馏:学生模型生成序列,然后其 logits 与教师模型(Qwen3-32B 或 Qwen3-235B-A22B)对齐,最小化 KL 散度。
MoE 架构调整:
- Qwen3-MoE 去掉共享专家 (unlike Qwen2.5-MoE)
- 引入了 global-batch load balancing loss 来提升专家专业度。
数据配比精细化:
- 不再是粗犷的按数据源/领域调,而是用细粒度标签+小模型消融实验,在样本级确定实例和权重。
- 在数据处理上面做的真细致。
推理冷启动数据处理很细致:
- Query 过滤:用 Qwen2.5-72B-Instruct 过滤不易验证(如含多子问题、通用文本生成)和简单问题(72B无需CoT就能答对的),并打标保证领域平衡。
- Response 生成与过滤:
QwQ-32B 生成候选答案,人工评估答错的。
再按6大规则(答案错、重复、明显猜测、思考与答案不一致、语言混杂、与验证集相似)过滤。 - 目标是教模式,不是追求立竿见影,所以样本和训练步数都尽量少。
RL 阶段数据选择四原则:
- 不用冷启动数据、冷启动模型可学、有挑战性、覆盖广(最终选了3995对)。
- 用了 GRPO,大 batch size + 高 rollout + off-policy 提升效率。
奖励模型也搞了三种:规则(精确防 hacking)、模型打分(带参考答案,更灵活)、模型直接打分(基于人类偏好,无需参考答案,提参与度和帮助性)。覆盖 20+ 任务,每种都有定制打分规则。
其他零散但有意思的点:
- 增加翻译任务提升小语种能力。
- 超参用 scaling laws 根据模型架构、数据、阶段预测最佳 LR 和 batch size,不同模型代入公式就行。
- “思考使用的 token 越长,效果越好”。
image.png