菜单

多令牌预测 (MTP)

相关源文件

目的与范围

本文档详细介绍了 DeepSeek-V3 中实现的 Multi-Token Prediction (MTP) 系统。MTP 是一种训练目标和推理加速技术,它使模型能够在一次前向传播中预测多个令牌。本文档涵盖了 MTP 的架构、权重结构、实现细节及其在投机解码中的应用。有关模型整体架构的信息,请参阅 模型架构概述

多令牌预测概述

Multi-Token Prediction (MTP) 是 DeepSeek-V3 中用于提高模型性能和推理效率的一项技术。与一次仅预测一个令牌的传统自回归模型不同,MTP 使模型能够在一次前向传播中预测序列中的多个后续令牌,从而显著加速推理。

MTP 的工作原理是添加专门的模块,这些模块不仅预测下一个令牌,还预测序列中的多个后续令牌。在推理过程中,这些预测可用于投机解码,在该过程中,多个预测的令牌在一步中得到验证,从而减少了模型前向传播的次数。

来源:README.md66-68 README.md99-103

MTP 架构

DeepSeek-V3 中的 MTP 系统包含与主模型架构集成的专用模块。这些模块与主模型共享部分参数,同时保持其自身的独特组件。

MTP 架构包括

  1. 共享组件:

    • 嵌入层(与主模型相同)
    • 输出头(与主模型相同)
  2. MTP 特有组件:

    • E-Norm 和 H-Norm:用于标准化的 RMSNorm 层
    • EH Projection:对标准化输出进行降维
    • 附加 Transformer 层:包含自注意力机制和 MLP 组件

来源:README_WEIGHTS.md33-48

MTP 权重结构

DeepSeek-V3 模型权重分为两个主要部分:主模型权重(6710 亿参数)和 MTP 模块权重(140 亿参数)。MTP 模块占模型总大小的约 2%。

MTP 权重结构的关键要点

  1. 参数分布:

    • MTP 拥有 115 亿个独特参数(不包括共享组件)
    • MTP 拥有 24 亿个激活参数(包括共享组件)
  2. 参数共享:

    • 嵌入层(9 亿参数)在主模型和 MTP 之间共享
    • 输出头(9 亿参数)也共享
  3. 配置参数:

    • MTP 模块的数量由配置中的 num_nextn_predict_layers 字段指定
    • 开源的 DeepSeek-V3 包含 1 个 MTP 模块

来源:README_WEIGHTS.md33-39 README_WEIGHTS.md6-7 README.md99-100

实现细节

DeepSeek-V3 中的 MTP 系统通过模型架构中的特定结构组件实现

组件描述目的
embed_tokens与主模型共享的嵌入层令牌嵌入
enorm & hnormRMSNorm 层用于投机解码的标准化
eh_proj投影层对标准化输出进行降维
model.layers.61.self_attn自注意力机制处理令牌关系
model.layers.61.mlp多层感知机处理令牌特征
shared_head与主模型共享的输出投影令牌预测

MTP 模块通过以下方式工作:

  1. 接收与主模型相同的输入嵌入
  2. 应用专门的标准化和投影
  3. 通过额外的 Transformer 层进行处理
  4. 使用共享的输出头来预测未来的令牌

在模型配置中,MTP 模块以紧随主模型隐藏层之后的层 ID 加载。对于 DeepSeek-V3,具有 61 个主 Transformer 层,MTP 模块位于层 ID 61。

来源:README_WEIGHTS.md43-48 README_WEIGHTS.md54-56

使用 MTP 进行投机解码

MTP 的关键优势之一是它能够实现投机解码,通过同时预测和验证多个令牌来加速推理。

投机解码过程

  1. 主模型生成序列中的下一个令牌
  2. MTP 模块预测多个后续令牌
  3. 主模型通过生成实际的下一个令牌来验证这些预测
  4. 如果预测匹配,则一次接受多个令牌
  5. 如果预测不同,则只接受已验证的令牌

这个过程减少了推理过程中所需的前向传播次数,从而显著加快了文本生成速度。

来源:README.md66-68 README_WEIGHTS.md44

MTP 的优势

MTP 在 DeepSeek-V3 模型中提供了几个关键优势

  1. 性能提升:MTP 训练目标提高了模型在各种基准测试中的整体性能。

  2. 推理加速:MTP 支持投机解码,通过并行预测多个令牌,可以显著减少文本生成所需的时间。

  3. 参数效率:通过与主模型共享关键组件(嵌入层和输出层),MTP 模块与模型总大小(6850 亿)相比,仅增加了相对较少的参数(140 亿)。

  4. 无缝集成: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 在不同推理框架中的实现日益成熟,用户可以期待性能的提高和功能的扩展。

未来潜在的发展可能包括:

  • 增强的投机解码算法
  • 支持可变预测长度
  • 与现有推理优化技术的改进集成
  • 特定于框架的 MTP 优化

来源:README.md102-103