大模型推理优化全景:从KV Cache到投机解码

推理优化的核心矛盾 大模型推理面临一个核心矛盾:用户需要低延迟和高吞吐,但自回归生成天然是串行的。每生成一个token都需要完整的前向传播,而KV Cache的显存占用随序列长度线性增长。本文系统梳理当前主流的推理优化技术。 KV Cache优化 KV Cache的工作原理 在自回归生成中,前面token的Key和Value可以缓存复用,避免重复计算。但KV Cache的显存占用惊人: $$\text{KV Cache Size} = 2 \times n_{layers} \times n_{heads} \times d_{head} \times seq_len \times batch_size \times \text{dtype_size}$$ 以Llama-3-70B为例,FP16精度下,单条2048长度的请求KV Cache就需要约5GB显存。 PagedAttention vLLM的PagedAttention借鉴操作系统的虚拟内存管理,将KV Cache分成固定大小的block(如16个token),按需分配: # vLLM的核心创新:非连续KV Cache存储 class PagedAttention: def __init__(self, block_size=16): self.block_size = block_size self.block_table = {} # 逻辑block -> 物理block映射 def allocate(self, seq_len): n_blocks = (seq_len + self.block_size - 1) // self.block_size return [self._alloc_block() for _ in range(n_blocks)] PagedAttention将显存利用率从约60%提升到96%以上,显著提高并发处理能力。 KV Cache量化 将KV Cache从FP16量化到INT8可以减半显存占用,而精度损失可控: # vLLM中启用KV Cache量化 from vllm import LLM, SamplingParams llm = LLM( model="meta-llama/Meta-Llama-3-70B", quantization="fp8", # 模型权重量化 kv_cache_dtype="fp8", # KV Cache量化 max_model_len=8192, ) 注意力机制优化 Flash Attention 2/3 Flash Attention通过分块计算和减少HBM读写,将注意力计算复杂度从 $O(n^2)$ 内存降到 $O(n)$ 内存: ...

2026-07-16 · 2 min · 247 words · 硅基 AGI 探索者
speculative decoding principles

投机解码原理:Draft Model 如何加速推理

投机解码:用小模型的"猜测"加速大模型 大模型推理的最大瓶颈是自回归生成的串行性——每生成一个 Token,都需要完整的前向传播。投机解码(Speculative Decoding)通过引入一个小型 Draft Model 来"猜测"多个 Token,再由大模型并行验证,打破了这一串行瓶颈。 一、标准推理的瓶颈 1.1 自回归推理 标准自回归推理中,生成 $N$ 个 Token 需要 $N$ 次串行前向传播: 步骤1: [prompt] → 大模型 → token_1 步骤2: [prompt, token_1] → 大模型 → token_2 步骤3: [prompt, token_1, token_2] → 大模型 → token_3 ... 步骤N: [prompt, token_1, ..., token_{N-1}] → 大模型 → token_N 总延迟 = N × 单步前向延迟 每次前向传播只生成 1 个 Token,但需要计算所有参数。对于 70B 模型,单步前向约 30ms,生成 1000 个 Token 需要约 30 秒。 1.2 为什么不能并行 自回归的数学约束: ...

2026-06-28 · 5 min · 938 words · 硅基 AGI 探索者
speculative decoding practical 3x speedup guide

Speculative Decoding 实战:推理速度提升 3 倍的配置指南

Speculative Decoding(投机解码)是 2026 年最实用的大模型推理加速技术——它可以在不损失任何输出质量的前提下,将推理速度提升 2-4 倍。本文将从原理到实战,给出完整的配置指南。 一、Speculative Decoding 原理 核心思想 传统自回归解码每次只生成 1 个 token,GPU 大量时间在等待内存读取(memory-bound)。Speculative Decoding 的核心思想是: 1. 用一个小而快的 Draft 模型快速生成 N 个候选 token 2. 用大 Target 模型并行验证这 N 个 token 3. 接受正确的 token,拒绝错误的 token 并从第一个错误处重新生成 为什么能加速? 传统解码:N 个 token 需要 N 次串行前向传播 投机解码:N 个 token 只需 1 次并行前向传播(验证)+ M 次小模型前向传播 关键洞察:大模型的并行验证成本 ≈ 1 次串行解码成本,但能处理 N 个 token 接受率与加速比 假设 Draft 模型的 token 接受率为 α,投机长度为 N: 期望接受 token 数:α × N 理论加速比:(α × N) / (1 + N × cost_ratio),其中 cost_ratio = draft_cost / target_cost 当 α = 0.8, N = 5, cost_ratio = 0.05 时,理论加速比 ≈ 3.2x ...

2026-06-28 · 4 min · 720 words · 硅基 AGI 探索者
speculative decoding explained

投机解码深度解析:LLM 推理速度翻倍的秘密

自回归解码的瓶颈 标准 LLM 推理是自回归的:每次只生成一个 token,然后把它拼回输入再生成下一个。这意味着: # 标准自回归生成 for step in range(max_tokens): # 前向传播:计算整个序列 logits = model(input_ids) # O(N) 计算 next_token = sample(logits[:, -1]) # 只用最后一个位置 input_ids = concat(input_ids, next_token) 问题在于解码阶段的 GPU 利用率极低。即使 batch_size=1,生成单个 token 也需要加载全部模型权重,但只产生 1 个 token 的输出。这就是所谓的 memory-bound(内存带宽瓶颈)。 模型规模 参数量 生成1 token需读取 实际计算量 利用率 7B 7B ~14 GB ~14 GFLOP <5% 70B 70B ~140 GB ~140 GFLOP <3% 405B 405B ~810 GB ~810 GFLOP <2% 核心洞察:大模型推理时,大部分时间花在搬权重,而不是做计算。如果能一次性预测多个 token,就能摊薄权重加载成本。 ...

2026-06-25 · 5 min · 917 words · 硅基 AGI 探索者
speculative decoding deep

投机解码深度解析:让 LLM 推理快 3 倍

自回归推理的瓶颈 标准自回归解码每次只生成 1 个 token,每个 token 都需要完整前向传播: $$t_{\text{per_token}} = t_{\text{prefill}} + t_{\text{decode}}$$ 其中 decode 阶段是访存密集型的——计算量小但需要加载全部权重和 KV Cache,GPU 利用率通常 <10%。 投机解码的核心洞察:用小模型快速生成草稿,大模型批量验证,将多次串行 decode 变为一次并行验证。 投机解码原理 算法流程 1. Draft Model 快速生成 k 个候选 token: [t1, t2, ..., tk] 2. Target Model 一次前向传播计算这 k 个位置的 logits 3. 对每个候选 token,按拒绝采样决定接受/拒绝: - 若 p_target(ti) / p_draft(ti) >= 1: 接受 - 否则以概率 p_target(ti)/p_draft(ti) 接受,否则拒绝并从调整分布重采样 4. 接受的 token 加入序列,从拒绝点重新开始 拒绝采样数学 对于候选 token $x_i$,定义接受概率: $$\alpha(x_i) = \min\left(1, \frac{p_{\text{target}}(x_i)}{p_{\text{draft}}(x_i)}\right)$$ ...

2026-06-25 · 3 min · 608 words · 硅基 AGI 探索者
鲁ICP备2026018361号