🚈DeepSeek系列
2025-5-16
| 2025-5-21
字数 8669阅读时长 22 分钟
type
Post
status
Published
password
date
May 16, 2025
slug
summary
category
人工智能
URL
tags
LLM
NLP
icon

简介

论文时间线与技术演进对比
时间
论文研究内容
研究路线对应阶段
2024年1月
DeepSeek LLM
扩展定律与数据集有关,
2024年2月
DeepSeekMath
采用GRPO进行RL训练,提升数学推理能力
2024年5月
DeepSeek-V2
采用MLA机制减少KV存储,提升长文本推理能力;同时通过MoE结构提高运算效率
2024年6月
DeepSeek-Coder-V2
采用MoE结构和RL训练优化代码推理能力
2024年12月
DeepSeek-V3
进一步优化MoE结构,通过无辅助损失函数的负载均衡策略,提高模型性能;基于MTP模块实现多token预测;结合RL和蒸馏
2025年1月
DeepSeek-R1-Zero
完全基于强化学习(RL),不依赖SFT训练。提高模型的推理能力
2025年2月
DeepSeek-R1
结合SFT和RL训练,优化可读性和任务泛化能力
  • MoE结构优化:通过MoE减少90%计算量,降低训练成本,使大规模训练成为可能。
  • MLA机制优化推理:通过Multi-Head Latent Attention(MLA)减少93.3% KV存储,提升长文本处理能力,使推理效率提高5.76倍。
  • 强化学习(GRPO)训练推理能力:采用GRPO进行RL训练,使模型在数学、逻辑推理和代码生成任务上获得接近OpenAI-o1级别的推理能力。
  • 模型蒸馏优化推理成本:将高推理能力的大模型压缩为相对计算成本更低的小模型,从而实现高效部署和推理运行。

DeepSeek LLM

1、训练

1.1、数据集

  • 来源:自采。训练语料采用去重-过滤-再混合策略构建。 首先对 Common Crawl 语料进行去重,随后通过严格的文档质量评估标准进行过滤,最后通过数据再混合阶段解决数据不平衡问题。
  • 分词:BBPE

1.2、模型架构

采用Llama2的架构
notion image

2、扩展定律

随着计算预算,模型参数和数据量的增加,模型性能会得到改进。因此在增加计算预算时,如何优化模型和数据规模之间的分配也是扩展定律研究的一个关键目标。
  • 模型参数M:FLOPs/token(不包括嵌入层)。
  • 计算预算 C
  • 数据量 D
💡
不同数据集得出的扩展定律存在显著差异。这表明数据集的选择极大地影响了扩展行为,表明在跨数据集推广扩展定律时应谨慎行事。

2.1、超参数影响

但是Batch Size、Learning rate对模型性能的影响最为显著。最佳Batch Size 随着计算预算 C 的增加而逐渐增大,而最佳Learning rate则逐渐减小

2.2、最佳配比

选择了 8 个不同的计算预算,范围从 1e17 到 3e20,并为每个预算设计了大约 10 种不同的模型/数据规模分配方案。通过实验得到模型规模,参数规模的最佳配置如下
随着数据质量的提高,模型扩展指数 逐渐增加,而数据扩展指数 逐渐减少。这表明增加的计算预算应该更多地分配给模型而不是数据。

DeepSeek V2

1、模型架构

notion image

1.1、MLA

其中,我们缓存蓝色框中的向量。在推理过程中,按照原始公式需要从中恢复用于注意力计算。幸运的是,由于矩阵乘法的结合律,我们可以将合并到中,将合并到中。通过这种优化,我们避免了推理过程中重新计算的计算开销。
在推理过程中,合并(因为注意力分数是标量,所以可以合并);合并

1.2、MoE

为第个token的FFN输入,我们通过以下公式计算FFN输出
其中,分别表示共享专家和路由专家的数量;分别表示第个共享专家和第个路由专家;表示激活的路由专家数量;是第个专家的门控值;是token与专家的亲和度;是该层第个路由专家的质心;表示在为第个token计算的所有路由专家亲和度得分中,选取个最高得分组成的集合。

1.3、超参数设置

  • Transformer层数设置为60,隐藏层维度设置为5120
  • 在MLA中,注意力头的数量设置为128,每个头的维度设置为128。
  • :KV压缩维度设置为512 :查询压缩维度设置为1536
  • RoPE():每个头的维度设置为64
  • 我们将除第一层之外的所有前馈神经网络(FFNs)替换为混合专家(MoE)层。
  • 每个MoE层由2个共享专家和160个路由专家组成,每个专家的中间隐藏层维度为1536。在路由专家中,每个token会激活6个专家
  • 我们在后使用额外的RMS归一化层;并在注意力分数和路由专家的中间层乘以缩放因子,以确保训练的稳定性。

    2、负载均衡

    DeepSeekMoE 是在 Nvidia GPU 上进行多机多卡分布式训练的,专家并行会引发 Device 间通信(卡间甚至机间通信)。为了控制通信成本,DeepSeekMoE 执行的是 Device-Limited Routing,就是确保每个 Token 被分配的 Top-K 专家分布在最多 M 个Device。

    2.1、辅助损失函数

    专家级损失函数
    当一条样本(A Sequence)中的所有 Token 被均匀地分配给各个专家时,如下所示的损失函数达到最小值。
    其中,是一个超参数,称为专家级平衡因子;表示指示函数;表示序列中的token数量;表示路由专家的数量,表示每次被选择的路由专家数量,的计算过程请看公式(22)。
    设备级损失函数
    DeepSeek-V2 将部署在同一个 Device(卡)上的专家化为一组,Device-Level Balance Loss 将促使各个 Device 被分配到的 Token 数量是均衡的。
    这是一种相比于 Expert-Level Balance 来说更宽松的约束,在 DeepSeekMoE 的技术报告里有写道,太严格的负载均衡控制将会有损模型能力,因此,Device-Level Balance Loss 的权重系数(真实设定为 0.05)实际大于 Expert-Level Balance Loss 的权重系数(真实设定为 0.003)。
    通信级损失函数
    Device-Level Balance Loss 只能约束每个 Device 或专家组被分配到的 Token 数量是均衡的,并不能保证这些 Token 的来源也是均衡的。
    Communication Balance Loss 会促进一条样本(A Sequence)中的所有 Token 均匀地分配给各个 Device。降低通信成本
    其中,是一个名为通信平衡因子的超参数。设备受限路由机制的运行原则是确保每个设备向其他设备传输的隐藏状态最多为,M表示每台设备最大发往个节点。同时,采用通信平衡损失来促使每个设备从其他设备接收大约MT的隐藏状态。通信平衡损失保证了设备之间信息的均衡交换,有助于实现高效通信。

    2.2、token丢弃策略

    该策略首先为每个设备计算平均计算预算,即设定每个设备的容量因子(capacity factor)为1.0。然后,我们在每个设备上按照亲和力分数从低到高的顺序丢弃token,直至达到设备的计算预算。
    同时,我们确保约10%的训练序列token永远不会被丢弃。通过这种方式,DeepSeek-V2 的 Sparse MoE 在训练阶段同时经历了 Token 溢出被丢弃和 Token 溢出不被丢弃的情况,这也意味着在推理阶段,可以根据实际需要来决定是否采取 Token 溢出即丢弃的推理,因为在训练阶段都曾出现过相一致的情况。

    2.3、超参数

    对于每一层,路由专家会均匀部署在8个设备上。在设备受限路由方面,每个token最多被发送到3个设备()。对于平衡损失,我们将设置为0.003,设置为0.05,设置为0.02。在训练过程中,我们采用token丢弃策略来加速训练,但在评估时不丢弃任何token。

    3、预训练

    3.1、数据集

    • 通过以下方式扩展训练语料:1) 增加更多中文数据及来自不同来源的高质量数据;2) 通过优化数据清洗流程,恢复大量此前在DeepSeek LLM的策略中被删除的数据。同时,通过改进基于质量的过滤算法提升数据质量。最终预训练数据集包括8.1万亿个token。
    • 分词器;采用与DeepSeek 67B相同的分词器(基于BBPE算法),词汇表大小为10万。

    3.2、超参数

    • 参数初始化:以0.006的标准差进行随机初始化
    • 使用AdamW优化器:,权重衰减
    • 学习率:在最初的2000步中,学习率从0线性增加到最大值。在训练大约60%的token后,学习率乘以0.316,在训练大约90%的token后,再次乘以0.316。最大学习率设置为
    • 梯度裁剪:1.0
    • 批次大小:在训练前2250亿个token时,批次大小从2304逐渐增加到9216,在剩余的训练过程中保持9216不变。

    4、长上下文扩展

    使用yarn进行上下文扩展。缩放因子设为40,设为1,设为32,注意力的温度系数为
    🗂️
    位置编码
    。通过缩放位置或基础频率(进行插值),实现上下文扩展。
    💡
    用来计算插值,用来对注意力分数进行缩放

    5、对齐

    5.1、监督微调

    • 指令调优数据集,包含150万个实例,其中120万个用于提升有用性,30万个用于保障安全性。相较于初始版本,我们提高了数据质量,以减少幻觉响应并提升文本生成能力。
    • 对 DeepSeek-V2 进行 2 轮微调,学习率设置为

    5.2、强化学习

    3、计算流程

    notion image
    采用了组相对策略优化(GRPO)。具体来说,对于每个问题,GRPO从旧策略中采样一组输出,然后通过最大化以下目标来优化策略模型
    其中是超参数;是参考模型;是优势值,通过每组输出对应的一组奖励计算得出:
    策略更新:根据相对优势更新策略模型的参数,增加高奖励输出的概率,减少低奖励输出的概率。同时,通过KL散度约束确保策略更新的稳定性。
    💡
    越好的,reward 就越大,对应的也越大。,简单理解就是训练模型去输出更好的output。
    根据相对优势更新策略模型的参数,增加高奖励输出的概率,减少低奖励输出的概率。同时,通过KL散度约束确保策略更新的稳定性。
    句子级别的重要性采样
    句子级别的重要性采样
    奖励模型:我们采用两阶段强化学习训练策略,先进行推理对齐,再进行人类偏好对齐。
    • 在第一个推理对齐阶段,我们为代码和数学推理任务训练一个奖励模型,并利用的反馈来优化策略模型。
    • 在第二个人类偏好对齐阶段,我们采用多奖励框架,从有用性奖励模型、安全性奖励模型和基于规则的奖励模型中获取奖励。最终,一个响应的奖励为:
      • 其中是相应的系数。

    DeepSeek V3

    1、简介

    • 数据集:14.8万亿高质量的token

    2、架构

    架构与deepseek v2基本一致。区别有两个:1、参数量不同;2、MoE引入了一种无辅助损失的负载均衡策略。
    图2 DeepSeek-V3基本架构示意图。与DeepSeek-V2一致,我们采用MLA和DeepSeekMoE实现高效推理和经济高效的训练
    图2 DeepSeek-V3基本架构示意图。与DeepSeek-V2一致,我们采用MLA和DeepSeekMoE实现高效推理和经济高效的训练

    2.1、MoE

    💡
    与DeepSeek-V2略有不同,DeepSeek-V3使用sigmoid函数计算亲和度分数,并对所有选定的亲和度分数进行归一化以生成门控值。
    其中,分别表示共享专家和路由专家的数量;分别表示第个共享专家和第个路由专家;表示激活的路由专家数量;是第个专家的门控值;是令牌与专家的亲和度;是第个路由专家的质心向量;表示在为第个token计算的所有路由专家亲和度分数中,由个最高分数组成的集合。

    2.2、多token预测

    将预测范围扩展到每个位置的多个未来token。
    notion image
    • 共享:MTP模块与主模块共享Embedding与out Head层(绿色部分)。
    • 独立:不同MTP模块的Transformer Block、Linear Projection、RMSNorm层(黄色部分)相互独立。
    计算流程
    主模块:输入到主模块后生成的Embedding(输入到output,并映射词典之前);
    MTP1:将concat[主模块生成的输入到RMS Norm经过Embedding,输入到RMS Norm]输入到Linear Projection与Transformer Block。
    MTP2:将concat[MTP1模块生成的输入到RMS Norm经过Embedding,输入到RMS Norm]输入到Linear Projection与Transformer Block。

    2.3、超参数

    • Transformer层数设置为61
    • 隐藏层维度设置为7168
    • 参数初始化:均以标准差0.006进行随机初始化。
    • 在MLA中,我们将注意力头的数量设置为128,每个头的维度设置为128。键值压缩维度设置为512,查询压缩维度设置为1536。对于查询和键位置编码,我们将每个头的维度设置为64。
    • 除了前三层,我们将其余的前馈网络(FFN)替换为MoE层。每个MoE层包含1个共享专家和256个路由专家,每个专家的中间隐藏层维度为2048。在路由专家中,每个token会激活8个专家,并且每个token最多会被发送到4个节点。
    • 多token预测深度设置为1,即除了准确预测下一个token外,每个token还会预测一个额外的token。
    • 与DeepSeek-V2一样,DeepSeek-V3在后使用额外的RMS归一化层;并在注意力分数和路由专家的中间层乘以缩放因子。在这种配置下,DeepSeek-V3总共有6710亿个参数,每个token会激活370亿个参数。

    3、负载均衡

    3.1、无辅助损失的负载均衡

    传统解决方案通常依赖辅助损失(Fedus等人, 2021; Lepikhin等人, 2021)来避免负载不均衡。然而,过大的辅助损失会损害模型性能(Wang等人, 2024a)。为了在负载均衡和模型性能之间实现更好的平衡,我们首创了无辅助损失的负载均衡策略(Wang等人, 2024a)以确保负载均衡。具体而言,我们为每个专家引入一个偏差项,并将其添加到相应的亲和度分数中,以确定前路由:
    需要注意的是,偏差项仅用于路由。与FFN输出相乘的门控值仍源自原始亲和度分数。在训练过程中,我们持续监控每个训练步骤中整个批次的专家负载。在每个步骤结束时,如果某个专家负载过高,我们将其偏差项减小;如果负载过低,则将其偏差项增加,其中是一个名为偏差更新速度的超参数。通过动态调整,DeepSeek-V3在训练过程中保持了均衡的专家负载,并且比仅通过辅助损失促进负载均衡的模型表现更优。

    3.2、互补的序列级辅助损失

    尽管DeepSeek-V3主要依靠无辅助损失策略来实现负载均衡,但为了防止单个序列内出现极端不均衡,我们还采用了互补的序列级平衡损失:
    其中,平衡因子是一个超参数,对于DeepSeek-V3,其取值极小;表示指示函数;表示序列中的token数量。序列级平衡损失促使每个序列上的专家负载趋于平衡。

    3.3、节点限制路由

    我们确保每个token最多被发送到个节点。具体方法是,从每个节点中,选择亲和力分数最高的个专家;这样个节点,共组成个节点。

    4、预训练

    • 数据集:进一步扩充预训练语料,加入更多数学与编程样本,以及除中英文之外的多语言样本。最终生成14.8万亿个高质量且多样的token。
    • 分词器采用字节级字节对编码(Byte-level BPE)

    4.1、Document Packing

    Transformer 模型默认情况下需要固定长度的 token 序列作为输入,然而同一 batch 的文本输入往往长度不同;为了适应这种情况,我们会将 token 序列截断或填充到预定义的固定长度(max_seq_len)。但当输入序列长度差异过大时(这在 LLM 训练中非常常见)会引发一系列问题:1、对超长序列,截断可能导致有用信息丢失;2、对较短的序列,填充过多 token 会造成计算资源浪费。
    notion image
    因此,LLM 训练通常采用 document packing 技术来处理输入序列。如上图所示,用不同颜色代表不同文档,面对若干长度不同的文档;我们首先将其分割为较小的块(chunk):以一种智能的方式将这些块(chunks)分组为训练序列,确保在不进一步分割任何块(chunks)的前提下生成最少量的序列。
    notion image
    💡
    由于Best-fit Packing将文档块独立打包,每个训练序列中的文档块属于不同文档时,会屏蔽跨文档注意力(mask out cross-document attention)。
    💡
    得益于旋转位置嵌入(RoPE)的相对性质(Su等人,2021),我们无需调整模型输入的位置ID。例如:若一个序列包含两个文档块(块1长度为5,块2长度为3,总长度8),则块1的标记位置为0-4,块2的标记位置为5-7。

    4.2、Fill-in-the-Middle(FIM)

    notion image
    在传统的自回归生成中,只能以从左到右的方式训练模型,即模型只能根据前面的 tokens 预测下一个 token。然而在实际应用中,模型常需根据上下文生成中间缺失的内容。 尤其在代码生成场景中 —— 我们常会给定输入/输出和部分代码片段,要求模型填充中间逻辑,如上图所示。
    为了适配此类需求,我们才有PSM 框架,将文档随机切分为 prefix、middle 和 suffix 三部分,然后将 middle 部分移至末尾。如下图所示:
    notion image
    • <|fim_begin|>和<|fim_hole|>标记 prefix 部分
    • <|fim_hole|>和<|fim_end|>标记 suffix 部分
    • <|fim_end|>和<|eos_token|>标记 middle 部分

    4.3、训练超参数

    • AdamW优化器(Loshchilov和Hutter,2017),超参数设置为,权重衰减为0.1。
    • 在预训练期间,我们将最大序列长度设置为4K,并使用14.8万亿个token对DeepSeek-V3进行预训练。
    • 学习率,我们在前2K步将学习率从0线性增加到。然后,在模型消耗10万亿个训练token之前,保持的恒定学习率。随后,在接下来的4.3万亿个token训练中,我们按照余弦衰减曲线将学习率逐渐衰减到。在训练最后500亿个token时,前333亿个token保持的恒定学习率,在剩余的167亿个token训练中,将学习率切换到
    • 梯度裁剪范数设置为1.0。
    • 批次大小调度,在训练前469亿个token时,批次大小从3072逐渐增加到15360,在剩余的训练中保持15360不变。
    • 负载均衡:我们利用流水线并行将模型的不同层部署在不同的GPU上,对于每一层,路由专家将均匀部署在属于8个节点的64个GPU上。对于节点限制路由,每个token最多会被发送到4个节点(即)。对于无辅助损失的负载均衡,在前14.3万亿个token的训练中,我们将偏差更新速度设置为0.001,在剩余的500亿个token训练中设置为0.0。对于平衡损失,我们将设置为0.0001,只是为了避免任何单个序列内出现极端不平衡。MTP损失权重在前10万亿个token的训练中设置为0.3,在剩余的4.8万亿个token训练中设置为0.1。

    5、长上下文扩展

    我们采用与DeepSeek-V2(DeepSeek-AI,2024c)类似的方法,赋予DeepSeek-V3长上下文处理能力。
    在预训练阶段之后,我们执行两个额外的训练阶段,每个阶段包含1000步,逐步将上下文窗口从4K扩展到32K,然后再扩展到128K。YaRN的配置与DeepSeek-V2中使用的一致,仅应用于位置编码的键。两个阶段的超参数保持相同,缩放因子,且。在第一阶段,序列长度设置为32K,批次大小为1920。在第二阶段,序列长度增加到128K,批次大小减少到480。两个阶段的学习率均设置为,与预训练阶段的最终学习率相匹配。
    💡
    用来计算插值,用来对注意力分数进行缩放

    6、SFT

    • 数据集:150万,使用DeepSeek-R1生产数据。

    7、强化学习

    7.1、奖励模型

    • 基于规则的RM:对于可以使用特定规则验证的问题,我们采用基于规则的奖励系统来确定反馈。例如,某些数学问题有确定的答案,我们要求模型以指定格式(如在框内)提供最终答案,以便我们应用规则来验证其正确性。同样,对于LeetCode问题,我们可以利用编译器根据测试用例生成反馈。只要有可能,利用基于规则的验证可以确保更高的可靠性,因为这种方法不易被操纵或利用。
    • 基于模型的RM:对于具有自由格式标准答案的问题,我们依靠奖励模型来确定响应是否符合预期的标准答案。相反,对于没有明确标准答案的问题,如涉及创意写作的问题,奖励模型根据问题和相应答案作为输入提供反馈。奖励模型从DeepSeek-V3 SFT检查点进行训练。为了提高其可靠性,我们构建偏好数据,不仅提供最终奖励,还包括导致该奖励的思维链。这种方法有效减少在特定任务中奖励机制被欺诈的风险。

    7.2、组相对策略优化(GRPO)

    DeepSeek R1

    1、DeepSeek-R1-Zero

    1.1、组相对策略优化(GRPO)

    用户和助手之间进行对话。用户提出问题,助手进行解答。助手先在脑海中思考推理过程,然后为用户提供答案。推理过程和答案分别包含在<think></think>和<answer></answer>标签中,即<think>推理过程在此处</think><answer>答案在此处</answer>。用户:提示。助手:
    表1 DeepSeek-R1-Zero的模板。在训练过程中,提示将被具体的推理问题所取代。
    表1 DeepSeek-R1-Zero的模板。在训练过程中,提示将被具体的推理问题所取代。

    1.2、奖励机制

    • 准确率奖励:准确率奖励模型用于评估回答是否正确。例如,对于有确定答案的数学问题,模型需要以指定格式(如在方框内)给出最终答案,以便通过基于规则的方法可靠地验证其正确性。同样,对于力扣(LeetCode)上的问题,可以使用编译器根据预定义的测试用例生成反馈。
    • 格式奖励:除了准确率奖励模型,我们还采用了格式奖励模型,该模型强制模型将其思考过程放在‘<think>’和‘</think>’标签之间。 在开发DeepSeek-R1-Zero时,我们没有应用基于结果或过程的神经奖励模型,因为我们发现神经奖励模型在大规模强化学习过程中可能会受到奖励作弊的影响,而且重新训练奖励模型需要额外的训练资源,会使整个训练流程变得复杂。

    1.3、训练模板

    为了训练DeepSeek-R1-Zero,我们首先设计了一个简单的模板,引导基础模型遵循我们指定的指令。如表1所示,这个模板要求DeepSeek-R1-Zero首先生成推理过程,然后给出最终答案。我们将采用固定的结构格式作为约束条件,避免引入任何偏向性内容,例如强制要求进行反思性推理,或刻意推广某种特定的解题策略。这样做的目的是确保能够客观、准确地观察模型在强化学习过程中的自然演化过程。
    notion image

    1.4、性能

    在2024年美国数学邀请赛(AIME)基准测试中,随着强化学习训练的推进,DeepSeek-R1-Zero的性能稳步提升,AIME 2024的平均单次通过率(pass@1),从最初的15.6% 跃升至令人瞩目的71.0%,达到了与OpenAI-o1-0912相当的性能水平。
    notion image

    1.5、DeepSeek-R1-Zero的自我进化过程

    随着强化学习训练的推进,DeepSeek-R1-Zero的响应长度逐渐增加;模型会出现复杂的行为。例如,模型会进行反思,并且会自发地探索解决问题的替代方法。
    notion image

    1.6、顿悟时刻

    在训练DeepSeek-R1-Zero的过程中,模型会出现顿悟时刻;突然学会,先按最初策略解题,之后再回头分析该策略的合理性与有效性。
    notion image

    1.7、缺点

    尽管DeepSeek-R1-Zero表现出强大的推理能力,但也存在可读性差和语言混杂等问题。

    2、DeepSeek-R1

    1)使用少量的高质量数据作为冷启动数据,能否进一步提高模型推理性能或加速收敛?
    2)我们如何训练一个不仅能生成清晰连贯思维链(CoT),还能展现出强大通用能力的模型?
    为了解决这些问题,我们设计了一个训练DeepSeek-R1的流程,该流程包含四个阶段

    2.1、冷启动

    与DeepSeek-R1-Zero不同,我们构建并收集了少量长思维链数据,用这些数据对模型进行微调,让微调后的模型作为强化学习的初始Actor。我们收集了数千条冷启动数据,收集的主要途径如下所示:运用包含长思维链的少样本示例进行提示;直接引导模型生成带有反思和验证过程的详细答案;以易读的格式收集DeepSeek-R1-Zero的输出内容;通过人工标注进行后期处理。

    2.2、面向推理的强化学习

    冷启动之后,我们采用与DeepSeek-R1-Zero相同的强化学习训练过程。这个阶段侧重于提升模型的推理能力,特别是在编码、数学、科学和逻辑推理等领域。在训练过程中,我们观察到思维链经常出现语言混杂的情况,尤其是当强化学习提示涉及多种语言时。为了缓解语言混杂问题,我们在强化学习训练中引入了语言一致性奖励,其计算方式为思维链中目标语言单词的占比
    💡
    尽管消融实验表明这种调整会导致模型性能略有下降,但这使内容更具可读性。最后,我们将推理任务的准确性和语言一致性奖励直接相加,形成最终奖励。然后,对微调后的模型进行强化学习训练,直至其在推理任务上达到收敛。

    2.3、拒绝采样和监督微调

    当面向推理的强化学习收敛后,我们利用该模型,收集用于监督微调(SFT)的数据。与最初主要关注推理的冷启动数据不同,这个阶段纳入了来自其他领域的数据,以提升模型在写作、角色扮演和其他通用任务方面的能力。具体而言,我们按如下方式生成数据并微调模型:
    • 推理数据:我们在强化学习训练的模型基础上进行拒绝采样来生成样本。在强化学习阶段,我们主要使用了基于规则的奖励机制;然而,在这个阶段,我们通过纳入了更多的数据,其中部分数据会通过奖励模型进行评估(使用LLM的最后一个token作为评估分)。此外,我们过滤掉了语言混杂的思维链、冗长的段落和代码块。
      • 💡
        对于每个提示,我们生成多个回复,只保留正确的response。
    • 非推理数据:对于写作、事实性问答、自我认知和翻译等非推理数据,我们采用DeepSeek-V3的训练流程,并复用DeepSeek-V3的部分监督微调数据集。对于某些非推理任务(如事实性问答),我们会通过设计提示词(prompting)引导DeepSeek-V3在生成最终答案前,先构造一个潜在的推理过程,以提升回答的逻辑连贯性。然而,对于像“你好”这样简单的查询,我们不提供思维链作为回应。最后,我们总共收集了大约20万个与推理无关的训练样本。
    我们使用上述整理的约80万个样本的数据集,对DeepSeek-V3-Base进行两个轮次的微调。

    2.4、全场景强化学习

    通过强化学习提高模型的有用性和无害性,同时优化其推理能力。对于推理数据,我们遵循DeepSeek-R1-Zero中概述的方法,使用基于规则的奖励来指导数学、代码和逻辑推理领域的学习过程。对于一般数据,我们采用生成式奖励模型来捕捉复杂和微妙场景中的人类偏好。
    我们基于DeepSeek-V3的流程,采用与DeepSeek-V3类似的数据集,进行训练。对于有用性,我们只关注最终总结,强调回答对用户的实用性和相关性。对于无害性,我们评估模型的整个回答,包括推理过程和总结,以识别和减轻生成过程中可能出现的任何潜在风险、偏差或有害内容。最终,通过整合奖励信号和多样化的数据分布,使我们能够训练出一个在推理方面表现出色,同时优先考虑有用性和无害性的模型。

    3、 蒸馏

    为了使小模型具备类似DeepSeek-R1的推理能力,我们使用2.3、拒绝采样和监督微调 中整理的80万个样本,直接对Qwen(Qwen, 2024b)和Llama(AI@Meta, 2024)等开源模型进行微调。我们的研究结果表明,这种简单的蒸馏方法能显著提升小模型的推理能力。
    对于蒸馏后的模型,我们只进行监督微调,没有进行强化学习,尽管加入强化学习可以大幅提升模型性能。
  • LLM
  • NLP
  • 【论文精读】DeepSeek-R1高效微调PEFT代码实战
    Loading...