news 2026/7/16 8:59:32

推理加速-Speculative-PrefixCache与Chunked-Prefill

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
推理加速-Speculative-PrefixCache与Chunked-Prefill

推理加速 · Speculative Decoding / Prefix Cache / Chunked Prefill / Eagle / Medusa

定位:03-部署-模型Serving 的算法纵深专章。03 讲了 Serving 栈四层 + KV Cache + 量化 + FinOps(工程口径),本篇只挖**「让单次推理更快」的算法层**——为什么 Prefill 慢、为什么 Decode 难并行、四大加速流派怎么取舍。不含部署运维。

风格说明:机制型为主——从自回归解码的「内存墙」物理根因出发,拆解 Prefill/Decode 两阶段瓶颈,再逐个讲 Speculative Decoding(含 Eagle/Medusa)、Prefix Cache、Chunked Prefill 的原理、收益、陷阱。

前置阅读:01-Transformer(Attention 与 KV Cache 是前提);03-部署(KV Cache/PagedAttention/量化的工程口径)。


1. 本质:推理慢在哪里

1.1 两阶段:Prefill vs Decode

LLM 推理分两个阶段,瓶颈完全不同

阶段做什么计算量显存瓶颈延迟特征
Prefill(预填)处理 prompt,算所有 prompt token 的 KV(O(L²) attention,高度并行)KV 写入算力受限(compute-bound)TTFT(首字延迟)
Decode(解码)逐个生成 token,复用历史 KV(每步只算 1 个 token 的 attention)KV 读取显存带宽受限(memory-bound)TPOT(每字延迟)

1.2 核心洞察:Decode 是「内存墙」问题

金句:Decode 阶段每生成 1 个 token,要把整个模型的权重 + 历史 KV从显存读到计算单元,但只做极少量计算。GPU 算力大量闲置——不是算不过来,是数据搬不过来

量化感知:

以 70B 模型、batch=1、单步 decode 为例: - 模型权重读取: ~140GB(FP16)或 ~35GB(INT4) - 实际计算: ~2 × 70G FLOPs(矩阵向量乘,很小) - GPU 算力利用率: < 5%(A100/H100 大量空转) - 瓶颈: 显存带宽(~2TB/s on H100),不是算力(~1000 TFLOPS)

工程含义:所有 Decode 加速算法的本质,都是**「一次搬运,多算几个 token」**——把闲置算力用起来。这是 Speculative Decoding 的物理动机。

1.3 延迟分解(面试必背)

端到端延迟 = TTFT + TPOT × output_tokens TTFT(Time To First Token)= Prefill 时间 + 队列 + 网络 TPOT(Time Per Output Token)= 每步 Decode 时间 客服 Agent 典型 SLA: TTFT P99 < 800ms(用户等首字) TPOT P99 < 45ms/token(读起来不卡顿)

2. 加速技术全景图

推理加速

降低延迟

提高吞吐

Prefill 加速

Decode 加速

Chunked Prefill

Prefix Cache

Speculative Decoding
Eagle/Medusa

量化
INT4/INT8/FP8

Continuous Batching

PagedAttention

增大 batch

本章只讲降低单次延迟的算法(左侧)。吞吐优化(Continuous Batching / PagedAttention)已在 03-部署 详述,不重复。


3. Prefix Cache · 「相同前缀,只算一次」

对齐 03-部署 § Prefix cache。本节讲透原理与陷阱。

3.1 原理

问题:多轮对话 / RAG 场景,每次请求的 prompt 有大量相同前缀(system prompt + 长文档 + 历史轮),但每次都重新 Prefill,浪费算力。

解决:把已算过的前缀 KV缓存起来,下次命中前缀时跳过 Prefill 直接复用

请求 1: [system][doc_A][user_q1] → Prefill 全算,缓存 KV 请求 2: [system][doc_A][user_q2] → [system][doc_A] 命中缓存,只 Prefill [user_q2]

