MTP¶
MTP(Multi-Token Prediction,多Token预测)是DeepSeek中提出的一种用于单次生成多个token的并行解码方法。 MTP并行解码的核心思想是在推理过程中,模型不仅预测下一个token,而且会同时预测多个token,从而显著提升模型生成速度。
参数说明¶
开启MTP特性,需要配置的参数如表1所示。
表 1 MTP特性补充参数:ModelDeployConfig中的ModelConfig参数
| 配置项 | 取值类型 | 取值范围 | 配置说明 |
|---|---|---|---|
| plugin_params | std::string | plugin_type: mtp num_speculative_tokens: [1] |
配置示例:{\"plugin_type\":\"mtp\",\"num_speculative_tokens\": 1} 【注】num_speculative_tokens配置建议:对于低时延场景,可配置使用1或2,对于高吞吐场景,建议配置不超过1 |
特性叠加¶
MTP与以下特性可支持叠加:
- 支持prefix cache 和 kvcache池化
- 异步调度
- kv_cache_int8量化
- function call
- 思考解析
- PD分离(P、D节点需要同时配置)
MTP与以下特性可支持在部分场景叠加
- context_parallel
- sequence_parallel
限制与约束¶
- Atlas 800I A2 推理服务器和Atlas 800I A3 超节点服务器支持此特性。
- 当前仅DeepSeek-R1和DeepSeek-V3的W8A8量化模型、KV Cache int8量化模型支持此特性。
- 该特性支持W4A8量化。
- 该特性不能和并行解码、Multi-LoRA、SplitFuse同时使用。
- 该特性在PD混部场景叠加context_parallel和sequence_parallel时,仅支持num_speculative_tokens配置为1
- 该特性在大EP场景叠加context_parallel和sequence_parallel时,仅P节点支持开启context_parallel和sequence_parallel。
- 该特性暂不支持n、best_of、use_beam_search、logprobs等与多序列推理相关的后处理参数。
- MTP惩罚类后处理仅支持重复惩罚。
执行推理¶
-
打开Server的config.json文件。
-
whl包安装方式:
-
run包安装方式:
-
-
配置服务化参数。在Server的config.json文件添加"plugin_params"字段,参数字段解释请参见表1,服务化参数说明请参见配置参数说明(服务化)章节,参数配置示例如下。
"ModelDeployConfig" : { "maxSeqLen" : 2560, "maxInputTokenLen" : 2048, "truncation" : 0, "ModelConfig" : [ { "plugin_params": "{\"plugin_type\":\"mtp\",\"num_speculative_tokens\": 1}", "modelInstanceType" : "Standard", "modelName" : "DeepSeek-R1_w8a8", "modelWeightPath" : "/data/weights/DeepSeek-R1_w8a8", "worldSize" : 8, "cpuMemSize" : 5, "npuMemSize" : -1, "backendType" : "atb", "trustRemoteCode" : false } ] }, -
启动服务。
-
whl包安装方式:
-
run包安装方式:
-