1. Qwen3 训练全流程到底在解决什么问题
Qwen3 大模型训练全流程,说白了就是把一个只会“接话”的基座模型,逐步打磨成能推理、能对齐、还能压缩落地的工程链路。它适合谁?适合手里有几张卡、想复现或二次开发 Qwen3 的算法工程师,也适合想搞懂“预训练→强化学习→蒸馏”这条主线到底怎么串起来的技术人。我自己在复现时最大的感受是:真正卡住你的不是某个算法公式,而是数据配比、阶段切换时机、以及蒸馏时温度与损失权重怎么设。
Qwen3 的路线可以拆成六段:三阶段预训练、思维链冷启动、推理强化学习、思维模式融合、通用强化学习,最后用大模型蒸馏出小模型。注意这里的顺序不是拍脑袋定的,每一步都在为下一步“留余地”。比如冷启动阶段故意不把推理性能拉满,就是为了让后面的 RL 有更大探索空间;思维模式融合引入/think和/no_think标记,则是为了让模型学会“该想的时候想,不该想的时候直接答”。
对算法工程师来说,这条链路的价值在于它给出了一个可复制的工程模板:预训练阶段怎么配数据比例、RL 阶段用什么算法和奖励、蒸馏阶段怎么设温度和 KL 权重。下面我会按“原问题→前置准备→可复制配置→验证→排障→CTA”的顺序,把每个阶段的参数和验证动作讲清楚,你可以直接拿去改。
2. 预训练三阶段的数据配比与序列长度工程化拆解
Qwen3 的预训练不是一锅炖,而是分三步走,每步的序列长度、token 量和数据侧重都不同。这个设计思路很值得借鉴:先用通用知识打底,再灌推理能力,最后拉长上下文。
第一阶段是通用知识训练,序列长度 4096,总 token 约 30T,覆盖 119 种语言和方言。这一阶段的目标是让模型学会语言结构、语法、常识和通用世界知识。你可以理解为“先把话说利索”。数据配比上,多语言语料占大头,但要注意清洗质量,低质重复数据会直接拖垮后续阶段。
第二阶段是推理能力训练,序列长度仍是 4096,总 token 约 5T,但学习率衰减加快,同时提高 STEM、编码、推理和合成数据的比例。这一步是“开始动脑子”。我实测下来,合成数据的比例不能太高,否则模型容易过拟合到合成分布上,建议控制在 30% 以内,并且要用多个来源的合成数据混合。
第三阶段是长上下文训练,序列长度拉到 32768,总 token 约 10B。数据分布上,75% 的文本长度在 16384 到 32768 token 之间,25% 在 4096 到 16384 token 之间。这里用到了 ABF 技术、YARN 和双块注意力(DCA)。ABF 的作用是调整注意力温度,让模型在长序列上不至于“注意力涣散”;YARN 则是通过位置插值把短上下文能力外推到长上下文。
一个可复制的配置模板(以 YAML 为例)如下:
pretrain: stage1_general: seq_len: 4096 total_tokens: 30T languages: 119 lr: 3e-4 lr_schedule: cosine stage2_reasoning: seq_len: 4096 total_tokens: 5T stem_ratio: 0.35 code_ratio: 0.25 synthetic_ratio: 0.25 lr: 1.5e-4 lr_schedule: cosine_with_warmup stage3_long_context: seq_len: 32768 total_tokens: 10B long_ratio: 0.75 mid_ratio: 0.25 rope_scaling: yarn attention: dca abf: true验证动作:每个阶段结束后,跑一遍验证集 loss 和吞吐。通用知识阶段看多语言 perplexity,推理阶段看 STEM 和代码任务的准确率,长上下文阶段看 32K 长度下的检索和问答表现。如果 loss 下降但下游任务不涨,说明数据配比有问题,优先检查合成数据比例和去重是否到位。
3. 思维链冷启动与推理强化学习的可复制配置
冷启动阶段的目标是“灌输基础推理模式,但不过度强调推理性能”。这句话很关键:如果你在这一步就把模型训得太强,后面的 RL 反而没有提升空间。数据集不用太多,但多样性要够,防止过拟合,让模型保持一定的“未完成性”。
数据集构建分两步:查询过滤和响应过滤。查询过滤用大模型移除不易验证的 Query,包括多子问题、通用文本生成、无需思维链的 Query,同时给每个 Query 打领域标签,确保领域均衡。响应过滤则是用推理大模型生成 N 个候选响应,人工过滤掉最终答案错误、大量重复、缺乏充分推理的猜测、总结与思维过程不一致、语言混用、与验证集高度相似的样本。
推理强化学习阶段用了 3995 个数据对,要求是:未在冷启动阶段用过、对冷启动模型可学习、有一定难度、覆盖领域广泛。算法上采用 GRPO,配合大批量 + 多 rollout 并行探索、动态熵控制、离线策略训练。GRPO 的核心是用组内相对奖励替代价值网络,省显存的同时还能稳定训练。
一个可复制的 GRPO 配置片段(JSON 格式):
{ "rl_stage": "reasoning", "algorithm": "GRPO", "num_data_pairs": 3995, "batch_size": 128, "rollout_per_prompt": 8, "entropy_coef": 0.01, "kl_coef": 0.04, "clip_range": 0.2, "learning_rate": 1e-6, "off_policy": true, "dynamic_entropy": true }验证动作:跑完 RL 后,重点看数学和代码任务的准确率,同时监控熵值。如果熵值快速下降,说明探索不足,需要调大 entropy_coef;如果 KL 散度飙升,说明策略偏离太远,要调大 kl_coef。我踩过的坑是 rollout 数量设太少,导致组内奖励方差不够,GRPO 的优势估计不准,建议至少 8 个 rollout。
4. 思维模式融合与通用强化学习的奖励系统设计
思维模式融合的目的是把“非思维”能力集成到“思维”模型里,让模型能管理和控制推理行为。具体做法是对推理 RL 模型做 SFT 微调,“思维”数据通过第二阶段模型对第一阶段查询做拒绝采样生成,“非思维”数据覆盖编码、数学、指令遵循、多语言、创意写作、问答和角色扮演等任务。系统消息里引入/think和/no_think标记来确定回答模式,非思维模式样本的助手响应中保留空的思考块,确保输入格式一致。
通用强化学习阶段的目标是提升多样化场景下的能力和稳定性,建立了一个涵盖 20 多种任务的奖励系统。评估维度包括指令遵循、格式遵循、偏好对齐、Agent 能力和专业场景能力。奖励类型分两种:基于规则的奖励,用于指令遵循和格式遵守这类高精度评估;带参考回答的基于模型的奖励,用大模型 A 提供参考回答并给当前模型响应打分,适合多样化任务,避免纯规则奖励的假阴性。
一个可复制的奖励配置模板(TOML 格式):
[reward_system] num_tasks = 22 [reward_system.rule_based] instruction_following = 0.3 format_compliance = 0.2 think_tag_penalty = -0.1 [reward_system.model_based] reference_model = "qwen3-72b" preference_alignment = 0.25 agent_capability = 0.15 rag_faithfulness = 0.1 [reward_system.weights] total = 1.0验证动作:跑通用 RL 时,重点看指令遵循和格式遵循的通过率,以及 Agent 任务的多轮交互成功率。如果格式遵循掉点,检查/think和/no_think标记是否在最终输出中正确分隔。专业场景如 RAG 任务,要引入奖励信号引导模型生成符合上下文的响应,降低幻觉风险。
5. 模型蒸馏的温度与损失权重参数及常见报错排查
蒸馏分两种:离线策略蒸馏和在线策略蒸馏。离线策略蒸馏让学生模型学习老师模型在两种模式下的响应输出,学会基础推理模式和模式切换能力;在线策略蒸馏则最小化两种回答模式下学生与老师模型输出 logits 的 KL 散度。实测下来,蒸馏方法在数学与编程测试集上显著优于强化学习,而且所需 GPU 计算时间仅为 RL 的约十分之一。
关键参数是蒸馏温度和损失权重。温度控制软标签的平滑程度,温度太高会丢失老师模型的置信信息,太低则退化成硬标签。损失权重则是平衡硬标签损失和 KL 散度损失。一个可复制的配置:
{ "distill": { "mode": "online", "temperature": 2.0, "alpha_hard": 0.3, "alpha_kl": 0.7, "student_model": "qwen3-1.8b", "teacher_model": "qwen3-72b", "seq_len": 4096, "batch_size": 64 } }验证动作:蒸馏后跑数学和编程测试集,对比学生模型和老师模型的准确率差距。如果差距过大,先调温度到 1.5 或 2.5 试;如果 KL 损失不降,检查学生和老师的 tokenizer 是否一致。
常见报错排查:
401 Unauthorized:检查 API Key 是否正确,Base URL 是否指向https://taotoken.net/api,Model ID 是否填对。local proxy failed:说明本地网络配置有问题,检查环境变量HTTP_PROXY和HTTPS_PROXY是否误设,清空后重试。reading choices:通常是响应格式解析失败,检查请求体里的stream参数和返回结构是否匹配。OAuth相关报错:如果是 Claude Code 接入,检查 OAuth token 是否过期,重新走一遍授权流程。
如果你在接入时遇到认证问题,可以直接去 TaoToken 的 API Keys 页面重新生成 Key,再对照接入文档检查 Base URL 和 Model ID 三件套是否齐全。
6. 从训练到落地的 CTA 与长期编码建议
跑通全流程后,你会发现真正耗时的不是单步训练,而是反复调参和验证。如果你只是想做推理验证,可以直接用模型对话页面快速试效果;如果要做长期编码或 Agent 开发,建议走 Coding Plan,把训练和推理的资源分开管理。
对于二次开发,我的建议是:预训练阶段优先保证数据质量,RL 阶段优先保证 rollout 多样性,蒸馏阶段优先调温度和 KL 权重。三阶段预训练、思维链冷启动、推理 RL、思维模式融合、通用 RL、蒸馏,这条链路每一步都有验证动作,别跳过验证直接进下一步。
最后提醒一点:Qwen3 MoE 用了 128 个专家,每个 token 激活 8 个,没有共享专家,配合全局批处理负载均衡损失鼓励专家专业化。如果你要复现 MoE 版本,负载均衡损失的系数要调好,太小会导致专家退化,太大则影响主任务 loss。这些参数在自有算力上跑通后,再逐步放大规模,比一上来就堆卡更稳。