仅用于站内搜索,没有排版格式,具体信息请跳转上方微信公众号内链接
原文:https ://zhuanlan.zhihu.com/p/20751924531
MLA用于高效推理,源自DeepSeekV2的原创,其显著降低了推理显存的消耗。MLA主要通过改造注意力算子压缩KV缓存大小,将每个查询KV量减少93.3%,实现了在同样容量下存储更多KV缓存,极大提升了推理效率。
个人认为,MLA之后,应该还会有QMLA(量化MLA)或者CMLA(压缩MLA),甚至是超越现有Attention模式的技术出现,而用了很多年的Transformer也将经历大的变革。真正的颠覆创新可能,正摆在DeepSeek和国内其他大模型团队的面前。
DeepSeek-R1[4]的核心算法是GroupRelativePolicyOptimization(GRPO)。其目标是优化策略模型,使其在特定任务中表现最佳。与传统策略优化方法不同,GRPO不依赖与策略模型同规模的评价模型,而是通过组内评分的方法估计基线,简化了计算过程。具体来说,对于每个问题,GRPO从旧策略πθoldπθold中对一组输出{o1,o2,⋯ ,oG}{o1,o2,⋯,oG}进行采样,然后通过最大化以下目标来优化策略模型:
奖励建模:对于每个输出,根据预设的奖励机制计算其对应的奖励,奖励综合考虑准确性奖励、格式奖励和语言一致性奖励等。为了训练DeepSeek-R1-Zero[5],采用基于规则的奖励系统,主要包括两种类型的奖励:
准确性奖励
准确性奖励旨在衡量模型给出的响应是否准确无误。以数学问题为例,当问题存在明确的答案时,模型需要按照特定格式(如在特定的框内)给出最终答案,这样就能依据既定规则对答案的正确性进行有效验证。再比如在解决LeetCode问题时,可借助编译器,依据预先设定好的测试用例来生成反馈,以此判断模型给出的解题方案是否正确,进而确定模型应获得的准确性奖励分值。
格式奖励
为了规范模型输出,除了运用准确性奖励模型,我们还引入了格式奖励模型。此模型主要作用是促使模型把思考过程置于特定的<标签之中。通过这种方式,使得模型输出的结构更加清晰、规范,方便后续对模型输出内容的分析与处理,同时也能引导模型以更有条理的方式展示其推理过程。
为了让1991年就提出的MoE架构更好的融入大模型体系,克服传统MoE模型的训练难题。DeepSeek采用了细粒度专家+通才专家的思路,不再使用少数大专家的结构,而是使用大量极小的专家结构。这个思路的本质在于将知识空间进行离散细化,以更好的逼近连续的多维知识空间,是一个非常好的方法。
无辅助损耗负载均衡策略可在不依赖辅助损失函数的情况下平衡分配计算/训练负载,更好的提高训练稳定性。
传统的规避路由崩溃的方法是强制“平衡路由”,即通过训练策略让每个专家在足够大的训练批次中被激活的次数大致相等。这一策略也就是“辅助损失”。但这种强制性的辅助损失会由于训练数据的结构不均衡特征,导致同领域的专家能力分散到不同的专家模块之中,极度损害MoE模型的性能。理想的MoE应该有一些经常访问高频通用信息,并具备其他访问较少的专业领域专家。如果强制平衡路由,将失去实现此类路由设置的能力,并且必须在不同的专家之间冗余地复制信息。
DeekSeek采用了“增加共享专家+无辅助损耗负载平衡”的方法解决这一问题。
DeepSeek将专家分两类:共享专家和路由专家。共享专家始终会被路由,训练中重点确保路由专家的路由均衡。
无辅助损耗负载均衡(Auxiliary-Loss-FreeLoadBalancing)方法是将特定于专家的偏差项添加到路由机制和专家亲和力中。偏差项不会通过梯度下降进行更新,而是在整个训练过程中持续监控并进行调整以确保负载平衡。如果训练中某个专家没有获得合理的命中次数,可以在每个梯度步骤中微调偏差项增加命中概率。
通过动态调整,DeepSeek-V3在训练过程中获得了比有辅助损失均衡模型更好的性能。
从模型架构分析看,我们认为这种分配策略可能还不是理论最优的,但该方法已比强制辅助损失有了显著的改进。
MoE用于高效训练,其由多个专家模型组成,通过部分激活给定任务所需的特定专家,而不是激活整个神经网络,从而降低计算消耗。MoE非DeepSeek原创,但DeepSeek早在V2之前的代码和数学模型,就从稠密架构转向MoE架构。V3模型中更是大胆地使用了高难度的256个路由专家和1个共享专家,并创新的采用冗余专家,来实现负载均衡策略和训练目标。
DeepSeek-R1是人工智能进步浪潮中的最新强音。对于机器学习研究与开发社区而言,这是一次重要发布,原因包括:
•它是一个开源权重模型,同时提供了更小、更精炼的版本;
•它分享并反思了一种训练方法,用于重现类似OpenAIO1[7]的推理模型。
与现有的大多数LLM一样,DeepSeek-R1也是一次生成一个token,不同的是,它在解决数学和推理问题时表现尤为出色,因为它能够通过生成“思考token”来解释其思维链,从而花更多时间处理问题。
通过三个步骤创建高质量LLM的通用方法:
1.语言建模阶段:在这个阶段,我们使用海量网络数据训练模型,以预测下一个词。此阶段的产物是一个基础模型。
2.监督微调阶段:通过监督微调,使模型在遵循指令和回答问题方面更加实用。此阶段生成的是一个指令调优模型,或称为监督微调(SFT)模型。
3.偏好调优阶段:最后,通过偏好调优进一步优化模型行为,使其与人类偏好更一致,最终得到一个偏好调优的LLM,用户可以通过Playground和应用程序与之交互。
DeepSeek-R1遵循这一通用方法。第一阶段的细节源自之前关于DeepSeek-V3模型的论文。R1使用了那篇论文中的基础模型(而不是最终的DeepSeek-V3模型),并同样经历了SFT和偏好调优步骤,但其具体实现方式有所不同。
在R1的创建过程中,有三点需要特别强调。
这是大量的长链式思维推理示例(多达60万个)。这些数据的获取极为困难,并且在人类标注的规模上成本高昂。这也就是为什么创建这些数据的过程成为需要特别强调的第二个重点。
这些数据是由R1的前身模型生成的,一个尚未命名但专注于推理的“兄弟”模型。该模型的灵感来源于一个名为R1-Zero的第三个模型(稍后我们会讨论)。它的意义不在于它本身是一个优秀的LLM,而在于它的创建过程仅需少量标注数据,并结合大规模强化学习,从而生成了一个在解决推理问题上表现出色的模型。
随后,这个专注推理的模型输出结果可以被用来训练一个更加通用的模型,使其在执行其他非推理任务时,也能达到用户对LLM的期望水平。
它分成两步:
在这里,强化学习(RL)被用来创建中期推理模型。随后,该模型被用于生成SFT推理示例。而使得创建这个模型成为可能的,是一个早期实验中开发的名为DeepSeek-R1-Zero的模型。
R1-Zero的特别之处在于,它无需标注的SFT训练集就能够在推理任务中表现出色。它的训练过程直接从一个预训练的基础模型开始,通过强化学习(RL)训练完成(没有经过SFT步骤)。它的表现如此出色,以至于可以与O1媲美。
这点意义重大,因为数据一直是推动机器学习模型能力的燃料。那么,这个模型如何能够摆脱这种历史呢?这指向了两个关键因素:
现代基础模型已经跨越了某个质量和能力的阈值(例如,这个基础模型是在14.8万亿高质量token上训练的)。与通用聊天或写作请求不同,推理问题可以通过自动化方式进行验证或标注。以下是一个例子来说明这一点,这可以是RL训练步骤中的一个提示/问题:“编写Python代码,接收一个数字列表,将其按顺序排序,但在列表开头添加42。”
像这样的问题天然适合多种自动化验证方式。例如,当我们将问题呈现给正在训练的模型时,它可能会生成一个答案。然后,我们可以通过以下方式进行验证:
•使用软件代码检查器(linter)验证生成的代码是否是正确的Python代码。
•执行生成的Python代码,检查它是否能够成功运行。
•使用其他现代编程LLM生成单元测试,验证代码是否实现了预期功能(即使这些LLM本身并非推理专家)。
•更进一步,我们可以测量代码的执行时间,并使训练过程偏向于更高效的解决方案——即便这些解决方案只是多个正确的Python实现之一。在训练过程中,我们可以向模型提供类似的问题,并生成多个可能的解决方案进行评估。
我们可以自动检查(无需人工干预)并得出以下结论:
•第一个生成结果甚至不是代码。
•第二个结果确实是Python代码,但并未解决问题。
•第三个是一个可能的解决方案,但未通过单元测试。
•第四个则是一个正确的解决方案。
这些信号都可以直接用于改进模型。当然,这个过程是在多个示例(以小批量形式)和连续的训练步骤中完成的。
这些奖励信号和模型更新是模型在强化学习训练过程中持续改进任务的方式,正如论文中的图2所示。
与这种能力的提升相对应的是生成的回应长度,模型生成更多的思维token来处理问题。
这个过程是有效的,但尽管R1-Zero在推理问题上得分很高,它仍然面临一些其他问题,使得它的可用性不如预期。
尽管DeepSeek-R1-Zero展示了强大的推理能力,并能够自主发展出意想不到且强大的推理行为,但它也面临一些问题。例如,DeepSeek-R1-Zero在可读性差和语言混杂等方面存在困难。
R1旨在成为一个更易用的模型。因此,R1并不像R1-Zero那样完全依赖于强化学习过程,而是如前所述,在两个地方得到了应用:
1.创建一个中期推理模型,用于生成SFT数据点。2.训练R1模型,以改进推理和非推理问题的表现(使用其他类型的验证器)。
为了使中期推理模型更具实用性,它在几千个推理问题的示例上进行监督微调(SFT)训练(其中一些是从R1-Zero生成并过滤出来的)。论文将此称为“冷启动数据”。
冷启动:与DeepSeek-R1-Zero不同,为了防止基础模型在强化学习训练的初期阶段出现不稳定的冷启动问题,对于DeepSeek-R1,我们构建并收集了一小部分长链推理(CoT)数据,以微调模型作为初始的RL行为者。为了收集这些数据,我们探索了几种方法:使用少量示例提示(few-shotprompting)来提供长链推理作为示范,直接提示模型生成详细的答案,并进行反思和验证,收集DeepSeek-R1-Zero输出的可读格式,并通过人工标注者进行后处理以改进结果。
如果你对监督微调(SFT)的概念不熟悉,它是通过将训练示例以提示和正确完成的形式呈现给模型来进行的过程。以下是第12章中的一张图,展示了几个SFT训练示例:
在模型维度大小和其他超参数方面,它们如下所示:
通过这些信息,你现在应该对DeepSeek-R1模型有了基本的直观理解。
DeepSeek-R1模型的知识蒸馏技术让庞大的知识“传授”给更小的模型。具体是向小模型输入大量大模型解决问题的示例,使小模型学习大模型的推理和决策方式。例如,展示DeepSeek-R1解数学证明题的步骤,小模型模仿其思维,在自身参数空间构建类似知识体系。
最初的DeepSeek-R1模型采用强化学习训练。训练中模型接收任务和数据,根据决策产生结果,系统依结果好坏给予奖惩,模型据此调整参数,提升后续任务处理能力。
而知识蒸馏后的模型针对特定任务微调。如针对编程任务,用大量代码数据训练,让模型掌握编程语言语法、语义和常见编程模式,以更准确高效地生成代码;对于数学任务,使用各种数学问题和解题思路强化训练,提升模型数学计算、逻辑推理能力。
原始DeepSeek-R1模型参数众多,运行需昂贵服务器,而蒸馏版本如15亿或32亿参数的模型,成本低、运行快,还能保持出色性能,使更多人在有限预算下享受人工智能便利。
与部分人工智能模型不同,DeepSeek-R1蒸馏模型会逐步展示“思考过程”(如下图所示)。回答问题或解决任务时,用户能清楚看到其推导结论的步骤,便于理解和信任,也利于开发人员和研究人员调试。
DeepSeek-R1项目推出了两个独立版本,分别针对推理能力和多阶段训练流程进行了创新优化:
•DeepSeek-R1-Zero:该版本完全基于强化学习训练,未使用任何监督数据,却展现出卓越的推理行为,例如处理长链式思维(Chain-of-Thought,CoT)的能力。
•DeepSeek-R1:在Zero的基础上进一步发展,采用多阶段训练流程,不仅保留了强大的推理能力,还解决了语言混杂和可读性等问题,使模型更加贴近用户需求。这两个版本均以实现模型的高可用性和扩展性为目标,为AI推理能力的提升提供了新思路。
相较于GPT-4o-Mini这一训练成本高达数亿美元的闭源大模型,DeepSeek-R1在智能度、匹配度方面与GPT-4o-Mini“旗鼓相当”,并在正确回复一致度方面高于GPT-4o-Mini,更加稳定可靠。大模型仍然未形成稳定输出正确、安全答案的能力,对大模型相关应用的安全防护必不可少,通过建立针对输出内容的“安全围栏”过滤掉不安全的输出内容,是当前保障AI工程化应用的一项方案。
具体而言,DeepSeek-R1与Llama3.1相比,“智力水平”得分高出近一倍,具备更精准的理解、更强的创造力、更可靠的决策支持、更自然的交互、更强的学习能力,以及更高效的工作表现。匹配度测评中,DeepSeek-R1平均得分高于Llama3.1,在数据运算、复杂推理场景下,DeepSeek-R1较Llama3.1解决问题能力更强。在一致度测试中,DeepSeek-R1回答的自我验证能力较Llama3.1呈现出了代际差距,能够提供更可靠、更稳定、更符合行业标准的答案。安全度测评发现,DeepSeek-R1在伦理道德、偏见歧视方面的得分总体高于Llama3.1,而在高强度对抗测评数据集中,由于DeepSeek-R1呈现了深度思考和推理的完整过程,在此过程中导致有害内容的输出,存在需要补强的安全缺陷。
进技术交流群请添加AINLP小助手微信(id:ainlp2)
请备注具体方向+所用到的相关技术点
关于AINLP
AINLP是一个有趣有AI的自然语言处理社区,专注于AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括LLM、预训练模型、自动生成、文本摘要、智能问答、聊天机器人、机器翻译、知识图谱、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLP小助手微信(id:ainlp2),备注工作/研究方向+加群目的。