3.2 命中条件与实现要点

  • Token 级精确匹配:必须逐 token 完全相同才命中。差一个字、差一个 system prompt 顺序就 miss。
  • 位置编码依赖:RoPE 等位置编码让 KV 与位置绑定,所以前缀必须是从位置 0 开始的连续 token。
  • LRU 淘汰:显存有限,按 LRU 淘汰冷前缀。
  • 实现:vLLM、SGLang、TGI 均内置;基于 PagedAttention 的 block 级哈希匹配。

3.3 收益与陷阱

维度收益
TTFT长前缀场景可降 50-80%
通用性适合 system prompt 固定 / RAG / 多轮
陷阱应对
动态 system prompt(含时间戳/用户名)导致永远 miss把静态部分放前面,动态部分放后
前缀太短收益不明显只缓存长度 > 阈值的前缀
并发请求抢 KV 显存设缓存上限 + LRU

RAG 场景金句:「RAG 的 system prompt + 长 chunk 是天然的前缀复用场景。检索结果相同的多轮对话,Prefix Cache 几乎是白赚的 TTFT 优化。」


4. Speculative Decoding · 「猜对了白赚,猜错了不算」

本章重点。这是 2023-2026Decode 加速最热的方向

4.1 动机:让闲置算力干活

Decode 每步只算 1 个 token,GPU 算力闲置 > 95%。能不能一次并行验证多个候选 token,把闲置算力用起来?

4.2 核心机制(Draft + Verify)

Target Model(大/准)Draft Model(小/快)Target Model(大/准)Draft Model(小/快)对比小模型 logits vs 大模型 logits拒绝后用大模型 logits 采样一个修正 token自回归生成 k 个候选 token(快,小模型)提交 [t1,t2,...,tk] 给大模型一次并行验证 k 个位置(并行,大模型)接受前 m 个匹配的 token,拒绝第 m+1返回最终 n 个 token(n ≤ k+1)

关键点

  1. Draft 模型生成 k 个候选——小模型自回归快,但可能错。
  2. 大模型一次并行验证——因为大模型前向时可以同时算每个位置的 logits,验证 k 个候选只需1 次大模型前向(而非 k 次)。
  3. 接受/拒绝规则(重要)
    • 若小模型概率q(x)≤ 大模型概率p(x)接受(小模型没低估它)。
    • q(x) > p(x):以1 - p/q概率拒绝,并从修正分布max(0, p-q)重采样。
  4. 数学保证输出分布与大模型单独采样完全一致——加速但不改结果质量(无损)。

4.3 为什么能加速

  • 小模型生成 k 个 token 很快(小模型 decode 便宜)。
  • 大模型验证 k 个候选 =1 次前向(并行),而非 k 次串行 decode。
  • 若 k 个候选都对 → 一次拿到 k+1 个 token,等效 TPOT 降近 k 倍
  • 即使部分错,接受的前 m 个也是白赚的。

加速上限:取决于「小模型猜对率」和 k 大小。实测在代码/结构化生成场景,猜对率高,加速 2-3x;开放创意写作猜对率低,加速有限。

4.4 Draft 模型的四种来源

方案Draft 是谁优点缺点
小模型(经典)同家族小模型(如 Llama-70B + Llama-7B)通用需部署两个模型,占显存
Eagle自回归头(与主模型共享 embedding/特征)猜对率高,额外开销小需训练 head
Medusa多个并行头(每个头预测 +2/+3/…位置)无需额外模型猜对率低于 Eagle
Lookup / N-gram用语料/上下文做 n-gram 查表零模型开销仅对重复/结构化文本有效
Eagle 详解(2024 主流)
  • 原理:训练一个轻量「自回归头」,它复用主模型的隐藏状态(hidden states),只需一个小 MLP 预测下一个 token 的特征,再过 LM head。
  • 为什么强:因为直接拿主模型已经算好的特征,不用重跑 embedding 层,Draft 成本极低且猜对率高(论文报告接受率 60-80%)。
  • 适用:已进入 vLLM 等推理引擎。
Medusa 详解
  • 原理:在主模型最后一层接多个并行头,第一个头预测下一个 token(=主任务),第二个头预测下下个,第三个预测下下下个……一次前向同时得到多步候选。
  • 代价:头之间不交流,猜对率不如 Eagle,但完全不增加 decode 步骤

