本文档详细介绍了 DeepSeek-V3 中实现的 Multi-Token Prediction (MTP) 系统。MTP 是一种训练目标和推理加速技术,它使模型能够在一次前向传播中预测多个令牌。本文档涵盖了 MTP 的架构、权重结构、实现细节及其在投机解码中的应用。有关模型整体架构的信息,请参阅 模型架构概述。
Multi-Token Prediction (MTP) 是 DeepSeek-V3 中用于提高模型性能和推理效率的一项技术。与一次仅预测一个令牌的传统自回归模型不同,MTP 使模型能够在一次前向传播中预测序列中的多个后续令牌,从而显著加速推理。
MTP 的工作原理是添加专门的模块,这些模块不仅预测下一个令牌,还预测序列中的多个后续令牌。在推理过程中,这些预测可用于投机解码,在该过程中,多个预测的令牌在一步中得到验证,从而减少了模型前向传播的次数。
来源:README.md66-68 README.md99-103
DeepSeek-V3 中的 MTP 系统包含与主模型架构集成的专用模块。这些模块与主模型共享部分参数,同时保持其自身的独特组件。
MTP 架构包括
共享组件:
MTP 特有组件:
DeepSeek-V3 模型权重分为两个主要部分:主模型权重(6710 亿参数)和 MTP 模块权重(140 亿参数)。MTP 模块占模型总大小的约 2%。
MTP 权重结构的关键要点
参数分布:
参数共享:
配置参数:
num_nextn_predict_layers 字段指定来源:README_WEIGHTS.md33-39 README_WEIGHTS.md6-7 README.md99-100
DeepSeek-V3 中的 MTP 系统通过模型架构中的特定结构组件实现
| 组件 | 描述 | 目的 |
|---|---|---|
embed_tokens | 与主模型共享的嵌入层 | 令牌嵌入 |
enorm & hnorm | RMSNorm 层 | 用于投机解码的标准化 |
eh_proj | 投影层 | 对标准化输出进行降维 |
model.layers.61.self_attn | 自注意力机制 | 处理令牌关系 |
model.layers.61.mlp | 多层感知机 | 处理令牌特征 |
shared_head | 与主模型共享的输出投影 | 令牌预测 |
MTP 模块通过以下方式工作:
在模型配置中,MTP 模块以紧随主模型隐藏层之后的层 ID 加载。对于 DeepSeek-V3,具有 61 个主 Transformer 层,MTP 模块位于层 ID 61。
来源:README_WEIGHTS.md43-48 README_WEIGHTS.md54-56
MTP 的关键优势之一是它能够实现投机解码,通过同时预测和验证多个令牌来加速推理。
投机解码过程
这个过程减少了推理过程中所需的前向传播次数,从而显著加快了文本生成速度。
来源:README.md66-68 README_WEIGHTS.md44
MTP 在 DeepSeek-V3 模型中提供了几个关键优势
性能提升:MTP 训练目标提高了模型在各种基准测试中的整体性能。
推理加速:MTP 支持投机解码,通过并行预测多个令牌,可以显著减少文本生成所需的时间。
参数效率:通过与主模型共享关键组件(嵌入层和输出层),MTP 模块与模型总大小(6850 亿)相比,仅增加了相对较少的参数(140 亿)。
无缝集成:MTP 模块旨在与主模型架构协同工作,无需进行重大的结构性更改。
MTP 技术代表了大型语言模型设计中的一种创新方法,以最小的架构开销提供了性能和效率的提升。
来源:README.md66-68 README.md99-100
如 DeepSeek-V3 文档中所述,MTP 支持目前正在社区中积极开发。各种推理框架正在努力整合 MTP 功能
| 框架 | MTP 支持状态 |
|---|---|
| SGLang | 正在开发中,在 optimization plan 中跟踪 |
| LMDeploy | 正在开发中 |
| TensorRT-LLM | 正在开发中 |
| vLLM | 正在开发中 |
| LightLLM | 正在开发中 |
有兴趣利用 MTP 功能的用户应关注这些框架的开发状态,了解 MTP 支持的更新。
来源:README.md102-103 README.md316
DeepSeek-V3 团队鼓励社区贡献以增强和扩展 MTP 功能。随着 MTP 在不同推理框架中的实现日益成熟,用户可以期待性能的提高和功能的扩展。
未来潜在的发展可能包括: