从DeepSeek-R1-Distill中学习蒸馏技术
前言deepseek中蒸馏主要通过强的teacher模型构建高质量推理数据集对参数模型进行SFT随后再加上DPO加强模型偏好约束模型输出格式最后可以通过RL加强模型推理能力。目录结论1. 先区分三个概念2. DeepSeek-R1 的整体后训练流程3. DeepSeek 蒸馏到底蒸了什么不是蒸 teacher 的参数也不是经典 logits 蒸馏4. DeepSeek-R1-Distill-Qwen-7B 的过程可以简化成这样5. 你应该从哪个版本学习推荐方案先复现“小规模 SFT 蒸馏”备选方案小规模 GRPO 复现 R1-Zero 思路6. 一个工程可落地的学习路线阶段 1理解 SFT 蒸馏阶段 2做 rejection sampling阶段 3加入 non-reasoning 数据阶段 4再考虑 DPO / GRPO7. 最小实验设计实验目标数据构造训练配置参考8. 你要重点观察什么9. 推荐学习路径推荐方案备选方案10. 一个关键判断结论学习 DeepSeek 蒸馏模型最适合从“离线 SFT 蒸馏”入手而不是一上来复现完整 RL/GRPO。DeepSeek-R1-Distill 系列的核心不是“把 671B 模型压缩成 7B”而是用强 teacher 模型 DeepSeek-R1 生成高质量推理样本再用这些样本对 Qwen / Llama 等开源 base model 做 SFT。这本质上是sequence-level distillation / response distillation不是传统意义上拿 teacher logits 做 KL 蒸馏。DeepSeek 官方论文明确写到蒸馏模型只使用SFT没有加入 RL 阶段训练数据约 80 万条由 DeepSeek-R1 生成。(arXiv)1. 先区分三个概念概念DeepSeek 中对应什么你学习时应该怎么理解SFT用问答样本训练模型模仿目标输出最基础、最省事、最适合先做RL / GRPOR1-Zero、R1 的核心强化学习阶段用 reward 逼模型自己探索更好的推理策略DistillationR1-Distill-Qwen / Llama 系列用 R1 生成样本然后小模型做 SFTDeepSeek-R1-Zero 是直接在 DeepSeek-V3-Base 上做大规模 RL没有先做 SFT它出现了自我验证、反思、长 CoT 等行为但也有可读性差、语言混杂、重复等问题。(GitHub)DeepSeek-R1 则加入了 cold-start SFT、两阶段 RL、rejection sampling、再次 SFT 等流程用来改善可读性、泛化能力和人类偏好对齐。(arXiv)DeepSeek-R1-Distill 系列则更简单用 DeepSeek-R1 生成的样本去微调 Qwen2.5 / Llama3 系列 base model。(GitHub)2. DeepSeek-R1 的整体后训练流程可以把它拆成两条线路线 A训练大 teacher DeepSeek-V3-Base → RL无 SFT得到 R1-Zero → cold-start SFT → 第一阶段 RL增强推理与语言一致性 → rejection sampling → 第二阶段 SFT混合 reasoning non-reasoning 数据 → 第二阶段 RL对齐 helpfulness / harmlessness → DeepSeek-R1 路线 B蒸馏小 student DeepSeek-R1 → 生成高质量 reasoning / general 数据 → 清洗、过滤、保留正确答案 → SFT 微调 Qwen / Llama base model → DeepSeek-R1-Distill-Qwen / LlamaDeepSeek 论文里的多阶段 pipeline 正是这个结构先通过 RL 得到 R1-Zero再通过 cold-start、RL、SFT、二阶段 RL 得到 R1最后用 R1 的输出蒸馏小模型。(arXiv)3. DeepSeek 蒸馏到底蒸了什么不是蒸 teacher 的参数student 不会直接获得 DeepSeek-R1 的内部权重也不是复制 hidden states。也不是经典 logits 蒸馏经典知识蒸馏通常是teacher logits → soft label → student 用 KL loss 学分布但 DeepSeek-R1-Distill 更接近prompt → teacher 生成长推理轨迹 最终答案 → 过滤正确样本 → student 用 SFT 学完整输出所以它蒸的是蒸馏对象含义推理格式think.../think或类似长思考结构解题路径多步推导、反思、验证、纠错答案表达最终答案的格式和解释方式任务分布数学、代码、STEM、逻辑、通用问答等样本覆盖teacher 行为风格更长的 reasoning、更强的 self-check、更谨慎的输出习惯DeepSeek 的 80 万 SFT 数据中大约 60 万是 reasoning-related 样本约 20 万是 non-reasoning 样本数据覆盖数学、代码、STEM、逻辑、通用任务等领域。(arXiv)4. DeepSeek-R1-Distill-Qwen-7B 的过程可以简化成这样以DeepSeek-R1-Distill-Qwen-7B为例Base model: Qwen2.5-Math-7B Teacher: DeepSeek-R1 Training data: 约 800k teacher-generated samples Training method: SFT only 训练超参 2–3 epochs max context length 32768 batch size 64 initial lr for Qwen-7B 8e-5 cosine decay 到初始 lr 的 1/10这些超参数来自 DeepSeek-R1 论文附录 B.4.3官方列出的 Qwen-7B 蒸馏 base model 是 Qwen2.5-Math-7B初始学习率为8e-5。(arXiv)5. 你应该从哪个版本学习推荐方案先复现“小规模 SFT 蒸馏”适合你现在学习后训练体系。Teacher: DeepSeek-R1 / DeepSeek-R1-Distill-32B / GPT-4.1 / Qwen3-235B 等强模型 Student: Qwen2.5-7B / Qwen3-8B / DeepSeek-R1-Distill-Qwen-7B 二次微调 数据规模: 先做 1k → 5k → 20k不要一开始搞 800k 训练方式: LoRA / QLoRA SFT 工具: LLaMA-Factory 或 TRL SFTTrainer原因很直接蒸馏的工程闭环最短可以快速理解数据构造、模板、loss、评估、过拟合、泛化这些后训练核心问题。TRL 官方文档也把 SFT 作为最常用、最直接的后训练方式之一SFTTrainer 支持 conversational / prompt-completion 等数据格式。(Hugging Face)备选方案小规模 GRPO 复现 R1-Zero 思路适合你已经跑通 SFT 蒸馏之后。Base: Qwen2.5-0.5B / 1.5B / 3B 任务: 数学、代码、可验证 QA Reward: 答案正确性 reward 格式 reward 训练: TRL GRPOTrainer 风险: 慢、吃显存、reward 设计难、容易 reward hackingTRL 已经支持 GRPOTrainer并且支持自定义 reward function官方示例里也展示了用准确率 reward 训练数学任务的流程。(Hugging Face)但 DeepSeek 论文也指出小模型直接靠大规模 RL 未必能超过从强 teacher 蒸馏他们的实验中DeepSeek-R1-Distill-Qwen-32B 明显优于直接对 Qwen2.5-32B-Base 做大规模 RL 得到的 Qwen2.5-32B-Zero。(arXiv)6. 一个工程可落地的学习路线阶段 1理解 SFT 蒸馏目标让 7B 模型学会 teacher 的推理格式和答案风格。数据格式建议{ messages: [ { role: user, content: 题目或任务 }, { role: assistant, content: think推理过程/think\n最终答案 } ], domain: math, source: teacher_generated, teacher_model: deepseek-r1, quality_score: 0.92 }关键字段说明字段作用messages训练主字段适配 chat templatedomain方便后续做分领域评估比如 math/code/generalsource区分 teacher-generated、人类数据、真实业务数据teacher_model记录 teacher 来源便于追踪质量quality_score可选用于过滤低质量样本训练本质是 token-level cross entropy模型根据前文预测 assistant 输出。TRL 文档里明确 SFT 的目标是最小化目标序列的 negative log-likelihood也就是常见的 next-token 交叉熵。(Hugging Face)阶段 2做 rejection sampling不要让 teacher 生成一次就直接训练。成熟做法是同一个 prompt 生成 N 个答案 → 用规则 / judge / 单元测试筛选 → 保留正确、清晰、格式合格的答案 → 加入 SFT 数据DeepSeek-R1 的 800K supervised data 就使用了 rejection sampling对每个 prompt 采样多个响应只保留正确的同时过滤语言混杂、长段落混乱、代码块异常等 CoT。(arXiv)阶段 3加入 non-reasoning 数据只训数学/代码长 CoT 会有副作用模型可能所有问题都长篇思考 普通问答变啰嗦 闲聊/写作能力退化 安全边界变差 多轮对话能力弱DeepSeek 的 supervised 数据里除了 reasoning 样本也加入了写作、事实问答、自我认知、翻译、软件工程、前端开发等 non-reasoning 数据论文也指出这批数据大多是单轮这可能限制多轮对话能力。(arXiv)你的工程实践里建议数据比例先这样设reasoning 数据60%–70% general instruction 数据20%–30% 安全/拒答/边界数据5%–10% 多轮对话数据5%–10%阶段 4再考虑 DPO / GRPO不要一开始就上 RL。更合理顺序SFT 蒸馏 → eval → 错误样本分析 → 补数据 → 再 SFT → DPO / ORPO 调偏好 → 小规模 GRPO 做可验证任务原因是 RL 的难点不在代码而在 reward问题风险reward 设计不稳模型学会钻规则漏洞judge model 有偏模型优化 judge 喜欢的格式而不是正确性rollout 成本高每个 prompt 要采样多个 completion长 CoT 成本高显存、吞吐、训练时间都上升小模型基础能力弱容易重复、崩格式、答非所问DeepSeek 论文也提到 reward hacking模型可能利用 reward model 的偏差获得高分但不符合真实人类偏好。(arXiv)7. 最小实验设计你可以这样做一个真正能学到东西的小实验。实验目标训练一个小型 reasoning distillation modelBase: Qwen2.5-1.5B-Instruct 或 Qwen2.5-3B Teacher: DeepSeek-R1 / DeepSeek-R1-Distill-Qwen-32B 数据: 3000–10000 条 方法: LoRA SFT 评估: GSM8K / MATH 子集 / 自建代码题 / 中文推理题数据构造1000 math 1000 code 1000 general reasoning 1000 normal instruction 500 safety / refusal每条数据做这些检查1. final answer 是否正确 2. 是否出现中英混杂 3. 是否无限重复 4. 是否格式稳定 5. 是否过长 6. 是否有明显幻觉训练配置参考stage: sft model_name_or_path: Qwen/Qwen2.5-1.5B-Instruct finetuning_type: lora template: qwen cutoff_len: 8192 learning_rate: 2.0e-5 num_train_epochs: 2 per_device_train_batch_size: 1 gradient_accumulation_steps: 16 lora_rank: 16 lora_alpha: 32 bf16: true这里我不会建议你直接照 DeepSeek 的32768 context batch size 64因为那是大规模训练设定。你学习阶段用4k–8k context更现实先观察模型是否真的学到推理格式。8. 你要重点观察什么不要只看 loss。指标说明train loss只能说明拟合程度不能说明推理变强eval accuracy数学/代码题是否真的答对format compliance是否稳定输出指定格式reasoning length是否过短或过长repetition rate是否出现长 CoT 重复general ability普通问答是否退化safety refusal是否过拒答或不拒答尤其要警惕一个假象模型会模仿“推理样子”但不一定真的推理正确。所以 evaluation 必须看最终答案正确率而不是只看回答是否像 R1。9. 推荐学习路径推荐方案先学 DeepSeek-R1-Distill 的 SFT 蒸馏路线适用条件你想快速理解后训练你显存有限你想训练 1.5B / 7B 模型你希望流程可控、可复现。核心收益数据构造能力 训练脚本能力 过滤策略 模型结构修改 评估闭环 单次训练效果备选方案SFT 蒸馏完成后再用 GRPO 做可验证任务增强适用条件你有稳定的数学/代码题 reward你能承担 rollout 成本你已经有较好的 SFT checkpoint你想学习 R1-Zero 式 RL。trade-off效果上限更高但工程复杂度和失败概率明显更高。10. 一个关键判断DeepSeek 蒸馏模型最值得你学的不是“怎么把大模型变小”而是这套后训练思想强 teacher 生成候选 → 自动/半自动过滤 → 构造高质量 SFT 数据 → 小模型模仿 → 评估错误 → 补充难例 → 必要时再做 preference / RL这也是现阶段个人和小团队最现实的后训练路线。完整复现 DeepSeek-R1 的大规模 RL 成本很高但复现一个小规模 R1-style distillation pipeline是完全可落地的。