4.5 适用场景与陷阱

适合不适合
代码生成(强规则,猜对率高)开放创意写作(猜对率低)
结构化输出(JSON/schema 约束)极短输出(k 设小,收益不显)
RAG/客服(大量模板化回复)batch 已很大时(算力已不闲置)
陷阱应对
Draft 模型与主模型分布差异大 → 接受率低用同家族小模型 / 训练 Eagle head
小模型本身要占显存用 Eagle/Medusa 自带头,不额外部署
k 太大反而慢(验证成本)动态调 k(根据近期接受率)
改变了采样逻辑,与某些约束解码冲突选用支持 grammar 的 spec decoding 实现

5. Chunked Prefill · 「长 prompt 不再阻塞」

5.1 问题

Prefill 是 compute-bound,一个超长 prompt(如 32K token 的 RAG)会让该请求长时间占满 GPU拖慢同 batch 内其他请求的 Decode(首字延迟被饿死)。

5.2 机制

把一次大 Prefill切成多个 chunk与 Decode 请求混批调度

传统:[大 Prefill 32K 占满 GPU 500ms] → 其他请求 Decode 全等 Chunked:[Prefill chunk 512][Decode batch][Prefill chunk 512][Decode batch]... 长请求的 Prefill 分摊,短请求的 Decode 不被饿死

5.3 收益

  • TTFT 公平性:短请求不会被一个长 prompt 拖死。
  • GPU 利用率:Prefill(compute-bound)与 Decode(memory-bound)混批,互补占用算力和带宽
  • vLLM 默认开启(--enable-chunked-prefill),chunk size 默认 512。

5.4 陷阱

  • chunk 太小 → Prefill 整体变慢(多轮调度开销);太大 → 退化成传统模式。
  • 与 prefix cache / continuous batching 的协同需调参。

6. 四大技术对比与选型

技术优化目标加速比无损?额外开销适用
Prefix CacheTTFT(长前缀)50-80%✅ 完全无损显存(存 KV)system prompt 固定 / RAG / 多轮
Speculative(Eagle)TPOT2-3x✅ 数学无损训练 head + 少量算力代码/结构化/模板化
Speculative(小模型)TPOT1.5-2x✅ 无损多部署一个模型有同家族小模型
Chunked PrefillTTFT 公平性 + 利用率间接✅ 无损调度开销长短混合负载
量化(INT4/FP8)TTFT + TPOT + 显存2-4x⚠️ 微损校准通用,见 03

组合使用:生产实践常同时开Prefix Cache + Chunked Prefill + 量化,Speculative 按场景开。四者正交,收益可叠加。


7. STAR 实战:RAG 客服 Agent 的延迟优化

情境(S):电商客服 Agent,prompt 含 system + 商品 KB + 历史,平均 2400 token。TTFT P99 = 1.8s(超 SLA 800ms),TPOT = 60ms(超 45ms)。自托管 Llama-3.1-70B AWQ on 2×A100。

任务(T):不改模型、不加卡,把延迟压回 SLA 内。

行动(A)

  1. 度量:用 08-可观测 分解延迟,发现 Prefill 占 TTFT 的 70%——因为每次都重算 2400 token。
  2. Prefix Cache:system prompt + 高频 KB chunk 前缀稳定,开启 Prefix Cache,命中后跳过 ~1800 token 的 Prefill。TTFT 降到 900ms。
  3. Chunked Prefill:开启后,长 prompt 不再饿死短请求,TTFT P99 从 900ms 稳到 750ms。
  4. Speculative(Eagle):客服回复有模板化特征,接 Eagle head,TPOT 从 60ms 降到 28ms。
  5. 量化已有(AWQ INT4),未动。

结果(R):TTFT P99 1.8s → 750ms,TPOT 60ms → 28ms,未加卡未改模型,全部通过推理引擎配置 + Eagle head 实现。吞吐(QPS)同步提升 ~40%(Chunked Prefill 提高利用率)。


8. 与相关章节的边界

