同一个 Transformer 模型,换一种注意力内核、缓存管理和请求调度,速度可能相差数倍。原因是大模型服务并不是一道单纯的“算力题”:数据要在不同层级的内存间搬运,请求长度不断变化,生成又必须逐 token 进行。
因此,“Transformer 加速设计”不是给模型装一个加速按钮,而是找到训练、首轮输入与逐字生成各自的瓶颈,再让算法、内核、硬件和服务调度配合。
## 先把一次推理拆成两个阶段
用户提交提示后,模型先并行处理全部输入 token,这一段常称为 prefill。长文档让它更偏计算密集,注意力要比较大量位置。
随后进入 decode:每轮生成一个或少量新 token,同时读取先前保存的 Key 和 Value。单步计算量未必很大,却反复搬运模型权重与 KV 缓存,往往受显存带宽限制。
优化 prefill 的方法不一定能显著降低 decode 延迟。评测时要分开记录首 token 时间、每个后续 token 时间和并发吞吐,而不是只报一个平均速度。
## FlashAttention 加速的是数据搬运
标准注意力会产生一个随序列长度平方增长的分数矩阵。真正实现时,大量中间结果在 GPU 高带宽内存与更快的片上存储之间往返,搬运成本可能超过算术本身。
FlashAttention 把计算切成能放进片上存储的小块,并在块内完成 softmax 等操作,避免把完整中间矩阵写回显存。它仍是精确注意力,不是通过少算位置来近似结果。原始论文强调的核心正是 IO-aware:算法要理解硬件存储层级。
后续版本持续随硬件变化。2026 年的 FlashAttention-4 针对 Blackwell GPU 上张量核心与其他单元增长不对称的问题,重新设计异步流水线、块大小和 softmax 路径。这说明高性能内核不是“一次写好永久通用”,而要跟随硬件瓶颈迁移。

## GQA 缩小不断增长的 KV 缓存
自回归生成若每次都重算全部历史,成本会很高。KV 缓存保存各层已经计算过的 Key 与 Value,新 token 只需计算新增部分。
问题是缓存随上下文长度、层数和并发请求增长。多头注意力为每个查询头保存独立 Key/Value;Multi-Query Attention 让所有查询头共享一组 Key/Value,缓存更小,却可能损失质量。Grouped-Query Attention 在两者之间分组共享。
GQA 论文显示,已有多头检查点可以用原训练算力约 5% 的追加训练转为 GQA,并在实验中取得接近多头注意力的质量与接近 MQA 的速度。实际收益仍取决于模型结构、硬件和请求长度。
量化 KV 缓存还能继续省内存,但会加入量化与反量化开销,并可能影响长上下文质量。必须在真实长度分布上同时测精度和端到端延迟。
## PagedAttention 解决内存碎片
不同用户的请求随时开始、结束和增长,若为每条请求预留一整块连续显存,会留下大量空洞。PagedAttention 借鉴操作系统虚拟内存,把 KV 缓存分成固定大小的块,通过映射表让逻辑上连续的序列分散存放。
基于它构建的 vLLM 论文报告,在其测试模型和负载上,相比当时的 FasterTransformer 与 Orca,吞吐提高 2 到 4 倍,同时保持相同延迟水平。这个数字不能直接复制到任何环境,但说明内存管理本身就是模型服务算法。
前缀缓存还能让共享系统提示或同一文档前缀的请求复用 KV 块。复用前必须把租户、权限、模型版本和采样条件纳入缓存键,不能为了省显存跨越数据边界。
## 连续批处理让 GPU 少等人
传统静态批处理要等一组请求全部结束才换下一批;短回答完成后,它的位置可能空着。连续批处理在每个生成步移出已完成请求、加入新请求,让 GPU 保持较高利用率。
批越大,吞吐通常越高,单个用户等待也可能变长。调度器需要在交互请求、离线任务和长上下文之间设优先级,防止一个超长请求占满缓存。
真正有意义的服务指标包括 P50 与 P95 首 token 延迟、每 token 延迟、每秒完成请求数、显存利用率、排队时间和超时率。只看 GPU 利用率,可能得到“机器很忙、用户很慢”的系统。
## 推测解码用小模型先打草稿
自回归生成的串行性很难消除。推测解码让一个更快的草稿模型先提出多个 token,再由目标模型并行验证。配合正确的接受与拒绝采样,可以保持目标模型的输出分布。
原始研究在特定 T5-XXL 配置上报告 2 到 3 倍加速,但接受率高度依赖任务、语言和两个模型的匹配程度。草稿太弱会频繁被拒,草稿本身太慢又抵消收益。
它像一支勘路队:只有路线大多被主队接受,提前探路才值得。代码、中文、多语种和专业术语需要分别测接受率,不能用英语聊天结果代替。

## 量化与并行要看误差和通信
把权重从 BF16 压到 INT8 或更低位宽,能减少显存占用和带宽压力;但不同层、异常值和硬件内核对量化敏感度不同。离线困惑度变化很小,不代表工具调用、数学或结构化输出没有退化。
模型放不进一张卡时,可以用张量并行、流水线并行或专家并行。卡数增加不等于线性加速,跨卡通信可能成为新瓶颈。机内互连、跨节点网络、批量和序列长度共同决定最佳方案。
先在单卡或单机上消除明显 IO 和缓存浪费,再扩大并行规模,通常更容易定位收益来自哪里。
## 一条务实的升级路径
1. **画像负载**:统计输入长度、输出长度、并发和时间峰谷。
2. **拆分指标**:分别测 prefill、decode、吞吐、尾延迟和质量。
3. **优化内核**:在兼容硬件上验证 FlashAttention 或原生 SDPA。
4. **优化缓存**:检查 GQA、分页 KV、前缀复用与量化的真实收益。
5. **优化调度**:启用连续批处理,为长短请求建立队列策略。
6. **再做高级加速**:测试推测解码、并行与更低精度。
7. **持续回归**:每次升级同时运行质量、稳定性和成本测试。
## 快不是目的,单位任务效率才是
Transformer 加速的最终指标,不是某个内核的峰值 TFLOPS,而是在质量门槛内完成一次真实任务所需的时间、成本和能耗。
FlashAttention、GQA、PagedAttention、连续批处理与推测解码解决的是不同瓶颈。把它们按负载组合,并保留可重复评测,才能让智能化升级从演示速度变成稳定的生产能力。
## 延伸阅读