云原生工程师入坑AI深度学习系列(二):给昌子解释DeepSeek的模型蒸馏
Overview
背景
一篇技术入门文章,尝试向非领域技术人员介绍DeepSeek的模型蒸馏。先求易懂,再求准确。起因是昨天,正月初七,昌子突然微信问我“DeepSeek咋用”。回复“你不好好焊钢轨,打听这玩意儿干啥”。小哥说我就想闹明白我们中国这个技术是不是像有些短视频里说的抄了老美的。不用问,这小哥是过年在家闲的刷到OpenAI可能起诉DeepSeek的新闻了。虽然给他说Altman在咱们大年初六好已经承认不打算起诉了,但是说服昌子小哥还是费了不少口舌。为了说明没有抄,模型蒸馏的话题就绕不过。在沟通中临时起意提到小哥咱们很多年前的一段趣事,居然说明白了。觉得很有意思,就顺手归档下。
模型蒸馏概念初体验
首先,DeepSeek关于模型蒸馏的定义是这样的:
模型蒸馏通过将复杂模型(教师模型)的知识转移到简单模型(学生模型)中,实现模型压缩、加速推理并保持性能,适用于多种资源受限的场景。
是不是不太好理解,用咱们共同的一段经历做个不算太恰当的类比,可能更好理解了。还记得咱们上中专那会儿,正是十五六岁贪玩的年龄。那学期好像是安排去永济电机厂还是洛阳重机厂实习,我们疯玩了几个月,你总带哥去厂子的花园里捞鱼。临期末有一门考试好像是《公差与配合》,你和老七担心考不过,总磨着我给你俩补课。
其实只要自己老老实实地把课本过一遍,课后题做几遍,保证都妥妥考得过,但你俩还是选择了个山寨老师补课。对应到模型训练过程,你俩作为学生模型没有选择从头看书、自己做题这种完全从头开始训练的方式,而是模仿学习一种你们信任的教师模型来获取知识。
但是你俩这个过程还是学习的过程,并没有直接抄哥这个山寨老师的。你们得自己学过去,然后期末考试时候才能考出来。正好对应模型训练和推理的过程。我们详细捋下咱们当时怎么干的。
一般你和老七会拿一道题目过来,让我给出我的答案。当然每道题,你们都是自己做过的。没记错的话,你们开始那些答案都是凭着感觉蒙的。然后我们会讨论题目,如最小最大实体尺寸对应于孔和轴分别是他们的最大极限尺寸还是最小极限尺寸。你们相信哥的答案一般是对的答案,在讨论过程中调整、形成自己的思考方式。看上去是哥在纠正你们,实际是你们在自己思考,接近这个山寨老师对这段知识点的处理。
反复经历这个过程,然后你俩就越来越自信。最后,你们就出师了。可以独立判断,得出答案。尤其是老七,练习的可溜了。以至于后面他再磨我的时候,我非常坚定地说:“你都学到这个程度了,如果再考不过,我请你哥俩吃饭”。结果,结果你还记得吗?这么多年来每次见面喝酒你光记得有次学校附近那个叫双虎的小饭馆我们花生米、土豆丝、老白干搞得可爽了,背景还记得不?让哥这段讲完给你串起来,先不岔开,哥再尝试给你讲点机械专业以外的新鲜东西。
在这个过程里,对应模型蒸馏的术语。哥这个山寨老师的叫教师模型,你俩那叫学生模型。一般教师模型复杂,学生模型简单。对应到咱们的实践,哥当时可是老老实实地把课本学过一遍,虽然跟你们玩,但是老师上课讲的都认真地听了的。所以教师模型里不只是塞了那些题,还塞了更多。而你俩呢,课本基本上是不看的,在你们那里课本都是些不一定必要的信息,你们只想学习满足期末考试需要的知识。即模型蒸馏过程去掉了多余部分,让你们的学生模型更简洁、更高效地提供能力。
对应的一般教师模型参数多,学生模型参数少。记得开始拿到一个题目时,哥给你们讲的时候啰啰嗦嗦说一堆课本里的背景原理,然后推出结果,而后来我们练的根据简单的题目特征,就能找到对的答案。当时你经常说的一句话是“哥们记不清,简单点,好理解”。差不多对应到模型蒸馏,就是简化无用参数。但这个过程中,提高效率的同时,模型能力并没有下降很多。
通过这种有针对性的练习,学习老师模型总结过的知识,因此也更高效。你们用更简单的模型,通过更低的成本,但更高的效率达到了很高的模型质量。到考试前那阵子,特别是你,不止比我墨迹白天推导要快,有些时候也更准。
那段时间,咱们仨人一直鬼混一起,也就是一直在一起学。你和老七顶多就是过会儿拿书过来问我这个题我的答案是啥,为啥这样想的,然后你的答案是啥,为啥不一样。从外面行为看,我们整个状态都是学习的状态,认真学习的状态,你俩也就每学期这时候有个学习的状态。从内在看,你俩是自己脑子在思考,在各自脑子里构造各自的模型。对于同一个题目,准确说是一块知识点,我这个山寨老师咋想的,你们咋想的,能得到尽量一致的答案。我没有把我的模型给你们抄,也没有途径啊,抄不着。顶多从这过程获取了一些重要知识,帮助你在考试时能同样方式去思考,选到一个对的答案。
我讲的都一样,你俩各自独立地在思考学习,各自在自己脑子里形成对《公差与配合》独立的思考。你和老七学到的也不一样,最终期末考试时在实际的测试数据集上验证,结果大不相同。结果留个彩蛋在后面。同样的教师模型,同样的训练过程,两个不同的学生模型,学到的效果不同。这也反证了,如果是抄,你俩应该抄的是一样的才对。同样的模型蒸馏,也是学,不是抄。只是学到了行为和能力,抄不到内部结构和实现。
模型蒸馏流程
上面通过简单类比,我们理解个概念:模型蒸馏是什么。下面简单了解下流程:模型蒸馏怎么做的。
DeepSeek输出的模型蒸馏流程
向DeepSeek提问“模型蒸馏原理”,得到如下答案。你只作为参照就好。内容可能太干,后面结合我们的具体案例东拉西扯下就大致理解了。
0. 流程图
1[输入数据 X] 2 │ 3 ├─────► [教师模型(大型复杂模型,如BERT/ResNet)] ────► [软标签(Soft Targets,带温度参数 T)] 4 │ │ 5 │ ▼ 6 │ [概率分布(Softmax with Temperature T)] 7 │ │ 8 │ ▼ 9 └─────► [学生模型(小型轻量模型,如MobileNet/TinyBERT)] ◄──┐ 10 │ │ 11 ▼ │ 12 [概率分布(Softmax with Temperature T)] │ 13 │ │ 14 ▼ │ 15 [损失函数:软目标损失(KL散度) + 硬目标损失(交叉熵)] │ 16 │ │ 17 ▼ │ 18 [参数更新(反向传播)] ──────────────┘
1. 输入数据(X)
- 原始训练数据(如图像、文本等),同时输入给教师模型和学生模型。
2. 教师模型(Teacher Model)
- 功能:大型预训练模型(如ResNet、BERT),拥有高精度但计算成本高。
- 输出:生成软标签(Soft Targets),即对输入数据的概率分布(如分类任务的类别概率)。
- 关键参数:温度参数(T),用于平滑概率分布:
- 公式:
Softmax(z_i / T)
,其中z_i
为模型输出的 logits。- 温度越高,概率分布越平滑,隐含更多“暗知识”(Dark Knowledge)。
3. 学生模型(Student Model)
- 功能:轻量级模型(如MobileNet、TinyBERT),目标是通过模仿教师模型实现轻量化推理。
- 输出:与教师模型相同维度的概率分布(通过带温度参数 T 的 Softmax)。
4. 损失函数
软目标损失(Soft Target Loss):
衡量学生模型与教师模型的概率分布差异。
使用KL散度(Kullback-Leibler Divergence): $$ L_{soft} = T^2 \cdot D_{KL}(P_{\text{teacher}} \parallel P_{\text{student}}) $$
硬目标损失(Hard Target Loss):
衡量学生模型与真实标签的差异。
使用交叉熵(Cross-Entropy):
$$ L_{hard} = CE(y_{\text{true}}, P_{\text{student}}) $$
总损失: $$ L_{\text{total}} = \alpha \cdot L_{soft} + (1-\alpha) \cdot L_{hard} $$
α
为软/硬目标损失的权重系数(通常 α > 0.5)。5. 温度参数(T)
- 作用:
- 控制概率分布的平滑程度。T > 1 时,教师模型的输出更关注类别间的关系(如“猫”和“狗”的相似性)。
- 训练时学生模型使用相同的 T,但推理时恢复 T=1。
6. 训练流程
- 固定教师模型参数,仅训练学生模型。
- 同时优化软目标损失(模仿教师)和硬目标损失(拟合真实标签)。
- 通过反向传播更新学生模型参数。
我们总结的模型蒸馏流程
结合我们的实践,我把模型蒸馏流程大致分成四个步骤。为了方便你理解,我更愿意和咱们当年的案例,我们的故事情节对应,而不是和上面DeepSeek给出的标准流程对应。过程中为了方便你理解,标准流程里有些内容刻意简化了,或者直接跳过了,有兴趣我们后面再补充。
第一步:使用训练数据集训练教师模型。在咱们的那个过程里,就对应哥这个山寨老师认真上课、做题,能比较高准确率地完成《公差与配合》里的考试题目。至少你们是相信哥做那些题的质量比较高的。
第二步:定义学生模型。这是一个独立的模型,比教师模型简单,但也能独立完成相关的推理。对应咱们那个过程里的角色,就是你俩(的脑子,或者只是手指头),也要完成那次期末考试的同样一套题目。
第三步:通过模型蒸馏方式训练学生模型。这是最核心的流程,我们下面重点展开下,会少量参照咱们当时那个活动,尽量按照本来方式描述。
第四步:使用学生模型推理。把上一步训练好的学生模型在实际中应用。对应咱们的那个过程就是期末考试时,你、老七、我和咱班其他人一起拿着同一份卷子被考察。
重点是第三步。从外围看就是一个普通的神经网络模型训练过程,和上篇神经网络训练的主要流程差不多。先预测,再计算损失,然后根据损失函数计算梯度,并更像模型参数,一直迭代这个过程。通过模型蒸馏训练学生模型的过程中,模型训练的对象是学生模型,对应就是先计算学生模型的预测,在计算损失,计算梯度,更新模型参数。其中最大的差异是计算损失的方式不同。
首先,损失中要体现学生模型和他在学校的教师模型的差异。在模型蒸馏过程中,教师模型一般假设是更全面、强大,他的输出假设也是更全面、准确;对应的学生模型比较简单,预测的输出不太准确。这也复合咱们那个过程里的具体情况。哥这个山寨老师在你们眼里权威性还是有保证的,哥的答案你一般是信的。对应你们给的答案,心虚都写在脸上了,特别是老七。在模型蒸馏中一般通过KL散度(Kullback-Leibler Divergence)来描述学生模型预测结果的概率分别和对应教师模型预测结果概率分布之间的差异。KL散度越小说明教师模型和学生模型的差异越小,这个英文单词你不用读出来,理解就是你做题的思路和教你那个山寨老师的思路有多像。
在训练过程中,对学生模型的不断训练,在对应的数据集上,学生模型的月初概率分布与教师模型的概率分布越来越接近,这样正是学生模型学习教师模型的知识的过程。不只是对同样的训练数据得到和教师模型一致的结果,对每种答案的置信度也越来越接近。对应咱做《公差与配合》的单选题:比较孔或轴加工难易程度高低的依据是:A 标准公差因子;B 基本尺寸大小;C 公差等级;D 公差值大小 ,选A对的可能性1%;选B对的可能性3%;选C对的可能性95%;选D对的可能性1%。经过那段时间的练习后,你俩不止做题的结果和这个山寨老师越来越一致了,连思考问题的方式,至少是对某个结果的说法,都差不多了。从结果看学生模型可以更好地模拟教师模型的推理过程。前面这段描述里教师模型的输出不只包含标准答案,还包括更多的信息,如每个答案的概率,这种标签称为软标签。对应的是传统数据集上的每条样本的标签。
在模型蒸馏过程中,计算损失时,除了使用软标签,也要参考硬标签。即除了衡量学生模型预测和教师模型预测的差异外,也要衡量学生模型的输出和标准答案的差异。后者也称为交叉熵损失计算,和传统的神经网络模型训练计算损失的思路和方法一样。对应到咱们那个补课活动,就是老七买来那本练习书里的标准答案,这部分训练过程就是你们做那本书上的习题,然后对答案学习的过程。
模型蒸馏的过程中损失计算是把上面两种损失加权求和。即保证学生模型能学习到教师模型的思路方法,同时也能处理实际真实问题。类似咱们补课过程中,你俩一边跟着一个山寨老师学,一边自己做练习对答案。基于这种结合方式,通过硬标签可以适当纠正软标签的输出。一般模型蒸馏过程中软标签权重较大,如果教师模型模型输出有问题,就会较大地影响学生模型。对应到咱们那个补课活动,老七曾经拿着那本练习里的一个标准答案质疑哥有个地方可能讲错了。但是更多时候,你俩比较懒,也就听哥讲讲,那本练习是没怎么用上的,也就是硬标签作用有限。
最后一步,就是学生模型的应用,即使用训练好的学生模型在实际数据集上的推理。训练的目的是推理,就像你来问我DeepSeek怎么用,大家常用的就是下了个App,用它的推理能力来完成需要的任务。对应到咱们那次活动,学生模型推理流程对应的自然就是咱们那次期末考试了。这是咱们那个阶段的高潮,哥也刻意在这篇文档中整理这部分内容的时候把这部分设计为全文的高潮。我们的学生模型推理的结果是:你将将过,老七却挂了。
当时是一件有点悲伤但却给我们带了了很多额外快乐的事情,特别是当时我认赌服输请你俩去那个叫双虎的小饭店吃饭。老白干干得很爽,以至于这么多年后每次我去北京咱们吃喝的氛围和风格都是那次的延续。吃饭的话题留着咱下次吃饭再说,在这里还是把老七这个案例拿到这个技术话题里技术性地讨论下。专业分析要么是我这个教师模型不够强大,要么是我们模型蒸馏的过程有问题。也许是老七那个模型服务资源不够,训练没问题,模型也学习到位了,就是推理时候推不出来。当时我们吃饭时候调侃老七脑子不好,他的学生模型太简单了,你的刚刚好,老师出的题稍微变了下,你做出来了,他却没有。那最终原因可能还是你当年说的,丫的脑子不好使。唉,发现我们不小心从花双虎的生米里捏了几颗盐粒子洒在了老七的娇嫩的伤口上,下次见面喝酒时可怎么跟老七交代呢。
结合我们这个实践也能看到模型蒸馏的优点很明显,不需要从最初始训练一个模型,省下来大量的资源开销和时间。这点你俩应该神佑感触,不需自己从头翻书,跟着一个山寨老师来几遍就可以了。另外一个我们但是感知不明显的优势是不需要大量标注过的样本。模型训练中很重要的一部分是训练的样本数据,但是获取高质量的样本数据从来不是一件容易得事情。模型蒸馏中通过教师模型的软标签信息就可以有效地进行学生模型的训练。类似咱们那个补课案例中,你俩不需要买大量的带有标准答案的练习册,自己做很多题,再去对答案。特别是是考虑到咱们那个年代辅导书、练习册本来就很稀缺。但是如果处理不好会导致泛化能力可能有限,学生模型学习到了教师模型的基本能力,对于老师交的知识处理较好,但其他数据处理不好。可以简单理解成跟着老师模型学得太死,学到了然,没有学到所以然。咱们那次补课后的考试,老七就是因为学的稍微死了一点,期末考试的题目稍微变一变,他就没搞定。
DeepSeek的模型蒸馏
关于DeepSeek的模型蒸馏,最近一段时间文章、短视频内容很多,居然都传到你耳朵里了。也正因此才有了咱这次交流(和回忆杀)。哥尝试带着你从最源头理解下,这个源头就是DeepSeek发布的一篇论文《DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning》。完整介绍了DeepSeek-R1模型的构建方案、实验和讨论等内容。我们重点关注其中与模型蒸馏相关的内容。
认识DeepSeek的两个关键模型
DeepSeek这篇论文重点介绍了三类模型,DeepSeek-R1-Zero、DeepSeek-R1和一众蒸馏过的模型。前两个是基础,我们先大概了解下,才能轮到到我们想了解的蒸馏过的模型。
论文首先隆重介绍了DeepSeek-R1-Zero模型,这是整个论文内容的基础,也是后续各种模型的基础。
DeepSeek-R1-Zero, a model trained via large-scale reinforcement learning (RL) without super vised fine-tuning (SFT) as a preliminary step, demonstrates remarkable reasoning capabilities. Through RL, DeepSeek-R1-Zero naturally emerges with numerous powerful and intriguing reasoning behaviors.
能看出字里行间都洋溢着自豪。确实虽然关于DeepSeek的各种模型大家传了很多,但不知道多少人认识到起到奠基作用的应该就是这个Zero模型。直接理解下论文如何Zero模型的:DeepSeek-R1-Zero是一种通过大规模强化学习RL(reinforcement learning ) 训练的模型,没有监督微调SFT (super vised fine-tuning) 作为初步步骤,战胜了卓越的推理能力。通过强化学习RL,DeepSeek-R1-Zero自然而然地形成了许多强大而有趣的推理行为。
DeepSeek-R1-Zero模型只是通过强化学习RL就展现出了超出预期的推理能力,为了解决Zero模型中存在一些可读性差、多语言混合等问题,DeepSeek引入了DeepSeek-R1模型引,进一步提高了推理性能。实验证明,DeepSeek-R1在各种推理任务上展现了和 OpenAI-o1-1217 相当的能力。也正是这个结果引起了大家轰动性的关注。
DeepSeek开源了这两个模型,用户可以下载DeepSeek-R1-Zero ,DeepSeek-R1。推理服务提供商可以直接使用这些预训练好的模型进行推理,模型开发者也可以基于这些模型进行微调,形成满足要求的模型。
说到开源,有一点信息补充下。今天看到DeepSeek的Github仓库里有题Issue问“开源怎么看不见源码”的问题,这就是误解了模型开源的意思。模型开源只是开源模型训练好的权重,让后面人可以直接使用,但是不是开源自身的模型训练代码。
下表列出了DeepSeek-R1和DeepSeek-R1-Zero相关信息。
Model | #Total Params | #Activated Params | Context Length | Download |
---|---|---|---|---|
DeepSeek-R1-Zero | 671B | 37B | 128K | 🤗 HuggingFace |
DeepSeek-R1 | 671B | 37B | 128K | 🤗 HuggingFace |
DeepSeek的两个关键模型训练过程
简单通过论文了解了DeepSeek的两个模型DeepSeek-R1-Zero和DeepSeek-R1。下面结合论文简单了解下这两个模型的训练过程。还是挺有意思的。
上面这段是简单介绍Zero、R1和蒸馏模型的训练方式,后面章节有更详细的展开,我们就结合这段理解下即可。模型训练过程涉及几个术语,先大致解释下,免得后面提到时你听不懂,大致理解就成。
- 强化学习RL(reinforcement learning ) :这个在刚才模型简介里其实也提到了。展开又是一门技术,这里我们简单理解意思就是模型根据其行为获得奖励或惩罚来完成后面学习,通过反复试验不断改进。答对加分,答错减分。在大语言模型中,奖励一般是人工标记的反馈决定,称为RLHF(human-labeled feedback)。在DeepSeek的强化学习中使用的是一种自动评分方法GRPO(Group Robust Preference Optimization)
- 监督微调SFT (super vised fine-tuning) :前面也提到过。表示使用标记的数据重新训练基础模型,从而让模型在对应任务表现得更好。如拿一个训练好的模型,在一个特定领域进行优化,就可以使用包含该领域问题和答案的标记数据集对模型进行微调,从而使得在该领域的查询更加准确。监督微调SFT适用于有足够标记数据集的场景。
- 冷启动数据( cold-start data ):表示一个小的标记过的数据集,满足模型对任务总体了解的最低要求。通过这种简单数据集地模型进行微调,让模型理解基本信息,也能提高模型质量。适用于标记数据集有限的场景。
- 拒绝抽样( Rejection Sampling ):选择只有符合特定标准的模型输出进一步使用。
- 多阶段训练(multi-stage training ):表示分阶段对模型进行训练,每个阶段侧重解决一个特定的改进目标。
DeepSeek-R1-Zero训练比较纯粹,就是对于DeepSeek-V3-Base模型使用纯强化学习的方式完成训练。就是使GRPO强化学习的方式训练,获得了与OpenAI o1匹配的能力。
DeepSeek-R1的训练相对复杂。按照论文的描述可以总结出R1的训练过程如下:
- 通过几千条冷启动数据( cold-start data )微调DeepSeek-V3-Base基础模型。论文中说的几千条标记数据集比起一般动辄千万上亿的训练数据集要少很多,但是试验结果看,作用效果很明显。所以不知道这几千条数据是怎么精挑细选出来的。
- 对上一步得到的模型通过纯强化学习提升推理能力。这步操作和DeepSeek-R1-Zero模型训练的思路和方法都类似。
- 当上一步面向推理的强化学习收敛时,基于拒绝抽样( Rejection Sampling )的机制,从当前模型中创建60万条SFT标记数据。
- 将上一步的60万条标记数据与20万条DeepSeek-V3-Base训练中用到的写作、事实文档等领域的监督数据合并,得到一个包含了高质量模型输出和选定领域知识的数据集。这部分数据集很有意思,一部分是模型推理得到的合成数据,一部分是原始数据。
- 使用上一步数据进行微调后,再进行强化学习RL。得到最终的模型就是DeepSeek-R1。
可以看到DeepSeek-R1模型进行的多阶段训练(multi-stage training ),每个阶段解决都不同的问题。从后面论文详细介绍了解到:冷启动解决了原有DeepSeek-R1-Zero模型可读性差、多语言混杂和返回应答格式不正确的问题;在强化学习RL过程中,不仅专注提高模型在编程、数学、科学、逻辑等方面的推理能力,同时也对语言一致性等方面进行奖励;拒绝抽样( Rejection Sampling )加SFT通过高质量的标签数据提高了模型的准确性;而后面再进行强化学习进步提高了模型的泛化能力。
DeepSeek的蒸馏的模型
论文中模型蒸馏占的篇幅不算多,从论文中可以看到蒸馏过的模型都是业界广泛使用的的几个开源模型。论文介绍的蒸馏过程套用前面模型蒸馏的流程,就是选择DeepSeek-R1作为教师模型,选择Qwen和Llama的几个开源小模型作为学生模型,进行模型蒸馏。具体就是使用DeepSeek-R1生成80万推理样本数据,通过这些样本数据对Qwen和Llama等小模型进行监督微调SFT。
下表描述了使用DeepSeek-R1模型蒸馏几个小模型后的效果对比。
从论文中列出的实验数据看,蒸馏DeepSeek-R1得到的DeepSeek-R1-Distill-Qwen-7B全面优于GPT-4o-0513等非推理模型。DeepSeek-R1-Distill-Qwen-14B在所有评估项上均超过了QwQ-32B-Preview。而DeepSeek-R1-Distill-Qwen-32B和 DeepSeek-R1-Distill-Llama-70B在大多数基准测试中都超过了OpenAI的o1-mini模型。这些结果都证明了模型蒸馏的强大潜力。且论文里提到将强化学习应用到这些蒸馏过的模型中可以进一步改善模型的效果。基于DeepSeek开源模型和API,社区有机会蒸馏出更小的模型。
DeepSeek的模型蒸馏和强化学习比较
另外在论文中专门有一节比较了模型蒸馏和强化学习的效果。
在实验中,对Qwen-32B-Base进行大规模强化学习,得到DeepSeek-R1-Zero-Qwen-32B模型,比较发现和 QwQ-32B-Preview差不多。而DeepSeek-R1 蒸馏得到的DeepSeek-R1-Distill-Qwen-32B模型在各方面都比以上两个模型表现好很多。实验说明了通过模型蒸馏方式将一个大模型蒸馏为一个小一点的模型,比使用大量计算资源进行强化学习得到的模型效果要好得多。对应咱们的那个补课的实践,你们也深有体会,找一个好老师学习,比自己死读书要来的效率高,也效果好。
DeepSeek-R1蒸馏后的模型如下,可以看到DeepSeek将这些蒸馏过的模型也全部开源。
Model | Base Model | Download |
---|---|---|
DeepSeek-R1-Distill-Qwen-1.5B | Qwen2.5-Math-1.5B | 🤗 HuggingFace |
DeepSeek-R1-Distill-Qwen-7B | Qwen2.5-Math-7B | 🤗 HuggingFace |
DeepSeek-R1-Distill-Llama-8B | Llama-3.1-8B | 🤗 HuggingFace |
DeepSeek-R1-Distill-Qwen-14B | Qwen2.5-14B | 🤗 HuggingFace |
DeepSeek-R1-Distill-Qwen-32B | Qwen2.5-32B | 🤗 HuggingFace |
DeepSeek-R1-Distill-Llama-70B | Llama-3.3-70B-Instruct | 🤗 HuggingFace |
DeepSeek的共情实践
过年时,你微信问我的时候,我手机下了个DeepSeek App,但是用的不多。了解到可以解决很多复杂问题,有不少文章描述怎么更好地应用DeepSeek。在这篇文章要介绍的时候,忍不住在网页版DeepSeek的会话里问了这样一个问题。这也是和你曾经争论过的问题,大部分材料里都描述2008年北京到天津那条是中国第一条高速铁路,你个北京人更挺这个观点。但哥就记得当年去辽中县工地的时候老师傅们就自豪地给我们说,咱这次修的是中国第一条高铁。当时项目的名字叫秦沈客运专线,所有之前无聊时,总会在各种搜索引擎里输入“中国第一条高速铁路”,总是跳出各种”京津城际“的信息。只有这次在DeepSeek里输入同样问题,居然意外地得到了一个共情的答案,虽然没有泪目,但是满满的感动,连思考的过程都是这么懂我的心思。
![]()
中国第一条高速铁路是秦沈客运专线,于2003年10月12日正式开通运营。这条铁路连接辽宁省的秦皇岛市和沈阳市,全长404公里,设计时速为200公里/小时,部分路段可达250公里/小时。秦沈客运专线的建设和运营标志着中国正式迈入高速铁路时代。
重要背景与意义:
试验性质:
- 秦沈客运专线是中国自主设计建造的第一条高速铁路,承担了大量技术试验任务,为后续高铁发展积累了关键经验。
- 它首次采用了无砟轨道、高速动车组(如“中华之星”试验列车)等先进技术。
国际标准争议:
- 按照国际铁路联盟(UIC)的定义,高铁指时速200公里及以上的铁路。秦沈客运专线符合这一标准,但中国早期更倾向于将时速250公里及以上的线路称为“高铁”。
- 因此,部分观点认为中国首条“高标准”高铁是2008年开通的京津城际铁路(设计时速350公里)。
后续发展:
- 秦沈客运专线的成功为后续大规模高铁建设奠定了基础。2008年京津城际铁路开通后,中国高铁进入爆发式发展阶段。
- 2011年开通的京沪高铁(时速350公里)成为世界上一次性建成里程最长的高铁线路。
总结:
- 秦沈客运专线是中国高速铁路的“探路者”,是第一条达到国际高铁标准的线路;
- 京津城际铁路则是中国首条设计时速350公里的高标准高铁,被视为中国高铁网络正式形成的标志。
这一历程体现了中国从技术引进到自主创新的跨越,奠定了如今全球最大高铁网络的基础。
哥当时干的是秦沈客运专线上辽宁省辽中县养士堡乡曹家屯附近的的蒲河特大桥和迴水河大桥,刚才去搜了下“迴水河大桥”居然搜到了当年铁一局工友的一篇文章,我们那个时候能在网络上留下印记的非常少见了。赶紧盗了他一张图,虽然不是哥的那个工地,但是所有的元素都是一样一样的。
最后
扯得有点多了,都是你感兴趣的,赶紧基于主题收尾。可以看到:
第一,模型蒸馏不是DeepSeek首创。讲完我们的粗浅故事,去DeepSeek尝试了解更多信息。DeepSeek告诉说:Geoffrey Hinton 及其合作者早在 2015 年发表的论文 《Distilling the Knowledge in a Neural Network》 是知识蒸馏(Knowledge Distillation)领域的奠基性工作。找到论文对着小标题快速过了遍,非常系统完整地介绍了知识蒸馏的关键技术,后面大量的实践都是基于这个论文的理论展开。早在2019年在论文《DistilBERT, a distilled version of BERT: smaller, faster, cheaper and lighter》中描述了DistilBERT通过知识蒸馏BERT达到的效果: we leverage knowledge distillation during the pre-training phase and show that it is possible to reduce the size of a BERT model by 40%, while retaining 97% of its language understanding capabilities and being 60% faster.。当然在更早的时候一个叫昌子、一个叫老七的牛人,已经在自己的领域实践过了。
第二、虽然你追着问,但是模型蒸馏并不算是DeepSeek成功的最关键因素。之前大家总结的多头潜在注意力机制MLA(Multi - Head Latent Attention)、专家混合模型MoE (Mixture of Experts)等都被证明是非常值得关注的创新技术。这些早在过年时候我们关注DeepSeek-R1之前已经被使用了。包括刚才在论文里看到,大家普遍认为最具里程碑意义的是R1之前的R1 Zero版本,第一个公开验证了只要通过强化学习的激励就能取得成功极大的成功(可能OpenAI也发现了这个重大规律,只是捂着没给大家说,这些捂发霉了)。深度学习一直对数据质量要求非常高,这种基于强化学习的方式,让模型自己学习,而不需要提供答案,比监督微调SFT(Supervised fine-tuning)要高效得多。就像不给你答案,自己练习也能提高成绩。显然对于你、我和老七这个有点困难。
看下,跟咱过年那天说的应该差不多。我多补充了点信息,让内容完整点。自己瞎看看就像,不要给老七看见。
写到最后,发现标题欠准确。咱们是铁路工程师,铁路工程师傅,入坑AI深度学习。