MPT (MTP, Multi-Token Prediction) 原理详解
MPT (MTP, Multi-Token Prediction) 原理详解注在 vLLM 与 DeepSeek 体系中该方案正确缩写为MTP (Multi-Token Prediction多 Token 预测)“MPT” 是常见笔误。下文统一使用MTP。一、论文背景MTP 作为一种推测解码Speculative Decoding方案最早由DeepSeek-V3 Technical Report (arXiv:2412.19437)系统性提出并工业化落地。核心思想传统自回归解码每个 forward pass 只产生 1 个 token造成 GPU 算力浪费。MTP 在主模型Target Model之外挂载一个或多个轻量级MTP 模块与主模型共享 embedding 和 lm_head串行预测未来 D 个 token 作为草稿draft再由主模型一次性并行验证verify。被接受的草稿 token 直接产出相当于一次 forward 输出多个 token从而无损加速推理。DeepSeek-V3 的 671B 总参数中包含约14B 的 MTP 模块权重证明了其工程可行性。后续 MiMo、Qwen3、GLM4、ERNIE、Gemma4 等模型家族都引入了类似机制见 vLLM 中*_mtp.py实现。二、MTP 模块架构结合 vLLM 源码参考 [deepseek_mtp.py](file:///workspace/vllm/model_executor/models/deepseek_mtp.py)DeepSeek-MTP 的核心结构如下1. 单个 MTP 层DeepSeekMultiTokenPredictorLayerclassDeepSeekMultiTokenPredictorLayer(nn.Module):def__init__(self,vllm_config,prefix):self.enormRMSNorm(...)# 对输入 embedding 做归一化self.hnormRMSNorm(...)# 对主模型 hidden state 做归一化self.eh_projnn.Linear(hidden*2,hidden,biasFalse)# 融合投影self.shared_headSharedHead(...)# 与主模型共享的输出头self.mtp_blockDeepseekV2DecoderLayer(...)# 一个 Transformer 解码块每个 MTP 模块包含共享 embedding 层embed_tokens与主模型共享共享输出头shared_head与主模型 lm_head 共享一个 Transformer 解码块mtp_block含 MLA DeepSeekMoE投影矩阵eh_proj将[input_embed, prev_hidden]拼接后投影回 hidden_size2. forward 流程[deepseek_mtp.py#L99-L121](file:///workspace/vllm/model_executor/models/deepseek_mtp.py#L99-L121)defforward(self,input_ids,positions,previous_hidden_states,inputs_embeds,spec_step_idx):# 1. mask 掉 position 0 的输入首 token 不需要预测inputs_embedstorch.where(positions0,0,inputs_embeds)# 2. 两路归一化inputs_embedsself.enorm(inputs_embeds)previous_hidden_statesself.hnorm(previous_hidden_states)# 3. 拼接 线性投影得到新的 hiddenhidden_statesself.eh_proj(torch.cat([inputs_embeds,previous_hidden_states],dim-1))# 4. 经过一个 Transformer blockhidden_states,residualself.mtp_block(positions,hidden_states,None)returnresidualhidden_states3. 多层 MTP 的组织[deepseek_mtp.py#L124-L182](file:///workspace/vllm/model_executor/models/deepseek_mtp.py#L124-L182)DeepSeekMultiTokenPredictor持有num_nextn_predict_layers个 MTP 层DeepSeek-V3 默认 1 层。single-module MTP会把同一层重复使用通过spec_step_idx % num_mtp_layers选层multi-module MTP则每一层负责一个草稿位置。三、MTP 推测解码完整流程vLLM V1 中 MTP 复用EagleProposer见 [eagle.py](file:///workspace/vllm/v1/spec_decode/eagle.py)区别仅在于pass_hidden_states_to_modelTrue且 method 为mtp。整个流程由 [llm_base_proposer.py](file:///workspace/vllm/v1/spec_decode/llm_base_proposer.py) 的propose方法编排阶段 0主模型正常 decode 一步主模型对当前 token 做一次 forward输出target_token_ids当前 tokentarget_hidden_states最后一个 token 的隐状态关键输入next_token_ids采样得到的下一个 token即 bonus token 候选阶段 1第一轮草稿[llm_base_proposer.py#L427-L473](file:///workspace/vllm/v1/spec_decode/llm_base_proposer.py#L427-L473)把next_token_ids当作 MTP 的input_ids把主模型的target_hidden_states作为previous_hidden_states送入 MTP 模块eh_proj([embed(next_token), hnorm(hidden)]) → mtp_block → hidden对hidden调用compute_logits_greedy_sample得到第 1 个 draft token若num_speculative_tokens 1直接返回进入验证。阶段 2迭代生成剩余草稿[llm_base_proposer.py#L525-L588](file:///workspace/vllm/v1/spec_decode/llm_base_proposer.py#L525-L588)fortoken_indexinrange(self.num_speculative_tokens-1):input_idsdraft_token_ids_list[-1].int()# 上一个 draft token...model_kwargs{input_ids:input_ids,positions:...,hidden_states:self.hidden_states[...],# 上一轮 MTP 输出}ret_hidden_statesself.model(**model_kwargs)# 再次走 MTP 层draft_token_idsself._greedy_sample(last_hidden_states)draft_token_ids_list.append(draft_token_ids)每一步把上一轮的 draft token 上一轮的 hidden state 喂回 MTP串行生成 D 个草稿 token。阶段 3主模型并行验证把[bonus_token, draft_1, draft_2, ..., draft_D]拼成一个序列主模型一次 forward 同时计算这 D1 个位置的 logits由 [RejectionSampler](file:///workspace/vllm/v1/worker/gpu/spec_decode/rejection_sampler.py) 执行验证贪婪策略草稿 token 与主模型 argmax 一致则接受遇到第一个不匹配即停止后续全部拒绝拒绝采样策略对每个草稿 token 验证P_target / P_draft ≥ UU 为均匀随机数接受则继续否则从max(0, 1 - P_target/P_draft)概率重采样替代 token阶段 4输出第一个 bonus token 必然正确来自主模型自身后续被接受的草稿 token 直接产出第一个被拒绝的位置由主模型重采样得到修正 token一次 forward 可能产出1 ~ D1个 token四、举例说明配置num_speculative_tokens 3MTP 模块为 single-module重复使用同一层。Prompt 为中国的首都是主模型已生成北京现在要继续生成。Step A主模型 decode 第 N 步输入 token北京主模型 forward → hidden_stateh_N采样得到 bonus tokennext_token_id 是Step BMTP 起草3 个草稿Draft 1input_ids 是prev_hidden h_NMTP forwardeh_proj([embed(是), hnorm(h_N)]) → mtp_block → h₁greedy sample →中国Draft 2input_ids 中国prev_hidden h₁MTP forward →h₂greedy sample →的首Draft 3input_ids 的首prev_hidden h₂MTP forward →h₃greedy sample →都草稿序列[是, 中国, 的首, 都]第 1 个是 bonus后 3 个是 MTP 草稿Step C主模型并行验证将[是, 中国, 的首, 都]作为 4 个连续位置一次性送入主模型得到每个位置的 target logits。假设主模型的 argmax 结果为位置草稿 token主模型 argmax是否匹配0是是✅ (bonus必然接受)1中国中国✅ 接受2的首的首✅ 接受3都政治❌ 拒绝Step D输出接受[是, 中国, 的首]三个 token在位置 3 用主模型 logits 重采样得到政治作为修正 token本次 decode 共产出4 个 token是中国的首政治下一步从政治继续回到 Step A反例草稿质量差时若 Draft 1 就被拒绝主模型认为是在而非是则只产出 bonus token在 修正 token相当于退化为普通 decode但因 MTP 模块很轻量开销远小于一次完整主模型 forward。五、关键设计要点总结无损性通过拒绝采样保证 MTP 输出分布与主模型自回归解码完全等价数学可证。参数共享MTP 与主模型共享 embedding 和 lm_head新增参数仅 ~14B/671B约 2%。hidden state 复用MTP 直接消费主模型最后一层 hidden state避免重复计算这是与 EAGLE 的相似之处也是 vLLM 中 MTP 复用EagleProposer的原因。串行起草 并行验证起草 D 个 token 需要 D 次轻量 MTP forward但验证只需 1 次主模型 forward主模型算力被充分利用。single-module vs multi-modulevLLM 单模块复用同一 MTP 层spec_step_idx % num_mtp_layers多模块则为每个位置配独立 MTP 层需要 re-prefill 机制修正被拒绝 token 留下的 stale KV cache见 PR #48892。Sources:DeepSeek-V3 Technical Report (arXiv:2412.19437)vLLM MTP 文档vLLM Ascend MTP 文档vLLM PR #48892: Multi-Module MTP support

相关新闻

MySQL SQL注入攻防实战:从原理到防御的完整指南

MySQL SQL注入攻防实战:从原理到防御的完整指南

1. 项目概述:为什么SQL注入依然是头号威胁干了这么多年后端开发和安全审计,SQL注入这个名字听得耳朵都快起茧子了,但每次做渗透测试或者代码审计,它依然是最常见、最容易被利用的漏洞,没有之一。尤其是在使用MySQL这类…

2026/7/28 4:49:27 阅读更多 →
Linux数据链路层与以太网核心技术解析

Linux数据链路层与以太网核心技术解析

1. 数据链路层与以太网基础解析数据链路层作为OSI七层模型中的第二层,承担着将物理层提供的比特流转换为逻辑数据帧的关键任务。在Linux网络栈中,这一层的实现直接影响着网络通信的可靠性和效率。以太网作为目前最主流的局域网技术,其帧结构设…

2026/7/28 4:49:27 阅读更多 →
逆向工程静态分析实战:从IDA Pro基础到CTF赛题ShadowPhases解析

逆向工程静态分析实战:从IDA Pro基础到CTF赛题ShadowPhases解析

1. 项目概述:从一道赛题看逆向分析的“静”与“动”最近在复盘蓝桥杯网络安全赛的题目,发现“ShadowPhases”这道逆向题很有意思。它不像有些题目那样上来就让你动态调试,跟程序“赛跑”,而是把核心逻辑巧妙地隐藏在静态的二进制文…

2026/7/28 4:49:27 阅读更多 →

最新新闻

如何安全解锁Switch全部功能:Atmosphere大气层系统完整指南

如何安全解锁Switch全部功能:Atmosphere大气层系统完整指南

如何安全解锁Switch全部功能:Atmosphere大气层系统完整指南 【免费下载链接】Atmosphere-stable 大气层整合包系统稳定版 项目地址: https://gitcode.com/gh_mirrors/at/Atmosphere-stable 想要完全掌控你的Nintendo Switch,体验丰富的自制软件、…

2026/7/29 6:26:43 阅读更多 →
打破平台壁垒:X2X迁移如何解决异构环境下的数据流转难题?

打破平台壁垒:X2X迁移如何解决异构环境下的数据流转难题?

你知道全球共有多少数据吗? 据IDC最新预测,全球数据生成量将在五年内实现规模翻倍。其中,中国市场2025年将产生51.78ZB数据,到2029年增长至136.12ZB,CAGR(复合年均增长率)达到26.9%。 对于企业…

2026/7/29 6:26:43 阅读更多 →
MATLAB数学实验全流程指南:从环境搭建到报告撰写

MATLAB数学实验全流程指南:从环境搭建到报告撰写

1. 从一份实验报告出发:MATLAB在数学实验中的核心价值 最近在整理资料时,翻到了以前在南京邮电大学做的一份MATLAB数学实验报告。这份报告虽然只是课程作业,但如今看来,它几乎囊括了从理论学习到工程实践、从算法验证到结果可视化…

2026/7/29 6:26:43 阅读更多 →
AI自动生成报表的7个致命缺陷:从数据失真到决策灾难,资深架构师连夜重写SOP

AI自动生成报表的7个致命缺陷:从数据失真到决策灾难,资深架构师连夜重写SOP

更多请点击: https://codechina.net 第一章:AI自动生成报表的7个致命缺陷:从数据失真到决策灾难,资深架构师连夜重写SOP AI报表生成工具在金融、零售与SaaS企业中快速铺开,但生产环境暴露出系统性风险。某头部支付平台…

2026/7/29 6:26:43 阅读更多 →
中小企业PLM选型评估报告:国产替代进口的5个决策维度与实施避坑指南

中小企业PLM选型评估报告:国产替代进口的5个决策维度与实施避坑指南

概述 本文面向年营收3000万-2亿元的中小型制造企业,从技术评估视角拆解国产PLM与进口PLM的差异。文中数据来源于e-works《2024中国PLM市场国产化进程年度报告》和IDC 2025 Q2市场追踪报告:2024年国产PLM签约量同比增长32%,同期进口PLM在中小客…

2026/7/29 6:26:43 阅读更多 →
电阻在电路设计中的核心作用:从限流分压到高速匹配的全面解析

电阻在电路设计中的核心作用:从限流分压到高速匹配的全面解析

1. 从“阻碍”到“塑造”:重新认识电阻的核心价值提起电阻,很多刚接触电子电路的朋友第一反应往往是“阻碍电流的元件”,甚至觉得它是个“麻烦制造者”,因为它会消耗能量、产生热量,让电路效率降低。这种理解不能说错&…

2026/7/29 6:25:43 阅读更多 →

日新闻

【RT-DETR多模态创新改进】CVPR 2025 | 独家特征融合创新改进篇 | 引入RLAB残差线性注意力模块,有效融合并强调多尺度特征,多种改进点,适合红外与可见光融合目标检测任务,有效涨点

【RT-DETR多模态创新改进】CVPR 2025 | 独家特征融合创新改进篇 | 引入RLAB残差线性注意力模块,有效融合并强调多尺度特征,多种改进点,适合红外与可见光融合目标检测任务,有效涨点

一、本文介绍 🔥本文在RT-DETR多模态融合目标检测中引入RLAB残差线性注意力模块,可在不同模态特征交互阶段进行多次残差细化,使可见光、红外等特征在尺度、语义和空间位置上更好对齐;随后将细化特征与解码器输出拼接并生成Q、K、V,通过线性注意力自适应强化关键通道、目…

2026/7/29 0:00:23 阅读更多 →
AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础

AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础

AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础 在上一期「AI编程系列」中,我们学习了如何构建一个基础的 AI 问答系统,通过简单的输入输出让模型回应问题。但现实世界中的 AI 应用往往需要处理更复杂的场景:…

2026/7/29 0:00:23 阅读更多 →
AI智能体开发实战:从工具调用到企业级部署

AI智能体开发实战:从工具调用到企业级部署

1. 从被动问答到主动执行:AI Agent的范式转变过去两年,大语言模型最显著的应用形态是聊天机器人——用户提问,AI回答。但真正的生产力革命发生在2023年下半年:当AI学会主动调用工具完成任务时,生产力工具的历史被彻底改…

2026/7/29 0:00:23 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/28 12:04:22 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/28 8:29:16 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/28 5:03:42 阅读更多 →

月新闻