上一篇文章对DeepSeek-R1进行了详细的介绍,今天来看看DeepSeek-R1的基座模型DeepSeek-V3。
项目地址:https://github.com/deepseek-ai/DeepSeek-V3
简单介绍下研究动机:现有的开源模型在性能和训练成本之间往往难以达到理想的平衡。一方面,为了提升模型性能,需要增加模型规模和训练数据量,这会导致训练成本急剧上升;另一方面,高效的训练和推理架构对于降低计算资源消耗至关重要。因此,研究动机在于开发一种既能实现强大性能,又能有效控制训练成本的开源语言模型,以推动开源模型的发展,并为更广泛的研究和应用提供支持。
1、模型架构
DeepSeek-V3的架构基于Transformer框架,旨在通过高效的推理和经济的训练实现强大的模型性能。它继承了DeepSeek-V2中验证过的多头潜在注意力(MLA)和DeepSeekMoE架构,并在此基础上进行了扩展和优化。下面来详细介绍下DeepSeek-V3的三个关键模块:
多头潜在注意力MLA
MLA的核心思想是通过低秩联合压缩来减少注意力机制中的查询(query)、键(Key)和值(Value)的维度,从而在推理时显著减少KV缓存的存储需求。这种压缩方法不仅减少了内存占用,还通过保持性能与标准多头注意力相当,实现了高效的推理。
结合图2和公式,简单做下MLA的解释:
- 压缩潜在向量
计算,用于后续的键(Key)和值(Value)的生成;
- 将压缩后的潜在向量
映射回原始维度空间以生成键
;
- 应用旋转位置编码(RoPE)引入位置信息得到
,拼接压缩后的键
,得到
;
- 将压缩后的潜在向量
映射回原始维度空间得到值
;
- 查询
的计算方式同理。
这些步骤共同构成了MLA机制中的关键部分,通过压缩和恢复操作减少了计算和存储需求,同时通过RoPE引入位置信息以保持注意力机制的有效性。这种方法在保持模型性能的同时,提高了推理效率。
最后通过注意力机制计算公式得到最终的输出。
DeepSeekMoE
在DeepSeek-V3中,对于前馈网络(Feed-Forward Networks, FFNs)采用DeepSeekMoE架构。与其它MoE架构(例如GShard)相比,DeepSeekMoE使用更细粒度的专家,并且将一些专家隔离为共享专家。给定输入,其FFN输出
计算如下:
和
分别表示共享专家和路由专家的数量;
和
分别表示第 i 个共享专家和第 i 个路由专家;
表示激活的路由专家数量;
是第 i 个专家的门控值;
是token到专家的亲和度,表示第i个token与第i个路由专家之间的相关性或匹配程度;
是第 i 个路由专家的中心向量,是每个路由专家的固定表示,用于捕捉专家的特性或专长;Topk(⋅,K) 表示包含第t 个Token与所有路由专家计算的亲和度分数中前 K 个最高分数的集合。
无辅助损失的负载均衡:
MoE模型中,专家负载的不均衡会导致路由崩溃(routing collapse),从而降低计算效率。传统解决方案通常依赖辅助损失来避免负载不均衡,但过大的辅助损失可能会损害模型性能。
简单介绍下辅助损失:辅助损失是一种显式的损失函数,用于鼓励负载均衡。它通常是一个正则化项,添加到模型的总损失函数中,以惩罚负载不均衡的情况。具体来说,辅助损失会计算每个专家的负载,并对负载不均衡的情况施加惩罚。
为了在负载均衡和模型性能之间取得更好的平衡,DeepSeek-V3引入了无辅助损失的负载均衡策略,无辅助损失是一种不依赖显式辅助损失函数的负载均衡策略。通过动态调整每个专家的偏置项,而不是通过显式的损失函数来实现负载均衡。这种策略的目标是在不引入额外损失的情况下,实现高效的负载均衡。
- 偏置项的引入:
其中是仅用于路由的每个专家的偏置项。
- 动态调整:
在训练过程中,持续监控每个训练步骤中整个批次的专家负载。在每个步骤结束时,如果相应的专家过载,将偏置项减少γ;如果相应专家负载不足,则将其增加γ,γ是一个超参数,称为偏置更新速度。通过动态调整,DeepSeek-V3在训练期间保持专家负载均衡,并实现了比通过纯辅助损失鼓励负载均衡的模型更好的性能。
序列级平衡损失:
尽管DeepSeek-V3主要依赖无辅助损失策略来实现负载均衡,但为了防止单个序列内的极端不平衡,DeepSeek-V3还采用了序列级平衡损失:
表示第i个专家在整个序列上的负载比例,
衡量第i个专家在整个训练批次中的负载均衡程度。
另外,为了限制训练期间的通信成本,V3版本中还采用了节点限制的路由(Node-Limited Routing)这一通信优化策略,通过根据每个节点上分布的专家的最高亲和度分数的总和,确保每个token在训练过程中最多被发送到M个节点。
由于实施了有效的负载均衡策略,DeepSeek-V3在整个训练过程中维持了专家之间的负载均衡,避免了过载情况的发生。因此,在训练阶段不会丢弃任何token,确保了训练数据的完整性和模型性能的稳定性。此外,为了在推理阶段也保持负载均衡,DeepSeek-V3实现了特定的部署策略,这样在推理时也不会丢弃任何token,进一步确保了模型在实际应用中的性能和可靠性。
多Token预测
多token预测(MTP)是一种通过扩展模型预测范围来增强模型性能的训练策略。通过在训练期间预测多个未来tokens,MTP可以提高数据效率并可能使模型能够更好地规划其表示以进行更远未来的预测。在推理阶段,MTP模块可以被丢弃,而主模型可以独立运行,同时也可以用于推测性解码以提高生成速度。这种方法在提高模型性能的同时,也为推理加速提供了可能性。
MTP模块由多个顺序排列的子模块组成,每个子模块负责预测一个额外的未来Token。每个子模块包含以下组件:
- 共享嵌入层(Embedding Layer):与主模型共享,用于将输入Token映射到嵌入空间。
- 投影矩阵(Projection Matrix):用于将当前Token的表示与后k个Token的嵌入组合起来,作为Transformer块的输入。
- Transformer块(Transformer Block):用于处理输入表示并生成输出表示。
- 输出头(Output Head):与主模型共享,用于将Transformer块的输出映射到词汇表的概率分布。
- 训练目标:对于每个MTP模块,计算一个交叉熵损失(Cross-Entropy Loss),衡量预测分布与真实Token之间的差异:
总损失:将所有MTP模块的损失加权平均,得到最终的MTP损失:
2、预训练Pre-training
数据构建
与DeepSeek-V2相比,DeepSeek-V3的数据集在多语言覆盖上进行了优化,特别是增加了数学和编程样本的比例,并扩展了除英语和中文之外的多语言覆盖。另外数据处理流程经过优化,以减少冗余并保持数据集的多样性。最终DeepSeek-V3的预训练语料库由14.8万亿个高质量和多样化的token组成。
Fill-in-Middle (FIM) 策略:FIM策略能够使模型在保持下一个Token预测能力的同时,能够使模型根据上下文线索准确预测中间文本。
具体来说,采用前缀-后缀-中间(Prefix-Suffix-Middle, PSM)框架来结构化数据,如下所示:
<|fim_begin|>/pre<|fim_hole|>/sur<|fim_end|>/middle<|eos_token|>.
其中,/pre
和/suf
是上下文文本,/middle
是需要预测的中间文本。这种结构在文档级别上作为预打包过程的一部分应用。
DeepSeek-V3的Tokenizer采用了字节级BPE(Byte-level BPE),扩展了词汇表到128K个token。并且在此基础上,Tokenizer的预处理和训练数据经过优化,与DeepSeek-V2相比,新的预处理引入了结合标点符号和换行符的token,以提高多语言压缩效率。但这种技巧可能会在处理多行提示时引入边界偏差,为了缓解这种边界偏差,DeepSeek团队在训练中随机分割了一定比例的这种组合token,使模型能够接触到更广泛的特殊情况,从而减轻偏差。
长上下文扩展
在预训练阶段之后,应用YaRN进行上下文扩展,并执行两个额外的训练阶段,每个阶段包含 1000 步,以逐步将上下文窗口从 4K 扩展到 32K,然后再扩展到 128K。
通过这两个阶段的扩展训练,DeepSeek-V3 能够处理长达 128K 的输入,同时保持强大的性能。图 8 展示了 DeepSeek-V3 在经过监督微调后,在“Needle In A Haystack”(NIAH)测试中的显著表现,展示了其在长达 128K 的上下文窗口长度上的一致性鲁棒性。
3、后训练Post-training
推理数据构建
对于与推理相关的数据集,包括数学、代码竞赛问题和逻辑谜题,数据是通过内部的DeepSeek-R1模型生成的。尽管R1生成的数据具有较高的准确性,但存在过度思考、格式不佳和长度过长等。为了平衡高准确性和清晰简洁性,作者采用了以下方法:
- 开发专家模型:针对特定领域(如代码、数学或一般推理),开发了一个专家模型,使用结合监督微调(SFT)和强化学习(RL)的训练流程。这个专家模型作为最终模型的数据生成器。
- 生成SFT样本:训练过程中,为每个实例生成两种不同类型的SFT样本:
原始响应样本:将问题与其原始响应配对,格式为<问题, 原始响应>
。
系统提示样本:将系统提示与问题和R1响应结合,格式为<系统提示, 问题, R1响应>
。
系统提示经过精心设计,包含指导模型生成带有反思和验证机制的响应的指令。在 RL 阶段,模型利用高温采样生成结合了 R1 生成数据和原始数据模式的响应,经过数百个 RL 步骤后,中间 RL 模型学会了整合 R1 模式,从而战略性地提升整体性能。
专家模型作为数据生成源,在完成 RL 训练阶段后,实施拒绝采样以筛选高质量的 SFT 数据用于最终模型。这种方法确保最终训练数据保留了 DeepSeek-R1 的优势,同时生成简洁且有效的响应。
非推理数据构建
对于非推理数据,如创意写作、角色扮演和简单问答,使用 DeepSeek-V2.5 生成响应,并由人工标注员验证数据的准确性和正确性。
强化学习
强化学习同R1,这里不过多介绍,简单附上相关内容:
组相对策略优化(GRPO):在传统的强化学习设置中,通常需要一个与策略模型大小相同的批评模型来估计基线。为了降低RL训练成本,DeepSeek-R1-Zero采用了GRPO方法。
对于每个问题q,GRPO从旧策略中采样一组输出
,然后通过最大化目标函数来优化策略模型
:
其中ϵ和β是超参数,分别控制裁剪范围和KL散度的权重,是优势值,计算方式如下:
是第i个输出对应的奖励,而均值和标准差是基于整个组的奖励计算得出的。这种标准化处理有助于稳定训练过程,并使得不同输出间的比较更加公平。
奖励模型
在 RL 过程中使用了基于规则的奖励模型(Rule-Based RM)和基于模型的奖励模型(Model-Based RM)。
基于规则的奖励模型:对于可以通过特定规则验证的问题,采用基于规则的奖励系统来确定反馈。例如,某些数学问题具有确定性的结果,要求模型在指定格式(例如在一个框中)提供最终答案,从而允许应用规则来验证其正确性。
基于模型的奖励模型:对于具有自由形式真实答案的问题,依赖奖励模型来确定响应是否符合预期的真实答案。相反,对于没有明确真实答案的问题(如涉及创意写作的问题),奖励模型的任务是根据问题和相应的答案提供反馈。奖励模型是从 DeepSeek-V3 SFT 检查点训练的。
4、Infra
- 对于Infra,了解较少,简单介绍下,后续再深度解读这一章节。
计算集群
DeepSeek-V3的训练是在一个强大的计算集群上完成的,该集群配备了2048个NVIDIA H800 GPU。这种大规模的GPU集群为模型的训练提供了强大的计算能力。具体来说:
- 节点配置
每个节点包含8个GPU,这些GPU通过NVLink和NVSwitch在节点内部进行高速连接。这种连接方式能够实现节点内部的高效通信,减少数据传输的延迟。
- 跨节点通信
不同节点之间的通信则通过InfiniBand(IB)网络实现。IB网络以其高带宽和低延迟的特点,能够有效地支持大规模分布式训练中的数据传输需求。
这种集群配置结合了节点内部的高速NVLink连接和跨节点的IB网络,为DeepSeek-V3的分布式训练提供了强大的硬件支持。
训练框架
DeepSeek-V3的训练由HAI-LLM框架支持,这是一个高效且轻量级的训练框架,专为大规模模型训练设计。该框架采用了多种并行化策略来提高训练效率,具体包括:
- 16路管道并行(Pipeline Parallelism, PP)
将模型的不同层分配到不同的GPU上,通过流水线的方式进行并行计算,减少单个GPU的计算负担。
- 64路专家并行(Expert Parallelism, EP)
跨越8个节点,支持大规模的Mixture-of-Experts(MoE)架构,通过并行化专家层的计算来提高效率。
- ZeRO-1数据并行(Data Parallelism, DP)
通过优化内存管理和通信效率,进一步提升训练速度。
为了进一步优化训练过程,DeepSeek-V3实施了以下工程优化策略:
- DualPipe与计算-通信重叠
DualPipe算法是DeepSeek-V3的一个关键创新,旨在解决跨节点专家并行带来的通信开销问题。具体优化措施包括:
重叠计算和通信:DualPipe算法通过在前向和后向过程中重叠计算和通信阶段,减少了管道气泡,提高了训练效率。每个块被分为四个组件:注意力、全对全分发、MLP和全对全组合。后向块中的注意力和MLP进一步分为输入的后向和权重的后向,类似于ZeroBubble算法。
双向管道调度:采用双向管道调度,同时从管道的两端输入微批次,大部分通信可以完全重叠,从而实现接近零的全对全通信开销。这种策略确保了即使模型进一步扩展,只要保持恒定的计算与通信比例,就可以在跨节点上使用细粒度专家,而不会增加额外的通信成本。
- 跨节点全对全通信的高效实现
为了充分利用IB和NVLink的带宽,DeepSeek-V3开发了高效的跨节点全对全通信内核。具体措施包括:
限制Token分发:每个Token最多分发到4个节点,减少IB流量。
通信重叠:通过NVLink即时转发Token,确保IB和NVLink的通信完全重叠,提高通信效率。
Warp specialization技术:将20个SM划分为10个通信通道,动态调整每个通信任务的warp数量,减少对计算资源的占用。
定制PTX指令:采用定制的PTX指令,自动调整通信块大小,减少L2缓存的使用和对其他SM的干扰。
这些优化措施显著提高了跨节点通信的效率,减少了通信开销。
- 极低内存占用与最小开销
为了减少训练期间的内存占用,DeepSeek-V3采用了以下技术:
RMSNorm和MLA上投影的重计算:在反向传播期间重新计算所有RMSNorm操作和MLA上投影,避免了持久存储其输出激活的需求,显著减少了内存占用。
CPU中的指数移动平均(EMA):将EMA参数存储在CPU内存中,并在每个训练步骤后异步更新,避免了额外的内存和时间开销。
多Token预测的共享嵌入和输出头:通过将模型的最浅层和最深层部署在同一个PP等级上,实现MTP模块和主模型之间的物理共享,进一步提高了内存效率。
这些内存优化措施使得DeepSeek-V3能够在不使用昂贵的张量并行(TP)的情况下进行训练,显著降低了训练成本。
FP8 训练
FP8训练是DeepSeek-V3的一个重要创新,旨在通过低精度计算提高训练效率,同时保持模型的数值稳定性。
DeepSeek-V3采用了一种细粒度的混合精度框架,利用FP8数据格式进行训练。该框架的主要特点包括:
- 核心计算的低精度化:
GEMM操作:大多数核心计算内核(如矩阵乘法GEMM)以FP8精度执行。这些操作接受FP8张量作为输入,并生成BF16或FP32输出。例如,前向传播(Fprop)、激活反向传 播(Dgrad)和权重反向传播(Wgrad)均以FP8精度执行。这种设计理论上比BF16方法快一倍,并且显著减少了内存消耗。
存储优化:FP8 Wgrad GEMM允许激活以FP8格式存储,用于反向传播,进一步减少了内存使用
- 关键操作的高精度保留:
嵌入模块、输出头、MoE门控模块、归一化算子和注意力算子:这些操作对精度较为敏感,因此保留其原始精度(如BF16或FP32),以确保训练的数值稳定性。
主权重、权重梯度和优化器状态:这些关键参数以更高精度存储,以保证训练过程中的数值稳定性。通过在分布式训练系统中跨多个数据并行(DP)等级进行分片,可以最小化这些高精度组件带来的内存开销。
为了提高低精度训练的准确性,DeepSeek-V3引入了多种策略,重点关注量化方法和乘法过程:
- 细粒度量化:
激活量化:激活值以1x128的瓦片为基础进行分组和缩放,即每个Token每128个通道。这种方法能够更好地适应激活值中的异常值,减少量化误差。
权重量化:权重以128x128的块为基础进行分组和缩放,即每128个输入通道每128个输出通道。这种块级量化方法能够有效管理权重中的异常值。
每组缩放因子:在GEMM操作的内部维度上引入每组缩放因子,这在标准FP8 GEMM中并不直接支持。结合精确的FP32累积策略,可以高效实现这一功能。
- 增加累积精度:
提升到CUDA Core:为了提高FP8 GEMM的精度,DeepSeek-V3采用了一种策略,将中间结果从Tensor Core提升到CUDA Core进行高精度累积。具体来说,当累积间隔达到128个元素时,将部分结果复制到CUDA Core上的FP32寄存器中,进行全精度累积。这种策略显著提高了计算精度,同时保持了Tensor Core的高利用率。
最小累积间隔:实验表明,设置累积间隔为128个元素(相当于4个WGMMA操作)是提高精度与引入开销之间的最佳平衡点。
- 尾数优先于指数:
E4M3格式:与之前工作采用的混合FP8格式(如E4M3用于前向传播,E5M2用于反向传播)不同,DeepSeek-V3在所有张量上采用E4M3格式(4位指数和3位尾数),以获得更高精度。这种方法的可行性归因于细粒度量化策略,即瓦片和块级缩放。
- 在线量化:
动态缩放:在线计算每个1x128激活瓦片或128x128权重块的最大绝对值,并基于此导出缩放因子,然后将激活或权重在线量化为FP8格式。这种方法避免了延迟量化中保留历史最大值的复杂性,简化了框架设计。
结合FP8训练框架,DeepSeek-V3进一步减少了内存消耗和通信开销:
- 低精度优化器状态:
BF16格式:采用BF16数据格式跟踪AdamW优化器中的第一和第二矩,显著减少了内存占用,同时保持了训练精度。
主权重和梯度:主权重和梯度仍然以FP32格式存储,以确保数值稳定性。
- 低精度激活:
FP8缓存:在Wgrad操作中,激活以FP8格式缓存,显著减少了内存使用。
- 特殊处理:
注意力算子后的线性算子输入:这些激活对精度较为敏感,因此采用定制的E5M6数据格式,并在反向传播中从1x128量化瓦片转换为128x1瓦片。
MoE中的SwiGLU算子输入:为了进一步减少内存成本,这些激活在反向传播中重新计算,采用FP8格式存储,以平衡内存效率和计算精度。
- 低精度通信:
激活量化:在MoE上投影之前,将激活量化为FP8,然后应用分发组件,以减少通信开销。
保留关键部分的高精度:对于前向和后向组合组件,仍然以BF16格式保留,以保持训练精度。
5、预训练结果
基准数据集
- 多学科多项选择:MMLU、MMLU-Redux、MMLU-Pro、MMMLU、C-Eval 和 CMMLU。
- 语言理解和推理:HellaSwag、PIQA、ARC 和 BigBench Hard(BBH)。
- 闭卷问答:TriviaQA 和 NaturalQuestions。
- 阅读理解:RACE、DROP、C3 和 CMRC。
- 指代消解:CLUEWSC 和 WinoGrande。
- 语言建模:Pile。
- 中文理解和文化:CCPM。
- 数学:GSM8K、MATH、MGSM 和 CMath。
- 代码:HumanEval、LiveCodeBench-Base(0801-1101)、MBPP 和 CRUXEval。
- 标准化考试:AGIEval,包括英语和中文子集。
指标
- 准确率(EM, Exact Match):用于衡量模型生成的文本与参考答案完全匹配的比例。
- F1分数:用于衡量模型生成的文本与参考答案的重叠程度,通常用于阅读理解和问答任务。
- 通过率(Pass@1):用于衡量模型生成的代码或解决方案通过测试的比例,通常用于代码生成和编程竞赛任务。
- 困惑度(Perplexity):用于衡量模型对文本序列的预测不确定性,数值越低表示模型的预测越准确。
- 每字节比特数(BPB, Bits-Per-Byte):用于衡量模型对每个字节的预测不确定性,数值越低表示模型的预测越准确,适用于语言建模任务。
主要结果
DeepSeek-V3-Base在几乎所有基准测试中都显著优于DeepSeek-V2-Base和 Qwen2.5 72B Base,并且在大多数基准上超越了 LLaMA-3.1 405B Base(激活参数是DeepSeek-V3的11倍),基本上成为了最强的开源模型。
多Token预测(MTP)策略的影响
在多个基准测试中,使用MTP策略在大多数评估基准上一致地提升了模型性能
无辅助损失的负载平衡策略
从表5中可以看出,与传统的基于辅助损失的负载平衡方法相比,DeepSeek-V3采用的无辅助损失策略在大多数评估基准上一致地实现了更好的模型性能。
批次级负载均衡与序列级负载均衡
通过对比无辅助损失方法(即批次级负载均衡)与序列级辅助损失方法,研究两者在平衡范围上的不同(批次级 vs 序列级),以及这种差异如何影响专家模型的专业化程度。
实验结果显示,批次级负载均衡不仅促进了专家的专业化,还可能带来更好的模型性能或至少不劣于序列级负载均衡方法。
尽管无辅助损失策略是主要方法,但为了防止极端不平衡,作者还是引入了序列级辅助损失。这个辅助损失的权重非常小(α\alphaα=0.0001),其主要目的是避免在单个序列中出现极端不平衡的情况,而不是强制每个序列内的负载完全均衡。
6、后训练结果
基准数据集
除基础模型测试基准外,仍使用了下列基准数据集:
- 语言理解与问答:IFEval、FRAMES、LongBench v2、GPQA、SimpleQA、C-SimpleQA、
- 代码生成与软件工程:SWE-Bench Verified、Aider 1、LiveCodeBench(2024年8月至11月的问题)、Codeforces 2
- 数学问题解决:CNMO 2024(中国国家高中数学奥林匹克)、AIME 2024(美国数学邀请赛)
- 多语言能力:C-SimpleQA
- 开放性对话与生成:IFEval、FRAMES
结果
在所有评估基准中,几乎全部超越顶级开源模型Qwen-2.5 72B-Inst和LLaMA-3.1 405B-Inst,与顶级闭源模型如GPT-4o和Claude-3.5-Sonnet的竞争中也展现出相当的竞争力
开放性评估
AlpacaEval 2.0:在简单任务写作和问答场景中,DeepSeek-V3的准确率达到70.0,显著优于其他模型。
Arena-Hard:在复杂提示处理任务中,DeepSeek-V3的胜率达到85.5,与Claude-3.5-Sonnet相当,成为首个超过85%的开源模型。
作为生成式奖励模型
DeepSeek-V3在RewardBench上的表现与GPT-4o和Claude-3.5-Sonnet相当,显示出其作为生成式奖励模型的潜力。通过投票机制,DeepSeek-V3的性能可以进一步提升。
知识蒸馏的有效性
基于 DeepSeek-V2.5 消融了从 DeepSeek-R1 进行蒸馏的贡献。通过从DeepSeek-R1系列模型中蒸馏推理能力,DeepSeek-V2.5在代码生成和数学问题解决任务中表现出显著提升。
文中提出:研究表明,从推理模型进行知识蒸馏为后训练优化提供了一个有前景的方向。虽然目前的工作集中在从数学和编码领域蒸馏数据,但这种方法显示出在需要复杂推理的其他认知任务中增强模型性能的潜力。这些特定领域的有效性表明,长 CoT 蒸馏对于增强其他领域的模型性能可能具有重要价值。进一步探索这一方法在不同领域的应用仍然是未来研究的重要方向。
自我奖励机制
在强化学习(RL)中,奖励信号对于指导模型的学习过程至关重要。然而,在很多实际应用场景中,并没有简单的方法来获得准确的外部奖励信号,特别是在那些难以通过自动化工具验证的任务中。DeepSeek-V3采用了所谓的“宪法AI”方法,这是一种利用模型自身能力来评估结果并提供反馈作为奖励信号的技术。
具体来说,这种方法依赖于DeepSeek-V3模型自己对生成内容进行投票评估,以此作为自我奖励的基础。这种策略不仅增强了模型与人类价值观的一致性(即对齐),而且提高了其在主观评估任务中的表现。此外,通过整合额外的“宪法输入”,即一组预定义的原则或指导方针,可以引导模型朝着更符合预期的方向优化。
多Token预测的评估:DeepSeek-V3通过多Token预测(MTP)技术,在推理过程中实现了显著的加速。实验表明,额外预测的Token接受率在85%到90%之间,表现出了一致的可靠性,使得模型的解码速度提升了1.8倍。
7、总结
从结构上来看,DeepSeek-V3的三大贡献主要是:
- 多头潜在注意力机制MLA,通过低秩压缩注意力键(Key)和值(Value),减少了在推理时需要缓存的KV空间,在保证模型的表达能力的同时提高了训练和推理的效率,并降低了内存消耗。
- MoE,根据输入数据的特点,动态路由输入数据到最合适的专家子集,只激活相关的专家,从而减少不必要的计算,提高计算效率。并且MoE结构可以增加更多的专家,很容易扩展到更大的规模以处理更复杂的任务,不同的专家也可以专门化处理不同类型的数据或任务,从而提高模型在特定任务上的性能。
- 多Token预测MTP,在传统的训练过程中,模型通常只预测下一个Token。而MTP策略要求模型预测多个未来的Tokens,这增加了训练信号的数量,从而可能提高模型的学习效率和性能。并且MTP通过预测多个未来的Tokens,可以帮助模型更好地规划其内部表示,从而改善对长序列的建模能力。在推理阶段,MTP可以被用来实现推测性解码(speculative decoding),即模型可以并行生成多个Tokens,而不是一个接一个地生成。这种方法可以显著提高生成速度,从而减少推理时间。
在DeepSeek-V3的技术报告中,还详细介绍了工程训练中算法、框架和硬件的协同设计,尤其是设计了FP8混合精度训练框架,解决了跨节点MoE训练中的通信瓶颈问题,实现了计算与通信的高效重叠,显著降低了训练成本。对大模型开发具有非常强的指导和参考意义。
这里还有一个细节,在DeepSeek-V3的开发过程中,DeepSeek-R1就已经被用作知识蒸馏的源模型,以提升DeepSeek-V3的推理能力。这里猜测R1是根据V2.5训练得到,并且报告中提到DeepSeek-R1生成的数据存在过度思考、格式不佳和长度过长等问题,这里猜测是DeepSeek-R1-Zero版本。从这里猜测,DeepSeek团队在V3发布之前就已经有了R1的初代模型训练和使用,并在V3发布之后,继续基于V3训练了更强大更完善的R1模型。