DeepSeek爆火,这里简单梳理一下其技术发展脉络和关键贡献,如下图所示。
2023年成立的DeepSeek于2024年1月5日发表了一篇论文,基于长期主义扩展(Scaling)开源语言模型[1],开局展现出高远志向。我们知道大语言模型要经过预训练、有监督微调和强化学习三个阶段。其中预训练最为耗时耗力,大多数小团队限于算力和数据,都基于开源的预训练模型,重心放在后面两步,而DeepSeek第一分钟就从最累的预训练起步,一步一个脚印构建其大语言模型技术大厦。
这篇论文详细介绍了数据构建,架构设计,参数设定和训练框架。其基础设计主要参考了LLaMA,为了省事没有使用强化学习,最后阶段直接使用了简单的DPO(Direct preference optimization)。可以看出,这时的DeepSeek团队和大多数有点钱有算力的团队一样,主要在研究如何从0开始构建一个大模型。但是和一般团队不一样的是,他们花大力气研究了Scaling Laws,即模型性能和增大算力、模型规模和数据之间的关系。DeepSeek团队研究了算力预算和超参数值的关系、模型和数据scaling-up和算力预算的关系,并且指出随着数据质量的提升,在一定算力预算下,我们可以用更少的数据训练更大的模型。这篇论文还观察到一个现象,数学和编程数据集需要更长的微调,但这将损害模型的对话能力,因此提出了分阶段微调的方法,即第一阶段用全数据微调,第二阶段用对话数据微调,这个方法后面一直沿用。显然,这些研究为后续大规模语言模型的训练打下基础,这个版本的DeepSeek 67B和LLaMA-2 70B有的一比,在中文能力上全面领先,而DeepSeek展现的精彩才刚刚开始。
要想用较小的算力支撑一个大模型,MoE(Mixture-of-Experts)是个流行的方法,简单地说,就是将Transformer中的FFN替换为多个小FFN,即专家,推理时只使用有限的专家来节约资源。手上资源有限的DeepSeek也选择了这条路,2024年1月11日,DeepSeek发表DeepSeekMoE[2],针对LLM中使用MoE的问题进行了改进,如下图,通过更细粒度的专家分类来实现更专业的专家,通过一直激活共享专家来统一处理通识知识。
针对大模型强化学习的方法,DeepSeek也进行了改进,于2024年4月27日发表的DeepSeekMath,给出了PPO的一个优化变种GRPO(Group Relative Policy Optimization)[3],如下图。简单地说,GRPO不用优化Value Model,相对于PPO解约了训练资源。从这篇文章开始,我们看到DeepSeek对资源的优化是深入骨髓的原则。
DeepSeekMath本身是一个只有7B的针对数学问题的领域模型,文章详细介绍了数据获取方法,基于高质量数据训练的DeepSeekMath 7B达到了540B的Minerva的效果,他们还发现编程代码训练可以提升数学推理能力。当然,强化学习GRPO进一步提升了其性能。这篇文章还试图用一个统一的视角来看SFT(Supervised Fine-tuning)、RFT(Rejection Sampling Fine-tuning)、DPO(Direct Preference Optimization)、PPO(Proximal Policy Optimization)、GRPO等技术。指出这些技术都可以归类于直接或简化的强化学习,从训练数据维度来看,实时在线产生训练数据的PPO/GRPO等有更好的效果,基于奖励模型的梯度(如PPO/GRPO)比基于规则的梯度(Online RFT)有更好的效果。
有了这些基础,DeepSeek开始搞一个真正的大模型了,2024年6月19日,DeepSeek发表DeepSeek-V2,一个强壮、经济、高效的混合专家语言模型[4]。除了使用DeepSeekMoE和GRPO,这个模型对Transformer中的注意力模块提出了Multi-head Latent Attention(MLA)改进方法。在多头注意力机制中,推理时Key-Value都需要展开加速,占用了太多Cache资源,DeepSeek的方法是使用低秩向量来替代,较少Cache占用,使用时展开,用算力换空间,如下图所示,相对于其它方法,不但节约了空间,而且达到更好效果。
这个模型的参数为236B,激活参数为21B,相对于QWen1.5,LLaMA 3 等一众开源模型,用更少的资源达到了可比的效果,如下图,充分说明了MoE架构的能力。
前戏结束,DeepSeek开始放大招,2024年12月27日,671B,激活参数为37B的DeepSeek-V3[5],可以和一众闭源模型PK了。
算法上,针对MoE的负载均衡问题,采用了loss-free的方法,探索了Multi-Token Prediction(MTP)目标训练,算是创新,其真正牛逼之处在于针对如此大的一个模型训练,号称只用了2.788M H800 GPU小时,极致的工程优化!下面列出关键点。
DualPipe算法:跨节点的专家并行导致计算和通讯比达到了不经济的1:1,通过合理调度,让计算和通讯在每个前向和后向处理周期中并行起来是关键。
为了保证流水线并行足够的算力,DeepSeek通过PTX指令编程SM单元专门用于通讯,H800中的132个宝贵的计算SM有20个专门用于通讯。这就是很多人说的所谓绕过Cuda,显然这是在接口处理能力有限的情况下不得已为之,谈不上有意绕过。这些优化充分考虑和框架、硬件匹配,包括IB带宽、NVlink带宽,每个节点GPU数,算法中的专家数,激活专家数等。
FP8混合精度训练:大多数计算稠密操作采用FP8,而一些关键操作保持其原始格式来平衡训练效率和数值稳定。
在部署推理过程中,还通过保持专家冗余,实时调整专家分布等方法来优化,总之,工程优化做到极致!
V3在Post-Training阶段使用了DeepSeek-R1产生的推理数据。推理模型R1产生的数据精度高,但也有格式差、经常想多了(overthinking)、输出内容冗长等缺点,通过这些数据来微调,V3希望做到平衡输出的高精度和简洁明了。强化学习采用了基于规则的RM和基于模型的RM。基于模型的RM是用DeepSeek-V3训练出来的,从某种意义上说,使用了自我评估机制。
大招接着放,2025年1月20日,DeepSeek正式发布DeepSeek-R1[6],挑战OpenAI地表最强o1。
复现o1的努力很多,基本都是从强化学习、增加推理计算角度出发,如下图[7]。
DeepSeek通过纯粹的强化学习过程探索模型的自身演进能力。首先搞了个DeepSeek-R1-Zero,基于规则的奖励系统,比如对于有精确答案的数学问题,需用正确格式提供最后答案以便使用规则验证正确性;对于编程问题,使用编译器验证代码等。相对于精确奖励,增加了格式奖励,要求将思考过程用‘’标识。然后,他们发现随着强化训练的进行,模型推理时间越来越长,推理能力也越来越强。并且,他们还发现一个有趣现象,模型在训练过程中某一个时刻开始反思自己的思考过程,并且说这是一个aha moment,这显然是所有人的aha moment。
DeepSeek-R1-Zero能力很强,但是有很多问题,比如输出的可读性差,语言混杂,于是在此基础上研发了正式的DeepSeek-R1。顺便说一句,这两天OpenAI的模型出现了中文推理过程,引起一通群嘲,这不至于说OpenAI蒸馏了DeepSeek,大模型思考过程看来用的是大模型语,呵呵,以中文和英文为基础的新世界语。
使用DeepSeek-R1-Zero的输出,通过人工处理后产生部分可读性好的数据,作为long CoT数据来训练DeepSeek-V3-Base作为强化学习的基础模型,然后将该模型像训练Zero模型一样训练,为了解决语言一致性问题,增加了一个语言一致性奖励。虽然后面的消融实验表明这样会对性能有一定影响,但是为了输出可读性,不被人嘲笑说的模型鸟语,还是忍了。
然后使用收敛的模型产生用于下一阶段的推理数据,同时采用了更多的在写作、角色扮演等其它领域的数据。针对推理数据,不只有前面说的可以基于规则来检测的数据,还包括更多的问题,其中一些使用DeepSeek-V3来判断,最终获得了600k的推理训练数据。其它的非推理数据,采用DeepSeek-V3的处理方式,最终获得了200k的数据。第二阶段的强化学习在保持模型推理能力的同时提升模型的有效性和无害性,对推理数据采用Zero的方法,对于一般数据,采用V3的方法。最后这性能却确实牛。
DeepSeek进一步展示了使用DeepSeek-R1蒸馏其它小模型,使其大幅提升推理能力,并且将这些小模型放出来大家随便用,大家随便蒸,咋说呢,对于被质疑采用蒸馏方法的DeepSeek这个举动,我只能评价为将开源、开放精神贯彻到底!
DeepSeek的精彩还在继续,2024年10月,推出了多模态理解和生成模型Janus,2025年1月28日发布了其Pro版,本文不再阐述。
简单说一下我的评价:
DeepSeek一步一步构建其LLM大厦,坚持技术的长期主义,逻辑清晰,未来可期。
坚持第一性原则,所有技术创新没有花架子,围绕性能、效率、成本这几个主题,值得我们学习。
开放、开源的精神加速大模型普及,更多的智能应用、智能体将会涌现,各行各业将加速实现AI+。
作为相关行业从业者,这是我们所有人的aha时代。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。