最近deepseek爆火,其论文中的蒸馏技术也引起了大家的广泛关注。本文根据deepseek R1论文对其中对蒸馏技术进行讲解。
原论文地址:https://github.com/deepseek-ai/DeepSeek-R1/blob/main/DeepSeek_R1.pdf
在大语言模型(LLM)的训练过程中,蒸馏(Distillation)技术是一种常见的优化手段,能够让小模型学习大模型的能力,提升推理质量和泛化能力。DeepSeek R1 作为最新的推理优化框架,在强化学习(RLHF)训练后的 SFT(监督微调)阶段,引入了独特的蒸馏方法,从而提高模型的推理能力。
那么,DeepSeek R1 是如何利用蒸馏技术优化推理能力的呢?本文将深入解析其核心方法(全网最细解析)。
蒸馏(Distillation)通常指的是 知识蒸馏(Knowledge Distillation, KD),即让一个较小的学生模型(Student Model)从较大的教师模型(Teacher Model)中学习知识,从而在计算成本更低的情况下,获得类似能力。
传统蒸馏的方式:
• 硬标签(Hard Labels):让学生模型直接模仿教师模型的输出结果(类似于监督学习)。
• 软标签(Soft Labels):让学生模型学习教师模型的输出概率分布,以保留更多信息。
• 中间特征蒸馏:让学生模型学习教师模型的中间层特征,提高对复杂任务的理解能力。
DeepSeek R1 的蒸馏方式
直接使用 DeepSeek-R1 生成的 80 万条数据,对开源模型(如 Qwen 和 Llama)进行微调。数据集的生成方式分为两个主要阶段:推理数据生成和非推理数据生成 。最终,将这两类数据结合起来,用于对目标模型进行监督微调。
推理数据
推理数据是整个微调过程中最重要的部分,因为它直接影响模型的推理能力。具体步骤如下:
生成候选推理轨迹:精心构建并挑选推理提示,使用Deepseek R1针对每个输入提示生成多个推理轨迹(reasoning trajectories)。这些推理轨迹是模型基于提示生成的逻辑推导过程。对于每个提示,采样多个响应,并仅保留正确的答案。
筛选高质量样本:这里Deepseek R1生成对的推理数据不再仅限于基于规则来评估内容,而是引入了生成式奖励模型(Generative Reward Model, GRM)。具体来说,论文中将真实答案(ground-truth)和模型预测结果输入到DeepSeek-V3中进行判断(给一个评分),从而筛选出高质量的推理轨迹。也就是说这里使用了奖励模型,也就是DeepSeek-V3,来筛选出高质量的样本数据。
这里有人可能就会有疑问:为什么不直接用 Ground Truth 进行 SFT?
A:因为许多数据集的 Ground Truth 仅包含最终答案,而没有提供完整的推理过程。
数据清洗:在生成推理轨迹的过程中,模型输出有时会显得混乱且难以阅读。为了解决这一问题,过滤掉了以下几类低质量数据:
- 混合语言的链式思维(Chain-of-Thought, CoT);
- 过长的段落;
- 包含代码块的内容。
非推理数据生成
除了推理数据外,还需要增强模型在其他领域的表现,例如写作、角色扮演、翻译等通用任务。这里的非推理数据由三部分组成:
- 论文中采用了DeepSeek-V3的管道,并复用了其部分SFT数据集。
- 对于某些非推理任务(如写作或事实问答),会先生成一个潜在的链式思维(CoT),然后再回答问题。
- 对于简单的查询(如“hello”),不会提供CoT,而是直接生成简洁的回答。
通过上述步骤得到了800k条训练样本(包括600k推理样本和200k非推理样本)。使用这些高质量样本直接对开源的小型模型(如Qwen和Llama)进行微调,从而赋予这些小型模型类似于DeepSeek-R1的强大推理能力。这种方法简单高效,能够显著提升小型模型的性能,同时保持其高效的部署优势。
另外论文中还提到,对于蒸馏后的模型,研究团队仅采用了监督微调(SFT)的方式,并未引入强化学习(RL)阶段。尽管加入RL可能会显著提升模型的性能,但研究的主要目标是验证蒸馏技术本身的有效性,而非追求模型性能的极限。因此,RL阶段的探索被留给了更广泛的研究社区。
💡 以上内容仅代表我个人对论文的理解和解读,难免存在疏漏或不够准确的地方,欢迎在评论区讨论和指正! 🚀