一句话信息差:大模型推理真正的瓶颈不是算力,而是"内存搬运税";而一个反直觉的事实是——让大模型验证 5 个 token 的成本,几乎等于让它从头生成 1 个 token。海外厂商据此搞出了"投机解码"(speculative decoding),让小模型先草拟、大模型批量验货,匹配的全白赚,在 H100 上把 70B 模型的解码成本从 \$0.46/1M 砍到 \$0.06/1M,且输出数学等价、质量零损失。AWS、vLLM 在 2026 年初已把它推到主流,而国内九成开发者还以为这玩意"会降质量、是玄学"。
先把一个根深蒂固的误区打掉:很多人觉得大模型慢、贵,是因为"算力不够"。错了。
在自回归生成阶段,每吐出 1 个 token,GPU 都要把整套模型权重(70B 模型就是 700 亿参数)从显存(VRAM)搬到计算核心里。搬运这趟路,比真正做矩阵乘法还慢。这就是 Spheron 在 2026 年生产指南里点破的那句话——LLM 解码是 memory-bandwidth-bound(内存带宽受限),不是 compute-bound。
直接后果:一张 H100 PCIe(每小时 \$2.01)跑 Llama 3.3 70B(FP8),batch size 1–4 时,标准解码只能挤出 ~1,200 tokens/秒,每 100 万输出 token 成本 ~\$0.46。你以为这卡在算 700 亿次乘法,其实它在反复搬运同一堆权重,一趟一趟又一趟。
这是整篇情报的物理基础:搬运才是税,算力是顺带的。
既然搬运是瓶颈,那就有了一条惊人的等式:
让目标大模型"验证" N 个候选 token 的成本 ≈ 让它从头"生成" 1 个 token 的成本。
因为验证 N 个 token 可以在一个 forward pass 里并行完成,搬运那趟昂贵的路只走一次。
那么——谁说候选 token 必须大模型自己生成?派一个小模型(草稿模型)先猜 N 个,大模型只负责批量验货,猜中的全收下,猜错的位置由大模型纠正、丢弃后面。这就是投机解码(speculative decoding)。
举个具体例子,草稿模型猜 5 个、目标模型验 4 个就碰壁:
草稿模型: [tok1] [tok2] [tok3] [tok4] [tok5] <-- 1B 小模型秒出
目标模型: ✓ ✓ ✓ ✗ <-- 1 次 forward 验完
结果: tok1/tok2/tok3 全部接受,从 tok4 重来
加速多少?取决于"接受率" alpha(草稿模型猜对的概率)。当 alpha=0.8、N=5 时,平均每步接受约 3.7 个 token,即 3.7x 加速。
flowchart LR
subgraph 传统解码["传统解码(1 token / 每趟搬运)"]
A1["搬 700 亿权重"] --> A2["算 1 token"] --> A3["搬 700 亿权重"] --> A4["算 1 token"]
end
subgraph 投机解码["投机解码(N token / 每趟搬运)"]
D0["1B 草稿模型<br/>快速猜 5 token"] --> D1["搬 700 亿权重<br/>(只走一趟)"]
D1 --> D2["目标模型批量验证 5 token"] --> D3["接受约 3.7 个<br/>输出等价"]
end
style A1 fill:#f5c6c6
style A3 fill:#f5c6c6
style D1 fill:#c6e0c6
style D3 fill:#c6e0c6
最关键的信息差在这里:投机解码的输出和标准解码数学等价,完全无损。 任何被拒绝的 token 都会被目标模型的真实输出替换,目标模型的概率分布被 100% 保留。它不是"近似"、不是"采样抖动"——这是很多国内团队一听"投机"两个字就误以为"会牺牲质量"而拒用的根因。你只要不换模型、不换卡,解码就能白赚一倍速度。
投机解码的威力取决于草稿模型猜得多准。2024 年的朴素版接受率只有 0.6–0.75,加速 2–3x;到 2026 年,这条路线已经卷出三代,加速翻倍:
| 变体 | 原理 | 接受率/加速 | 代表 |
|---|---|---|---|
| Draft Model(朴素) | 独立小模型猜 token | 0.6–0.75,2–3x | Llama 3.2 1B 配 70B |
| EAGLE / EAGLE-2 | 草稿模型吃大模型的内部特征(不是 token embedding),动态候选树 | 3x+ | HuggingFace 有 Llama/Qwen/Mistral 全家桶 |
| EAGLE-3(2026) | 改吃多层隐藏态、直接预测 token | HumanEval 上 ~4.8x | yuhuili/EAGLE3-LLaMA3.3-Instruct-70B |
| P-EAGLE(2026) | 并行起草,K 个候选一次出,再构验证树 | 4–5x,比 EAGLE-3 再快 20–30% | AWS 在 2026 年初贡献进了 vLLM 主线 |
| DFlash | block diffusion,块级并行 | 6x+ | 新生代,checkpoint 较少 |
落到真金白银,Spheron 用 Llama 3.3 70B(FP8)在 H100 PCIe 上的实测(2026-03-24 定价),每 100 万输出 token 成本的塌缩曲线:
| 解码模式 | tokens/秒 | 每 1M token 成本 | 相对标准解码 |
|---|---|---|---|
| Standard(标准) | ~1,200 | ~\$0.46 | 100% |
| Draft model(Llama 3.2 1B) | ~2,600 | ~\$0.21 | −54% |
| EAGLE-3 | ~3,600 | ~\$0.15 | −67% |
| DFlash | ~9,000 | ~\$0.06 | −87% |
同一张卡、同一个模型,什么都没换,只是把解码方式从"逐个搬"换成"草稿+批量验",成本直接砍掉一半到八成。在更小的 Llama 3.1 8B + L40S 上,EAGLE-3 把成本压到 \$0.06/1M,吞吐冲到 ~10,000 tokens/秒——这个价位已经比绝大多数国内 API 转售商还便宜,而且是你自建、数据不出门。
不需要自研框架,开源 vLLM(≥ v0.8.0)原生支持。给容器加这几个参数:
docker run --gpus all --ipc=host -p 8000:8000 \
-e HUGGING_FACE_HUB_TOKEN=your_token \
vllm/vllm-openai:v0.8.0 \
--model meta-llama/Llama-3.3-70B-Instruct \
--quantization fp8 \
--speculative-model yuhuili/EAGLE3-LLaMA3.3-Instruct-70B \
--num-speculative-tokens 6 \
--speculative-draft-tensor-parallel-size 1 \
--gpu-memory-utilization 0.94 \
--speculative-disable-by-batch-size 32 \
--host 0.0.0.0 --port 8000
五个 flag 各管一摊:
--speculative-model:指草稿模型。硬规矩是草稿必须和目标同架构家族(Llama 配 Llama、Qwen 配 Qwen),tokenizer 要一致。EAGLE-3 的 checkpoint 在 HuggingFace 公开,无需 token。--num-speculative-tokens:每次猜几个。从 5 起调;若生产流量的接受率稳定 >0.8,再加到 7–8;若 <0.5,砍到 3。--speculative-draft-tensor-parallel-size 1:草稿模型再小也够,固定 1 卡,省 VRAM。--gpu-memory-utilization 0.94:默认 0.90 装不下两个模型,抬高到 0.94。草稿只多吃 2–6GB(H100 80GB 跑 70B FP8 + 1B 草稿约占 76GB)。--speculative-disable-by-batch-size 32:这个是救命 flag,见下一节。验货标准看一个指标就够:
curl http://localhost:8000/metrics | grep spec_decode
盯 vllm:spec_decode_draft_acceptance_rate——目标 >0.70;跌破 0.50 说明草稿模型和你的真实流量分布不匹配,要么换 EAGLE-3 checkpoint,要么把猜的 token 数砍到 3。
这才是海外生产实战里、国内文档几乎不讲的高价值信息差——投机解码不是万能开关,装错地方反而倒扣 30–40% 吞吐。
# 一条够用的决策规则
if batch_size > 32 or output_tokens < 50 or task == "embedding" or task == "creative_random":
use_standard_decoding # 老老实实别开
else:
enable_speculative_decoding
三个"绝对别开"的场景:
--speculative-disable-by-batch-size 32 就是干这个的:并发超阈值自动、透明地回退到标准解码,对调用方完全无感。记住一句话:投机解码吃的是"低并发 + 低熵 + 中长输出"的流量,其他场景请走标准解码。
| 维度 | 多数人的认知(贵) | 海外生产实况(便宜) |
|---|---|---|
| 解码瓶颈 | 算力不够,要换更大的卡 | 内存带宽,改解码方式即可 |
| 投机解码质量 | "投机=近似,会降质量" | 数学等价,零损失 |
| 70B 解码成本 | \$0.46/1M(标准) | \$0.06–0.15/1M(EAGLE-3/DFlash) |
| 加速天花板 | 换 H200、加卡 | 软件层 4–6x,P-EAGLE 已进 vLLM 主线 |
| 适用边界 | 以为全能提速 | batch>32 / <50 token / 高熵时反而更贵 |
| 谁在用 | 少数 infra 团队 | AWS、vLLM、SGLang 已默认押注 |
对比参照:同样是为了省钱,已被讲烂的路由(RouteLLM 那套,省 85%、保 95% GPT-4 性能)是"按难度换模型",会动质量边界;而投机解码是"同模型、同质量、纯加速"——两者可以叠加:路由决定用哪个模型,投机解码决定这个模型解码多快。中国团队大多只抄到了路由那一层,解码这一层几乎没人动。
acceptance_rate 和 tokens/秒。预计当晚就能看到成本对半砍。benchmark_serving.py 量真实流量的 batch 分布;高并发场景务必带 --speculative-disable-by-batch-size 32,否则流量一来就翻车。核心一句话:当搬运贵于计算时,"先猜后验"就是结构性的套利空间。 海外已经把这套机制做进了开源框架主线,国内还在讨论"该不该上 4090"。这就是这一轮的 information gap。
本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护。 聚焦5G/6G核心网、3GPP标准、AI工具实战。知识星球「51学通信」提供深度技术答疑和行业洞察。
[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