主题本章去这里看
KV Cache / PagedAttention / Continuous Batching仅引用03-部署
量化(AWQ/GPTQ/FP8)选型不展开03-部署
多模型路由 / FinOps / $/task不展开07-Gateway
延迟/成本可观测(TTFT/TPOT trace)仅引用08-可观测
私有化 vLLM 部署不展开work/supplements/P2-03

99. 面试速查 · 高频满分答

Q1:LLM 推理慢在哪里?为什么 Decode 阶段 GPU 利用率这么低?

推理分 Prefill(算 prompt)和 Decode(逐字生成)。Prefill 是 compute-bound(算力受限),Decode 是 memory-bound(显存带宽受限)。Decode 每生成 1 个 token 要把整个模型权重 + 历史 KV搬到计算单元,但只做极少计算,GPU 算力利用率 < 5%——不是算不过来,是数据搬不过来。这是 Speculative Decoding 的物理动机:用闲置算力一次验证多个 token。

Q2:什么是 Speculative Decoding?为什么能无损加速?

用一个小/快的 Draft 模型先猜 k 个候选 token,再用大模型一次前向并行验证(而不是 k 次串行)。接受规则:若小模型概率 ≤ 大模型概率则接受,否则按1-p/q概率拒绝并从修正分布重采样。数学上保证输出分布与大模型单独采样完全一致——无损。加速来自:小模型猜对的部分是白赚的。代码/结构化场景猜对率高,加速 2-3x;创意写作收益低。

Q3:Eagle 和 Medusa 有什么区别?

Medusa:在主模型最后一层接多个并行头,每个头预测不同步数的 token,一次前向拿多步候选。简单、不额外部署模型,但头之间不交流,猜对率较低。Eagle:训练一个自回归头,复用主模型隐藏状态,只加一个轻量 MLP 预测下一 token 的特征。因为直接拿主模型算好的特征,Draft 成本极低且猜对率高(60-80%),是 2024 主流方案,已进 vLLM 等引擎。

Q4:Prefix Cache 的原理和陷阱?

把已算过的前缀 KV 缓存,下次命中就跳过 Prefill。适合 system prompt 固定 / RAG / 多轮场景,TTFT 可降 50-80%。命中条件是 token 级精确匹配 + 从位置 0 开始。最大陷阱:动态 system prompt(含时间戳、用户名)会导致永远 miss——要把静态部分放前面,动态部分放后面。还要注意显存上限和 LRU 淘汰。

Q5:Chunked Prefill 解决什么问题?

解决「长 prompt 饿死短请求」。一个 32K 的 Prefill 是 compute-bound,会占满 GPU 数百毫秒,同 batch 的 Decode 请求全等。Chunked Prefill 把大 Prefill 切成多个小 chunk,与 Decode 混批调度——长请求分摊、短请求不被饿死,且 Prefill(compute-bound)与 Decode(memory-bound)互补占用算力和带宽,提高整体利用率。vLLM 默认开启。

Q6:你要优化一个 RAG 客服 Agent 的延迟,怎么下手?

先用 trace 分解 TTFT 和 TPOT。①TTFT 高:多半是 Prefill 重算,开Prefix Cache(system + KB 前缀稳定);长 prompt 混合负载开Chunked Prefill防公平性问题。②TPOT 高:Decode memory-bound,若回复模板化开Speculative(Eagle)。③ 通用:确认量化(INT4/FP8)已开。四者正交可叠加。我实测在 70B 模型上,Prefix Cache + Chunked + Eagle 把 TTFT 1.8s→750ms、TPOT 60ms→28ms,没加卡没改模型。

一页 Checklist

  • 是否区分了 Prefill(compute-bound)与 Decode(memory-bound)瓶颈?
  • Prefix Cache 是否开启?前缀是否做到 token 级稳定?
  • Chunked Prefill 是否开启(长短混合负载)?
  • 量化(INT4/FP8)是否已选型上线?
  • Speculative Decoding 是否对模板化/代码场景启用(Eagle 优先)?
  • Draft 模型是否与主模型同家族(保证接受率)?
  • 是否有 TTFT/TPOT 的 P99 trace 度量(08-可观测)?
  • Continuous Batching + PagedAttention 是否开启(03-部署)?

