诞生背景在MTP出现之前LLM的推理流程的复杂程度是I n p u t T o k e n × T F B l o c k L e n g t h × N I t e r InputToken \times TFBlock Length \times NIterInputToken×TFBlockLength×NIter因此你会发现真正会影响LLM图例速度的点在于Transformer Block在LLM模型中的深度即使当我们仅仅输入了一个Token如果Transformer Block足够深那么它也会计算很长时间。更何况现实是我们与LLM聊天时并不会仅仅输入一个Token。而这也是MTP所要亟待解决的问题。技术介绍多Token预测MTP将在每个位置上的Token从原来的1个扩展到N个N由推理引擎配置文件提供。MTP通过增加额外的预测目标来提升推理引擎的吞吐量即Token/s同时也可能促使表示学习提前预测未来的Token。计算复杂程度变成了I n p u t T o k e n × T F B l o c k L e n g t h × M T P S i z e N I t e r ​ I n p u t T o k e n × N I t e r InputToken \times TFBlockLength \times MTPSizeNIter​ InputToken×NIterInputToken×TFBlockLength×MTPSizeNIter​InputToken×NIter下图展示了Deepseek-v3中MTP的应用示例通过上图可以清楚的看到Deepseek-v3由一下三个模块组成主模型负责优先处理基本的输入TokenMTP模块1负责接收来自主模型输出头的Embedding向量MTP模块2负责接收来自MTP模块输出头的Embedding向量在这个架构中主模型的深度往往决定了后面MTP模块输出的质量因此我们可以很清晰的看到主模型的深度是Depth Transformer Block × Layer \text{Depth} \text{Transformer Block} \times \text{Layer}DepthTransformer Block×Layer在主模型推理完成后MTP将截胡来自主模型输出头的向量来用于自己的二次推理。但为了保证上下文的逻辑与时间一致性MTP模块不得不要重新计算输入的Token。在接收到原始输入Embedding和主模型的Embedding后MTP模块通过RMSNorm对其进行归一化和FC映射以确保MTP模块中的Transformer块进行预测不过由于主模型已经为MTP模块打了非常坚实的基础因此MTP模块的Transformer块只有一层。经过MTP模块我们会至少得到OutputToken T m a i n ( T m a i n draft-n-max ) × mtpsize \text{OutputToken} T_{main} (T_{main} \text{draft-n-max}) \times \text{mtpsize}OutputTokenTmain​(Tmain​draft-n-max)×mtpsize测试为了方便对比将使用Llama.cpp针对Qwen3.6-27B-MTP在开启MTP和未开启MTP状态下进行吞吐量测试测试平台采用AutoDL GPU实例英特尔至强 铂金8470Q , 90G RAM, RTX 5090 32G我将以如下方式启动llama.cppllama-server-hfunsloth/Qwen3.6-27B-MTP-GGUF:IQ4_XS\--aliasqwen3.6-27b-mtp\--port8000\--spec-type draft-mtp\--spec-draft-n-max3\--spec-draft-n-min0.3\--temp0.6\--repeat-penalty1.05\-faon其中控制MTP行为的参数为spec-type当使用draft-mtp时表明llama.cpp将激活GGUF模型中的MTP模块前提是模型本身支持MTPspec-draft-n-max指定最大将生成多少个草稿Tokenspec-draft-n-min最低的容忍置信度接下来我们得到了如下图片你可以发现在开启MTP多Token预测模式下推理性能提升了约1.3倍。同样的同一个chat请求在开启MTP推理后反而其触发解码的次数要比非MTP解码的次数少了整整4次这样也能保证在资源受限的情况下推理速度变得更快结论所以我们可以显而易见的发现MTP其实也是一种基于空间换时间的优化方法。它在主模型的基础上引入了MTP模块的概念虽然单个MTP模块的网络深度并不算深基本是一个Embedding头两个RMSNorm模块一个Transformer块和最后接手的FC输出头但是因为主模型开了个“好头”所以MTP的输出质量是并不需要额外担心。