投机解码:技术原理、迭代对比与架构演进展望

一、大模型原生推理底层痛点

大模型文本生成采用标准自回归串行机制(Autoregressive Generation),存在结构性性能瓶颈,传统工程优化手段无法从根源上解决。下面用一个实际生成过程说明:用户输入“请解释注意力机制”,大模型只能逐 Token 输出回答。

图 1 · 原生自回归生成流程(逐 Token 串行)
                flowchart TD
                    A[用户输入:请解释注意力机制] --> B[模型前向计算]
                    B --> C[生成第1个Token:注意力]
                    C --> D[拼接上下文:请解释注意力机制 注意力]
                    D --> B
                    B --> E[生成第2个Token:机制]
                    E --> F[拼接上下文:请解释注意力机制 注意力 机制]
                    F --> B
                    B --> G[生成第3个Token:是]
                    G --> H[继续循环生成下一个Token……]
                    H --> B
                    note["真实生成:每新增一个Token,都要重新执行一次前向计算
问题:长文本轮次多、延迟高、GPU并行潜力没有充分释放"]
📌 核心矛盾: 大模型具备强大的并行计算能力(Transformer 的序列并行特性),但自回归生成范式强制串行依赖,导致“算力富余”与“生成步数瓶颈”之间的矛盾。投机解码正是为化解这一矛盾而生。

二、投机解码核心设计思路

2.1 整体核心逻辑

投机解码的整体思路可以概括为:轻量草稿模型预判,主力大模型批量核验

本质: 用极低的小模型算力开销,置换昂贵的大模型串行迭代开销。在理想情况下,每轮大模型前向可验证 K 个候选 Token,将大模型推理步数从 L 降低至 L / (K · α),其中 α 为接受率(Acceptance Rate)。

图 2 · 宏观协同思路:草稿模型(主角)× 主大模型,一次配合换一轮批量推进
                flowchart TD
                    subgraph Draft["🎯 主角:轻量草稿模型(低算力)"]
                        direction TB
                        D["批量猜测 N 个候选 Token"]
                    end
                    subgraph Main["🛡️ 配角:主大模型(高算力)"]
                        direction TB
                        V["一次前向,批量核验 N 位"]
                    end
                    C["当前上下文"] --> D
                    D -->|候选序列| V
                    V -->|正确保留 + 错误修正| R["一次性推进多个 Token"]
                    R --> NEXT["↺ 更新上下文,进入下一轮"]

                    classDef draftFill fill:#e6f7e6,stroke:#16a34a,stroke-width:2px;
                    classDef mainFill fill:#e1effe,stroke:#2563eb,stroke-width:1px;
                    class Draft draftFill;
                    class Main mainFill;
            
🧭 上图讲了「谁配合谁」——草稿模型先批量猜、主模型后批量验。但一次配合中具体经历了哪些环节?下图把这一轮「配合」拆解成五步串行流程,每一步对应一个明确的动作。
图 3 · 协同过程展开:草稿预判 → 拼接 → 批量校验 → 截断修正(五步循环)
                flowchart TD
                    A[已有上下文] --> B[草稿模型批量猜测N个候选Token]
                    B --> C[拼接:上下文 + N候选Token]
                    C --> D[主大模型:一次前向并行校验全部位置]
                    D --> E{逐个位置匹配检查}
                    E -->|全部匹配| F[全部保留,进入下一轮]
                    E -->|遇到不匹配| G[截断,保留前面正确部分]
                    G --> H[主模型生成正确Token做修正]
                    F --> A
                    H --> A
            

✅ 看完流程,再从一个样例看「流程如何落成架构」:以 DSpark 为例

上面的流程图是通用五步循环。如果想直观理解「草稿模型到底架在哪、特征从哪里来、校验长度怎么控制」,可对照下图的 DSpark 原文示例:草稿模型复用目标模型多层隐层特征,由置信度头动态决定验证长度(基于 arXiv:2607.05147 论文原图重构):

图 4 · DSpark「流程 × 架构」样例:草稿模型复用目标特征 + 置信度动态调度
                flowchart TD
                    subgraph Target["🎯 目标模型 Qwen3-4B(36层)"]
                        direction TB
                        T0["Embedding"] --> TL1["特征层 l₁"] --> TL2["特征层 l₂"] --> TL3["特征层 l₃"] --> TL4["特征层 l₄"] --> TL5["特征层 l₅"] --> T_OUT["输出 Logits"]
                    end

                    subgraph Draft["✏️ 草稿模型 DSpark
(离线实验:5 层 transform,生产:3 层 MoE)"] direction TB DB["并行主干 + 序列模块"] --> D_OUT["草稿候选(block=7)"] DB --> DC["置信度头"] end TL1 -- "h₁" --> FC["fc 融合"] TL2 -- "h₂" --> FC TL3 -- "h₃" --> FC TL4 -- "h₄" --> FC TL5 -- "h₅" --> FC FC --> DB D_OUT --> CAND["候选 tokens"] DC -- "动态验证长度" --> LEN["截断长度"] CAND --> VERIFY["增量校验"] LEN --> VERIFY VERIFY --> ACCEPT["接受前缀 + 重采样"] classDef targetFill fill:#e1effe,stroke:#2563eb,stroke-width:1px; classDef draftFill fill:#e6f7e6,stroke:#16a34a,stroke-width:1px; classDef projFill fill:#fef9e7,stroke:#d97706,stroke-width:1px; classDef flowFill fill:#f3f4f6,stroke:#6b7280,stroke-width:1px,stroke-dasharray: 3 3; class Target targetFill; class Draft draftFill; class FC projFill; class CAND,VERIFY,LEN,ACCEPT flowFill;
🔍 这张样例图如何对应上面的流程?
特征复用 = 「利用当前上下文」:草稿模型借鉴 DFlash 的 KV 注入机制,将目标模型若干指定层(论文表述为特征层集合 {l₁,…,lₘ},此处示意选取 5 层)的隐层特征经线性融合后作为草稿生成的上下文条件,靠主模型已算出的特征做预判,几乎不增加编码开销;
双头输出 = 「批量猜测 N 个候选」:并行主干 + 序列模块产出 block_size=7 个候选 Token,置信度头同步预测每个位置被主模型接受的存活概率;
动态调度 = 「一次并行校验」:置信度头驱动「动态验证长度」,主模型只需对裁剪后的片段做一次增量校验,正确保留、错误重采样,同时规避高并发下的校验冗余。

2.2 关键技术问题:为什么多 Token 可以一次性并行验证?

🔗 想从头验证「串行 vs 并行」的底层对比? → 打开《串行推理并行验证.html》(标准串行生成 vs 批量并行校验 逐矩阵对比)

大模型原生只能串行生成,但具备并行校验能力,这是投机解码成立的底层理论依据:

图 5 · 生成任务为什么必须串行(自回归的因果依赖)
                flowchart LR
                    subgraph GEN["生成任务:必须严格因果"]
                        direction LR
                        G1["t1"] -->|"必须先算"| G2["t2"]
                        G2 -->|"必须先算"| G3["t3"]
                        G3 -->|"必须先算"| GN["tN"]
                    end
                    GEN -->|"每步一次前向"| SLOW["原生推理:N 次前向
迭代轮次多 · 延迟高"] classDef genFill fill:#fdecea,stroke:#dc2626,stroke-width:1px; class GEN genFill;
🧭 那对比完「生成必须串行」,投机解码为什么还能省时间?关键就在下一步:校验与生成是两个完全不同的计算逻辑。生成必须一步一 Token,但校验却可以一整个序列整体并行处理。下图拆解校验为何能并行,以及背后的 Transformer 机制。
图 6 · 校验任务为什么能并行(Transformer 序列整体运算)
                flowchart LR
                    subgraph CHK["✅ 校验任务:可整体并行"]
                        direction LR
                        C0["输入完整序列
[t1 t2 t3]"] --> C1["Transformer 一次前向"] C1 --> C2["同时输出
3 个位置 logits"] end subgraph WHY["为什么 Transformer 能整体并行?"] direction LR W1["注意力 MHA:
对整段序列一次性
矩阵运算(QKᵀV)"] W2["前馈 FFN:
对每个位置
独立并行计算"] W3["层间逐层推进,
同层所有位置
同时算完"] W1 --> W2 --> W3 end CHK -->|"1 次前向校验全部位置"| FAST["投机解码:批量校验
减少大模型迭代次数"] C1 -.背后机制.- WHY classDef chkFill fill:#e6f7e6,stroke:#16a34a,stroke-width:1px; classDef whyFill fill:#e1effe,stroke:#2563eb,stroke-width:1px; class CHK chkFill; class WHY whyFill;
🧠 直觉理解: 投机解码类似于“学生(草稿模型)先快速写出答案草稿,老师(主模型)一次性批改整份卷子,对的打勾、错的改正”。老师只需批改一次,就能处理学生写的多个答案,大幅提升了效率。

三、投机解码核心定位与基础特性

投机解码是大模型推理侧无损加速技术,无需训练、无需微调、无需改动主模型结构,属于纯推理调度优化方案。

通用基础流程: 轻量模型预生成批量候选 Token → 主模型一次性并行校验 → 截断错误、保留有效序列 → 迭代生成。

四、三代投机解码技术整体迭代对比

纯客观维度对比,无主观渲染、无营销修饰。 三代技术代表了投机解码领域从“因果串行”到“全并行”再到“混合自适应”的演进路径。其中 DSpark 数据已根据 arXiv:2607.05147 生产环境实测结果更新。

技术版本 资源消耗 生成方式 并发支撑能力 实测加速比 Token接受率 核心技术特征 主要缺陷
EAGLE 系列 较高 串行因果草稿生成 弱,仅适配低并发 2.0 ~ 3.0× 最高(~70%+) 依托主模型隐层特征,草稿因果合规、稳定性强 无法利用GPU并行算力,高并发吞吐差,资源开销高
DFlash 较低 无约束全并行草稿生成 极强,适配高负载集群 3.0 ~ 4.0×(理论上限最高) 最低(~30% ~ 45%) 批量并行生成Token,硬件利用率拉满,单轮生成量大 无因果依赖,文本逻辑断裂多,无效校验多,有效通过率低
DSpark 均衡 半自回归并行 + 串行校正 强,带硬件动态调度 每用户生成速度 +60%~85%(V4-Flash,相同吞吐下,arXiv:2607.05147 生产实测) 较高(位置级条件接受率全程高位稳定,不随位置衰减) 并行生成打底、串行校正纠错,动态适配GPU负载;相较Eagle3平均接受长度提升+26.7%~+30.9%,相较DFlash提升+16.3%~+18.4% 架构复杂、调度逻辑重,工程部署与调优成本高
📊 关于加速比与接受率: 加速比 = 原生解码耗时 / 投机解码耗时。接受率 = 被主模型接受的草稿 Token 数 / 草稿生成的 Token 总数。两者通常呈负相关:草稿越“激进”(并行、无约束),接受率越低,但单轮生成量更大;草稿越“保守”(串行、因果),接受率越高,但生成速度受限。DSpark 在两者之间取得了较好的工程平衡。

相关论文链接:

📄 EAGLE: Speculative Sampling Without a Draft Model (arXiv:2311.16867) 📄 DFlash: Draft‑free Speculative Decoding via Parallel Token Generation (arXiv:2408.13074) 📄 DSpark: Confidence-Scheduled Speculative Decoding with Semi-Autoregressive Generation (arXiv:2607.05147)

五、分代技术详细解析(算法深度剖析)

🎯 先把时间线讲清楚:投机解码最早(2023 年 Chen 等人的经典投机采样)的思路是拿一个同架构的独立小模型当草稿模型——即额外训练/部署一个同家族的小参数模型,用它先生成候选序列,再由大模型校验。但这套方案在实际部署里有几个致命弱点:① 要多训一个完整小模型,训练与部署成本高② 小模型只能看到离散 token,与主模型分布偏差大,草稿接受率不高③ 多一套模型=多一份显存与工程负担,加速比被小模型自身的推理开销吃掉不少。于是后续工作不再另起炉灶训小模型,而是直接复用大模型自己算好的中间层特征来生成草稿——把「草稿模型」从「额外的一个模型」变成了「主模型身上长出的一颗小脑袋」,既省训练又省部署,草稿与主模型同源、接受率也更高。下面 5.1~5.3 三代方案都遵循这一路线:不再依赖独立草稿模型

5.1 EAGLE 系列(第一代:基于隐层特征的因果串行草稿)

说明:下方为简化逻辑示意图,用于快速理解核心数据流;后续将上传论文原版完整架构图做对照参考。
图 7 · EAGLE ① 架构:主模型顶层嫁接草稿头,复用顶层隐层特征
                flowchart TD
                    subgraph MAIN["主模型骨干"]
                        direction TB
                        E["Embedding"] --> L1["Transformer 层1"]
                        L1 --> L2["层2 …"]
                        L2 --> LN["层N(顶层)
输出隐层特征 h"] end subgraph HEAD["草稿头(1~2 层 FC + 小型自注意力)"] direction TB AT["小型自注意力"] FC["轻量输出层"] AT --> FC end Input["输入上下文 C"] --> E LN -->|"复用特征 h"| HEAD HEAD --> CAND["草稿候选 d1…dK"] classDef mainFill fill:#e1effe,stroke:#2563eb,stroke-width:1px; classDef headFill fill:#e6f7e6,stroke:#16a34a,stroke-width:1px; class MAIN mainFill; class HEAD headFill;
🧭 上图讲了「草稿头架在哪、特征从哪来」——直接嫁接在主模型顶层、复用已算好的隐层特征。但草稿头内部怎么「一个接一个地猜」?这是它区别于全并行草稿的关键。下图拆解草稿头内部的串行因果采样。
图 8 · EAGLE ② 串行采样:草稿头内逐位因果采样(后位依赖前位)
                flowchart TD
                    H["隐层特征 h"]
                    D1["p(d₁|C) 采样 d₁"]
                    D2["p(d₂|C, d₁) 采样 d₂"]
                    D3["p(d₃|C, d₁, d₂) 采样 d₃"]
                    DK["p(dK|C, d₁…dK₋₁) 采样 dK"]
                    H --> D1
                    D1 -->|"将 d₁ 嵌入送回草稿头"| D2
                    D2 -->|"将 d₁,d₂ 嵌入送回"| D3
                    D3 -->|"… 严格因果"| DK
                    DK --> OUT["K 个草稿候选
(文本连贯、逻辑不跳)"] classDef sampleFill fill:#fdecea,stroke:#dc2626,stroke-width:1px; class D1,D2,D3,DK sampleFill;
🧭 草稿猜完了,主模型如何「批改」?——不是简单比 argmax,而是逐位比较分布做改进拒绝采样,保证无损。下图展示校验与接受规则。
图 9 · EAGLE ③ 校验:主模型一次前向并行校验 K 位 + 改进拒绝采样
                flowchart TD
                    DRAFT["草稿候选 d1…dK"]
                    MAINV["主模型一次前向
并行计算全部 K 位 logits"] COMP["逐位比较
p_target 与 p_draft 分布"] COMP -->|"p_target ≥ p_draft"| ACC["必然接受"] COMP -->|"p_target < p_draft"| RAND["以概率 p_target/p_draft
随机接受"] ACC --> OUT["接受前缀 + 纠正错误位
进入下一轮"] RAND --> OUT classDef vFill fill:#e6f7e6,stroke:#16a34a,stroke-width:1px; classDef acceptFill fill:#e1effe,stroke:#2563eb,stroke-width:1px; class MAINV vFill; class ACC,RAND acceptFill;

技术逻辑与底层机制:

EAGLE 的核心创新在于“无独立草稿模型”的设计范式。它不额外加载另一个小语言模型,而是在主模型的 Transformer 层顶部嫁接一个轻量级“草稿头”(Draft Head),该草稿头通常由 1~2 层全连接网络组成,参数量仅为主模型的 1% ~ 3%。其工作流程分为三步:

优势深度剖析:

固有短板与工程代价:

5.2 DFlash(第二代:无约束全并行草稿生成)

说明:下方为简化逻辑示意图,用于快速理解核心数据流;后续将上传论文原版完整架构图做对照参考。
图 10 · DFlash ① 架构:共享底层特征 + K 个并行输出头
                flowchart TD
                    subgraph SHARE["共享底层特征(经线性融合注入目标模型隐层特征)"]
                        direction TB
                        F["特征 F"]
                    end
                    subgraph PREDICT["多输出头并行预测器
(Multi-Head Parallel Predictor)"] direction TB F --> H1["输出头 1"] F --> H2["输出头 2"] F --> HK["输出头 K"] H1 --> L1["logits 1"] H2 --> L2["logits 2"] HK --> LK["logits K"] end Input["输入上下文 C"] --> F classDef shareFill fill:#e1effe,stroke:#2563eb,stroke-width:1px; classDef headFill fill:#e6f7e6,stroke:#16a34a,stroke-width:1px; class SHARE shareFill; class PREDICT headFill;
🧭 上图讲了「并行预测器长什么样」——K 个头共享同一份特征,同时输出 K 个位置的 logits。那么一次「生成」是怎么把 K 个候选一起产出的?下图展示它的并行生成过程。
图 11 · DFlash ② 并行生成:一次前向同时产出 K 个候选(无因果约束)
                flowchart LR
                    A["anchor 锚点 Token"]
                    M["同批 K 个位置
一次性输入"] PP["并行预测器
单次前向(矩阵运算)"] D1["候选 d1"] D2["候选 d2"] DK["候选 dK"] A --> PP M --> PP PP --> D1 PP --> D2 PP --> DK D1 --> CAND["批量候选 [d1…dK]
一次生成 · 无 Loop · 无因果依赖"] D2 --> CAND DK --> CAND classDef genFill fill:#e6f7e6,stroke:#16a34a,stroke-width:1px; class PP genFill; class CAND genFill;
🧭 候选一次全出来了,主模型校验效果如何?——由于各位置没有因果约束,草稿后期常与真实分布偏差大。下图展示硬截断校验规则及其衰减弱点。
图 12 · DFlash ③ 校验:贪心对比 argmax 即截断 + 接受率衰减
                flowchart TD
                    CAND["批量候选 [d1…dK]"]
                    V["主模型一次前向并行校验 K 位"]
                    CMP["贪心对比 argmax
(从左到右逐位比对)"] CMP -->|"一致"| KEEP["保留该位继续"] CMP -->|"不一致"| CUT["立即截断"] KEEP --> CMP CUT --> OUT["接受前缀 + 纠正
进入下一轮"] OUT --> TF["⚠️ 常见现象:
位置越靠后接受率越低
(位置独立假设在自然语言中不成立)"] classDef vFill fill:#e6f7e6,stroke:#16a34a,stroke-width:1px; classDef warnFill fill:#fdecea,stroke:#dc2626,stroke-width:1px; class V,CMP vFill; class TF warnFill;

技术逻辑与底层机制:

DFlash 彻底颠覆了草稿生成的因果范式,采用 非自回归(Non-Autoregressive, NAR) 思想。它抛弃了“必须等前一个 Token 才能预测下一个”的约束,使用一个多输出头并行预测器(Multi-Head Parallel Predictor),一次性同时预测未来 K 个位置的 Token 概率分布。其核心设计包含:

优势深度剖析:

固有短板与数学困境:

5.3 DSpark(第三代:半自回归并行 + 置信度调度校验)

说明:下方为简化逻辑示意图,用于快速理解核心数据流;后续将上传论文原版完整架构图做对照参考。本节核心数据与公式均源自 arXiv:2607.05147。
图 13 · DSpark ① 半自回归架构:并行主干 + 轻量串行序列头
                flowchart TD
                    subgraph PAR["并行主干(Parallel Backbone,复用目标隐层特征)"]
                        direction TB
                        PB["一次前向产出整块
base logit 集合 U₁…Uγ"] end subgraph SEQ["轻量串行序列头(Sequential Block,极轻量)"] direction TB MH["Markov 头(默认)
低秩转移偏置 B(x_{k-1},·)
= W₁[x_{k-1}] · W₂"] RN["RNN 头(可选)
循环状态累积整段前缀"] MH --> DSP["校正后草稿分布"] RN --> DSP end Input["输入上下文 C"] --> PB PB -->|"base logit U"| SEQ DSP --> OUT["块内候选 d1…dγ
兼顾「并行速度 + 串行连贯」"] classDef parFill fill:#e1effe,stroke:#2563eb,stroke-width:1px; classDef seqFill fill:#e6f7e6,stroke:#16a34a,stroke-width:1px; class PAR parFill; class SEQ seqFill;
🧭 上图讲了「草稿怎么又并行又有依赖」。但生产环境里,草稿块全交给主模型校验是浪费算力的——高并发下校验越长越拖垮吞吐。下图拆解置信度调度机制。
图 14 · DSpark ② 置信度调度:置信度头 + 硬件感知调度器动态决定验证长度
                flowchart TD
                    DRAFT["草稿候选 d1…dγ"]
                    CH["置信度头
预测每位置条件接受概率 c_k
(sigmoid + STS 校准)"] SCH["硬件感知调度器
按累计存活概率 ∏c_i 从高到低贪心选取
结合吞吐曲线 SPS(B) 最大化全局吞吐"] VER["只对裁剪后的前缀
做一次增量校验"] DRAFT --> CH --> SCH SCH -->|"动态验证长度 ℓ"| VER VER --> OUT["接受前缀 + 拒绝重采样"] classDef cFill fill:#fef9e7,stroke:#d97706,stroke-width:1px; classDef vFill fill:#e6f7e6,stroke:#16a34a,stroke-width:1px; class CH,SCH cFill; class VER vFill;
🧭 机制到位了,实际跑起来有多快?——论文已部署在 DeepSeek-V4 在线系统对比生产基线。下图展示生产环境实测增益。
图 15 · DSpark ③ 生产收益:DeepSeek-V4 在线实测(对比 MTP-1 基线)
                flowchart LR
                    DS["DSpark
DeepSeek-V4 在线系统"] G1["⚡ 单用户生成速度提升
V4-Flash +60%~85%
V4-Pro +57%~78%"] G2["📈 严格交互 SLA 下
保持稳健吞吐,突破性能悬崖"] G3["🎯 移位服务系统
吞吐–交互性帕累托前沿"] DS --> G1 DS --> G2 DS --> G3 classDef gainFill fill:#e6f7e6,stroke:#16a34a,stroke-width:1px; class G1,G2,G3 gainFill;

下面先用 3 张图分别把 DSpark 的「架构(图13)、调度机制(图14)、生产收益(图15)」拆开讲解,再补充技术公式与实测数据:

技术逻辑与底层机制:

DSpark 提出了 半自回归(Semi-Autoregressive) 混合架构:以高速的全并行主干打底,再叠加一个轻量串行序列头恢复块内 Token 依赖,旨在调和 EAGLE 与 DFlash 的矛盾。它的设计包含三个核心协同组件:

优势深度剖析(含论文实测数据):

固有短板与系统代价:

六、投机解码统一底层工作原理

所有迭代版本的核心加速逻辑完全一致,仅草稿生成与校验策略存在差异。下面给出统一的形式化描述:

🎯 统一工作流(五步循环):

  1. 利用轻量辅助模块(草稿模型/草稿头),提前批量产出 K 步候选 Token 序列 D = [d₁, d₂, …, dK]
  2. 将候选序列拼接至当前上下文 C,得到 C' = C ⊕ D
  3. 主模型对 C' 执行单次前向传播,并行获得 K 个位置的校验概率 p₁, p₂, …, pK
  4. 从第一个位置开始逐个比对:若 dᵢ 与主模型概率分布中的 argmax 一致则保留,遇到第一个不匹配位置 j 即截断,保留 d₁ … dj-1
  5. 由主模型在截断位置重新生成正确 Token tj,拼接至上下文,进入下一轮迭代。

该流程不修改主模型任何权重,校验阶段完全由主模型主导,因此输出分布与原生模型严格一致,是纯无损加速技术。

七、核心技术演进展望

基于现有三代方案的短板,未来投机解码的技术迭代,主要集中在架构优化、资源调度、草稿质量升级三个硬核方向:

7.1 草稿头模块化替换与动态切换

现有方案均使用固定结构的草稿头(或固定草稿模型),未来可实现动态可替换多头架构:根据文本类型(代码/自然语言/数学公式)、生成长度(短文本/长文档)、GPU 负载状态,自动切换串行头/并行头/校正头,解决单一结构无法兼顾速度与准确率的问题。

7.2 精细化硬件资源调度深挖

当前 DSpark 的动态调度仍为粗粒度(按固定 batch 调整候选数),未来可基于实时显存带宽、GPU 算力空闲率、并发 QPS、KV Cache 命中率等细粒度指标,实现Token 生成粒度的自适应调度

7.3 因果并行融合架构优化

解决 DFlash“快而不准”、EAGLE“准而不快”的核心矛盾,研发带弱因果约束的并行生成算法,在保留并行速度优势的同时,降低逻辑断裂概率。

7.4 多级嵌套投机解码迭代

突破固定单轮候选数量限制,通过多级嵌套预生成(Nested Speculation),在不损失精度的前提下,单次迭代推进更多 Token 步数,突破现有 3~4 倍的加速上限。

八、总结

✅ 一句话总结: 投机解码用“小模型猜、大模型验”的范式,将大模型推理从“串行等”变为“并行验”,在保证精度无损的前提下,实现 2~4 倍的推理加速,是大模型高效部署的关键技术之一。

本文档基于公开论文与行业技术报告整理,内容持续更新。欢迎反馈与指正。