官方文档与源码(一级依据)

推理加速· 本章算法机制依据官方源码(L2)论文(L3);加速比为论文/社区实测口径,实际因模型和负载而异。
写作规范:docs/official-sources-registry.md §0

L1 · 官方文档

  • vLLM Docs - Features (Prefix Caching / Chunked Prefill / Speculative)
  • SGLang Docs
  • NVIDIA TensorRT-LLM Developer Guide

L2 · 官方源码

  • vllm-project/vllm(Prefix Cache / Chunked Prefill / Eagle 集成)
  • SGlang/SGLang(RadixAttention 前缀缓存)
  • FUJI-AI/Eagle(Eagle 自回归头)
  • TogetherAI/Medusa

L3 · 论文

  • Fast Inference from Transformers via Speculative Decoding (Leviathan 2023)
  • EAGLE: Speculative Sampling Requires Rethinking Feature Uncertainty (Li 2024)
  • Medusa: Simple LLM Inference Acceleration (Cai 2024)
  • Efficient Memory Management for LLMs with PagedAttention (Kwon 2023)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/16 8:59:04

【Redis初阶】初识、特性和安装

目录 一、初识Redis 1.1 Redis特性 1.2 Redis 使⽤场景 1.2.1 Redis可以做什么 1.2.2 Redis 不可以做什么 1.3 安装并启动Redis 1.3.1 在Ubuntu上面安装Redis 1.3.2 控制 Redis 启动 1.3.3 Redis重要文件及其作用 1.4 Redis 命令行客户端 一、初识Redis 本篇文章带你…

作者头像 李华
网站建设 2026/7/16 8:56:45

RK3568+PG2L50H开发板光纤通信配置与优化实践

1. 实验背景与硬件平台介绍 RK3568PG2L50H开发板作为当前嵌入式领域的热门硬件平台&#xff0c;其FPGA与主控芯片的协同设计为高速通信场景提供了理想的测试环境。这套组合方案在工业自动化、医疗影像传输等对实时性要求严苛的领域具有独特优势。 PG2L50H FPGA芯片搭载了4个高…

作者头像 李华
网站建设 2026/7/16 8:56:43

OpenFOAM中循环边界(cyclic)的网格前处理与并行计算避坑指南

1. 循环边界(cyclic)基础概念与常见错误 在OpenFOAM中处理周期性流动问题时&#xff0c;cyclic边界是最常用的边界类型之一。这种边界允许流体在计算域的一侧流出后&#xff0c;从另一侧重新流入&#xff0c;形成循环流动。但新手在使用时经常会遇到两个经典报错&#xff1a; …

作者头像 李华
网站建设 2026/7/16 8:56:36

FlowRAG与LangChain协同的检索增强生成框架设计与评估

FlowRAG与LangChain协同的检索增强生成框架设计与评估引言&#xff1a;当RAG遇见“流” 检索增强生成&#xff08;RAG&#xff09;已成为缓解大语言模型幻觉问题和知识时效性瓶颈的主流范式。然而&#xff0c;传统RAG系统在面对复杂多跳查询时&#xff0c;往往暴露出检索不精准…

作者头像 李华
网站建设 2026/7/16 8:55:13

Cluade 必备技能 skill-creator

一、前置条件 1. 运行环境 只能在 **Claude‑Code CLI&#xff08;终端版&#xff09;**使用&#xff1b;网页版 claude.ai 只有简化版&#xff0c;不支持自动评测evals和benchmark&#xff1b;版本要求&#xff1a;claude‑code > v2.1.78&#xff1b;Python3.10&#xff0…

作者头像 李华
网站建设 2026/7/16 8:54:26

千寻位置公安时空数据融合方案:1库1图1批一体化平台

摘要 千寻位置基于北斗卫星系统构建的警用北斗时空智能服务平台&#xff0c;以"1库1图1批"为核心设计理念&#xff0c;打造公安时空数据融合一体化解决方案。该方案通过统一时空数据库、高精度地图底座、标准化时空基础设施三大组件&#xff0c;实现视频专网、移动警…

作者头像 李华