3小时极速蒸馏 DeepSeek-R1
一、背景
在今年1月末,DeepSeek再度抛出了一个重磅消息:“蒸馏小模型超越OpenAI o1-mini”。按官方公布数据,通过 DeepSeek-R1 的输出,蒸馏了 6 个小模型开源给社区,其中 32B 和 70B 模型在多项能力上实现了对标 OpenAI o1-mini 的效果,R1-Distill-Qwen-7B 在 AIME 2024 上得分 55.5%,远超 QwQ-32B-Preview;R1-Distill-Qwen-32B 更是取得了 72.6%的惊人成绩。
这一技术突破不仅让业界眼前一亮,更为开发者提供了一条低成本、高效率的模型优化路径:将R1的推理能力蒸馏到小型模型中,比直接在这些小型模型上应用强化学习效果会更好。要知道,蒸馏过程不需要对模型架构进行修改,减少了开发成本,并且比从头训练一个同规模的模型要节省大量的计算资源。
如今,开发者通过百度智能云千帆ModelBuilder,只需要3个小时,就能把强大的DeepSeek R1模型知识蒸馏到轻量级模型中,让自己的AI应用性能大幅提升,成本还超低。
本文将深入解析如何利用百度智能云千帆ModelBuilder完成全流程的模型蒸馏能力,并通过实战展示DeepSeek-R1蒸馏再训练轻量级模型ERNIE Speed的过程和效果。
二、什么是模型蒸馏
通俗来讲,模型蒸馏就是让一个效果较好的、庞大“教师模型”,将知识“传授”给一个较小的“学生模型”的训练,使得学生模型在参数量和计算复杂度较低的情况下,尽可能接近甚至超越教师模型的效果。
那么问题来了,如何精准验证“学生”真的学到了“教师”的本领?
为了精准验证蒸馏效果,我们选择了一个硬核场景——“数学竞赛”。
三、数学竞赛场景描述
为了显著体现出使用千帆蒸馏DeepSeek-R1的效果,本文选取数学竞赛场景进行实验,对整体的模型能力对比进行验证。因为数学竞赛试题有一定难度,且数学问题通常具有明确、唯一的正确答案,不像一些文本生成的任务可能存在多种合理的解释或表达方式。例如,在求解方程时,答案是唯一确定的。这使得可以通过模型给出的答案与正确答案直接对比,精确地评估蒸馏前后模型的计算和推理准确性,能清晰地判断蒸馏后得模型是否真正掌握了相关数学知识和解题方法。
特别的,R1模型支持长达数万字的反思与验证过程,在推理时能通过 “深度思考” 模式展现完整的推理路径,可对复杂问题进行深入、全面的分析,远超传统模型,我们希望蒸馏后的ERNIE Speed模型同样也具备一定的思考能力。对此,由于数学推理的场景要求严谨的逻辑性,且每一步都需要有合理的依据和推导。我们可以通过观察蒸馏后的模型在解决这类问题时能否进行正确、严密的逻辑思考,来验证模型蒸馏的整体效果。
1、场景举例
如以下问题:“同学们一起去划船,但公园船不够多,如果每船坐 4 人,会多出 10 人;如果每船坐 5 人,还会多出 1 人。共有几只船?”
该问题需要大模型具备理解实际情境,将情境问题转换为数学等式,并且需要有一定的逻辑推导能力,可以基于生成的答案对问题反推进行验证。
2、学生模型遇到的问题
使用基础模型ERNIE-Speed-Pro-128K直接进行问题的解答,其仅仅使用了尝试法对问题进行求解,缺乏将情境问题转换为数学等式的能力,并且该大模型没有思考能力可以对答案反复进行验证,最终的答案也出现了错误。
输入 | ERNIE-Speed-Pro-128K输出 |
---|---|
同学们一起去划船,但公园船不够多,如果每船坐 4 人,会多出 10 人;如果每船坐 5 人,还会多出 1 人。共有几只船? | 这个问题可以通过简单的数学计算来解决。 首先,我们知道如果每船坐4人,会多出10人没有船坐。这意味着总人数比4的倍数多10。 其次,如果每船坐5人,还会多出1人没有船坐。这意味着总人数比5的倍数多1。 我们可以尝试找到这样一个数,它既是4的倍数加10,又是5的倍数加1。这个数就是总人数。 通过尝试和计算,我们可以找到这个数: 第一个满足条件的数是 4×4 + 10 = 26。但是26除以5的余数是1,不满足第二个条件。 第二个满足条件的数是 4×9 + 10 = 58。58除以5的余数是3,也不满足条件。 第三个满足条件的数是 4×14 + 10 = 78。78除以5的余数是3,同样不满足条件。 第四个满足条件的数是 4×19 + 10 = 90。90除以5的余数是0,满足条件。 所以,总人数是90人。 接下来,我们要找出有多少只船。根据第一个条件,如果每船坐4人,会多出10人没有船坐。所以,船的数量是 (90 - 10) ÷ 4 = 20只。 综上所述,共有20只船。 |
3、任务挑战
本次蒸馏任务面临几个主要挑战,包括但不限于:
- 使ERNIE-Speed-Pro-128K模型具有深度思考能力:希望通过蒸馏的方式使得ERNIE-Speed-Pro-128K模型具备与R1模型接近的逻辑推理能力,使得其在复杂问题上也可以保持逻辑性,进行正确、严密的逻辑推理。
- 准确解答数学问题:原学生模型在复杂的数学问题上表现较差,希望蒸馏后的模型可以在具有难度的数学问题上有着较好的表现。
四、基于R1蒸馏训练ERNIE Speed具体步骤
1、构建蒸馏数据
为了保证模型蒸馏的效果,我们需要构建高质量的原始数据,不仅需要有着典型突出的样本且难度应该由易到难递进,进而使得DeepSeek-R1的能力得到充分释放,易于学生模型学习。
对此,我们采样公开数据集 s1 及 Math-Step-DPO 的部分数据,采样后的数据共计7489条,用于构建蒸馏数据。在构建蒸馏数据时,蒸馏任务会使用选择数据集的Prompt字段。准备数据示例的Prompt字段如下:
[{"prompt": "如果弗莱彻先生雇了两名工人在他的大院里挖井,第一天他们工作了10个小时,第二天工作了8个小时,第三天工作了15个小时后完成了工作,每人每小时工资为10美元,他们总共能拿到多少钱?"}]
数据准备完成后,可选择千帆平台的通用数据集功能,点击创建数据集将数据导入到千帆共享存储中,从而保存为一份可以用于蒸馏的数据集。导入后,在平台上选择模型蒸馏功能,进入到模型蒸馏的流程。
为了让学生模型更好的学习到教师模型思考能力,在教师模型版本中选择DeepSeek-R1,并且打开思维链内容按钮,支持训练模型的思考内容。
2、训练学生模型与发布模型
千帆平台预置了多个学生模型支持用户选择,这里我们选择的是ERNIE-Speed-Pro-128K作为蒸馏任务中的学生模型,该模型是百度自主研发的大语言模型,模型基于海量高质量数据训练,具有更强的文本理解、内容创作、对话问答等能力。为保证学生模型的学习效果,我们选择了全量更新方法进行训练。参数配置中,一般使用默认的参数值进行训练即可,平台中的默认参数是多次实验的经验结晶。为了让模型效果更好的拟合,我们进行了多组实验以验证最后的蒸馏结果。验证集作为评估训练过程中依赖的数据,我们选择5%的数据比例,用于评估整体学生模型的训练效果。这里的5%,指的是选择生成后的蒸馏数据的5%作为验证集。
您可以选择开启自动发布,发布的蒸馏后模型可以直接进行后续的评估以及部署。
3、查看蒸馏任务详情
千帆平台将各环节的状态做了拆解,在蒸馏数据构建完成后,您可以在任务详情中查看到构建好的蒸馏数据。
在整个的蒸馏任务完成后,您可以查看具体的学生模型训练效果。
4、蒸馏模型效果评估
4.1 创建自动评估任务
千帆平台提供了模型评估功能,用于全⽅位评价⼤模型的输出效果,提供⾯向事实类或开放性问答的多种打分模式。对此,我们在模型评估中创建自动评估任务,评估蒸馏模型的输出效果。
我们采样部分公开的GSM评估数据集以及TAL-SCQ评估集做效果的验证。基于这些数据,我们对比了蒸馏前的ERNIE-Speed-Pro-128K、蒸馏后的ERNIE-Speed-Pro-128K以及DeepSeek-R1的表现。
在创建自动评估任务中,我们选择新建推理结果集,在待评估模型选择训练后的模型,输入数据集选择模型蒸馏样板间-SCQ评估数据集。
评估方法配置中,我们选择自定义评估指标作为评估方法,依靠自动裁判员进行打分,选择ERNIE-4.0-Turbo-8K作为裁判员模型对模型打分。为了满足我们自身的评估需求,我们选择新建Prompt对模型进行具体打分。
点击新建,可以进入到新建打分Prompt界面,在界面中我们可以配置裁判员角色身份设定,将其调整为:“你是一名公平且专业的评审员,需要对给定的 【用户的问题】、【参考的回答】和【助手的回答】进行对比分析。 ”
评估指标设定如图,定义三个评估指标,分别为语言一致性、内容一致性、答案一致性。配置如下:
评估指标 | 量级 | 指标说明 | 最大量级说明 | 最小量级说明 |
---|---|---|---|---|
语言一致性 | 1 | 助手的回答是否使用了与用户的问题相同的语言 | 助手的回答使用了与用户的问题相同的语言。 | 助手的回答没有使用与用户的问题相同的语言。 |
内容一致性 | 1 | 助手的回答与参考的回答是否在核心内容和主要信息上基本一致 | 忽略中英文表述的差异,内容上基本一致。 | 忽略中英文表述的差异,内容上不一致。 |
答案一致性 | 1 | 助手的最终答案与参考的最终答案是否在和主要信息上一致 | 助手的最终答案与参考的最终答案在主要信息上基本一致。 | 助手的最终答案与参考的最终答案在关键信息和主要内容上完全不一致。 |
4.2 分析自动评估结果
开启模型评估后,具体的打分情况如下:
实验结果 | 直接调用ERNIE-Speed-Pro-128K | 调用蒸馏后ERNIE-Speed-Pro-128K | 调用蒸馏后ERNIE-Speed-Pro-128K | 调用蒸馏后ERNIE-Speed-Pro-128K | 调用蒸馏后ERNIE-Speed-Pro-128K | 直接调用DeepSeek-R1 |
---|---|---|---|---|---|---|
--- | --- | 实验1 迭代轮次=3 学习率=3e-5 |
实验2 迭代轮次=3 学习率=1e-5 |
实验3 迭代轮次=5 学习率=1e-5 |
实验4 迭代轮次=5 学习率=3e-5 |
--- |
语言一致性 | 0.83 | 0.90 | 0.88 | 0.88 | 0.94 | 0.98 |
内容一致性 | 0.83 | 0.93 | 0.94 | 0.91 | 0.95 | 0.98 |
答案一致性 | 0.84 | 0.91 | 0.94 | 0.92 | 0.94 | 0.95 |
我们观察到,实验4蒸馏的ERNIE-Speed-Pro-128K表现最好,该实验的内容一致性和直接调用DeepSeek-R1接近。与此同时,其他实验采用了多种参数组合,但是是评估结果表明,最后的结果都较实验4差一些。
通过这些指标的对比,我们可以得出结论:在模型蒸馏过程中,ERNIE-Speed-Pro-128K学习到了与R1模型接近的逻辑推理能力,在也可以保持逻辑性,进行正确、严密的逻辑推理。
4.3 模型调用对比示例
发布后的模型支持部署,点击部署即可创建在线推理服务。在创建服务中,选择合适的算力单元进行购买,即可在业务上部署属于您自己蒸馏后的大模型。
部署完成后,您不仅可以调用API实现业务效果,在调用前也可以在体验中心验证模型效果,进而再进行选择。
基于之前输入的问题,蒸馏后的ERNIE-Speed-Pro-128K模型也可以得到有效的、有逻辑推理过程的输出:
输入 | 蒸馏后ERNIE-Speed-Pro-128K模型输出 |
---|---|
同学们一起去划船,但公园船不够多,如果每船坐 4 人,会多出 10 人;如果每船坐 5 人,还会多出 1 人。共有几只船? | <think>嗯,这个问题看起来是关于船的数目和人数的关系。让我仔细读一遍题目,确保我理解正确。题目是说,同学们一起去划船,但公园里的船不够多。如果每船坐4人,会多出10人没有船坐;如果每船坐5人,还会多出1人没有船坐。问共有多少只船? 首先,我需要明确问题中的各个变量。这里有两个未知数:船的数量和总人数。不过题目中只给出了两个条件,所以可能需要用这两个条件来建立方程组,然后解方程得到答案。 其次,假设总共有x只船,总人数为y人。根据题目中的第一个条件,当每船坐4人时,会多出10人没有船坐。也就是说,总人数y等于4乘以船的数量x,再加上剩下的10人。所以可以写成方程:y = 4x + 10。 第二个条件是,如果每船坐5人,还会多出1人没有船坐。同样地,总人数y等于5乘以船的数量x,再加上剩下的1人。所以第二个方程是:y = 5x + 1。 现在我有两个方程: 1. y = 4x + 10 2. y = 5x + 1 因为这两个方程中的y应该相等,所以可以把它们联立起来: 4x + 10 = 5x + 1 接下来解这个方程。首先减去4x两边: 10 = x + 1 然后两边减1: 9 = x 所以x = 9。 然后代入其中一个方程求y: y = 4 X 9 + 10 = 36 + 10 = 46 或者代入第二个方程: y = 5 X 9 + 1 = 45 + 1 = 46 所以总人数是46人,船的数量是9只。让我验证一下是否正确。 首先,当船数为9只,每船坐4人时,总载客量是4 X 9=36人,剩下的人数是46-36=10人,符合第一个条件。当每船坐5人时,总载客量是5 X 9=45人,剩下的人数是46-45=1人,符合第二个条件。所以答案正确。 不过,我是不是哪里考虑错了呢?比如是否存在其他可能的解?或者是否有其他可能性需要考虑? 比如,是否存在船的数量不是整数的情况?不过题目中显然船的数量必须是整数,所以x=9是正确的解。再检查一遍计算过程是否正确: 第一个方程:4x +10 = y → y=46;第二个方程:5x +1= y → y=46;所以确实联立方程得到x=9,没问题。验证正确。 所以最终的答案应该是共有9只船。</think> <answer>根据题目条件,设共有( x )只船和( y )人。 - 当每船坐4人时:\( y = 4x + 10 \) - 当每船坐5人时:\( y = 5x + 1 \) 联立方程解得: \[ 4x + 10 = 5x + 1 \] 解得\( x = 9 \)。代入任一方程得( y = 46 )。 验证: - ( 4 \times 9 + 10 = 46 ) - ( 5 \times 9 + 1 = 46 ) 均符合条件。 答案:共有(\boxed{9})只船。</answer> |
根据上述蒸馏后模型的回答可以看出,模型蒸馏使得学生模型学习到了DeepSeek-R1的思考能力,可以学到与R1模型接近的逻辑推理能力,使得其在问题上也可以保持逻辑性,进行正确、严密的逻辑推理,准确回答出了9只船。
五、小结
百度智能云千帆 ModelBuilder 始终致力于为用户提供全流程、一站式的 AI 服务。除了强大的模型资源,还匹配了完善的一站式模型效果调优工具链,包含数据处理、模型精调、模型评估、模型量化等关键环节,助力企业根据自身业务需求深度优化模型性能。
此外,千帆 ModelBuilder 具备卓越的模型推理托管能力,支持 vLLM、LMDeploy、TensorRT-LLM、SGLang 等各类主流推理框架,还支持模型的自定义导入与部署,为开发者提供了高度灵活的开发环境。