Skip to content

推理优化正文

页面目标

这页不是再重复目录,而是把推理优化专题里最常见的三类问题展开成可操作的判断路径:

  • 长 prompt 为什么慢
  • 生成阶段为什么吞吐不高
  • cache 为什么一边跑一边涨

适用人群

  • 想理解推理框架、推理引擎和优化点关系的人。
  • 正在看长上下文、生成速度、KV cache 或吞吐问题的人。
  • 想把推理优化和 benchmark 结果对齐的人。

不适用人群

  • 只关心训练,不关心推理链路的人。
  • 只想抄一个优化名词,但不想看请求和缓存代价的人。
  • 还没有 decode、cache、batch 基本概念的人。

你应该如何开始读

  • 先读 2.6 -> 20 -> 21 -> 22,把推理优化的基础主线串起来。
  • 如果你关心长上下文和 cache,再看 22 -> 36 -> 41
  • 如果你关心生成阶段吞吐,再看 21 -> 37 -> 38
  • 最后用 31 / 2.9 验证优化是不是在真实场景里成立。

故事线

一个典型的推理优化故事,通常从用户抱怨“长 prompt 一进来就很慢”开始。第一次排查时,大家常会盯着 decode,觉得是采样或生成策略出了问题;但一上 profiling,真正的瓶颈往往分成三层:attention 太重、KV cache 在涨、调度没有把 prefill 和 decode 排顺。

第一步先看 2.6 -> 20 -> 21 -> 22,确认基础推理链路到底是哪里慢。 第二步再看 22 -> 36 -> 41,确认 cache 能不能复用、分页和驱逐是否合理。 第三步再看 21 -> 37 -> 38,确认生成路径和调度是否在浪费吞吐。 最后把这些策略回到 31 / 2.9,看看优化是不是在真实请求分布里成立。

这个故事的关键不是“有多少推理技巧”,而是把技巧放回一个真实请求链路里看:谁在训练,谁在组织请求,谁在真正吃掉算力和缓存。

具体案例

案例 1:长 prompt 进来后首 token 延迟高

现象是:prompt 长度一上去,首 token 延迟明显升高,但 decode 阶段的单 token 速度看起来还行。
判断链路是:先看 20 -> 22,确认 attention 和 KV cache 是否已经在长上下文下被放大;再看 36 -> 41,确认前缀复用和 cache 驱逐有没有跟上。

结果通常有两种:

  • 如果 prefill 占比特别高,问题多半在 attention 计算和前缀组织。
  • 如果 cache 增长快但复用低,问题多半在请求组织和驱逐策略。

这个案例的重点是:首 token 慢不等于 decode 慢,必须先把 prefill 和 cache 分开看。

案例 2:生成阶段吞吐不高

现象是:单个请求看起来没问题,但并发一高,整体吞吐就上不去。
判断链路是:先看 21 -> 37 -> 38,确认采样、草稿验证和调度有没有把 token 产出节奏排顺。

常见结论是:

  • 如果草稿模型质量不够, speculative decoding 反而会吃掉收益。
  • 如果调度没把 prefill / decode 分开排, token 产出会被请求顺序拖住。

这个案例的重点是:吞吐问题往往不是“模型不够快”,而是“请求组织不够顺”。

案例 3:优化看起来有效,但线上不稳定

现象是:benchmark 上看起来提速了,但线上请求一换,收益就掉下去。
判断链路是:先回到 31 / 2.9,确认 benchmark 口径和线上请求分布是不是一致;再看 22 -> 36 -> 41,确认 cache 命中条件是否被请求形态放大或削弱。

这个案例的重点是:推理优化不是只看单条曲线,而是看请求分布、缓存命中和调度策略能不能一起成立。

栈位关系

推理优化不是单独的一层,它通常嵌在训练框架、推理框架和推理引擎之间。

栈位主要职责和本专题的关系
训练框架训练、微调、导出模型权重提供上游模型和结构约束
推理框架加载模型、组织请求、处理解码流程负责把模型接入推理场景
推理引擎调度、KV cache、kernel 路径和执行效率是优化最直接的落点

专题主线

这页不是按单页罗列,而是按“问题 -> 机制 -> 调度 -> 验证”的链路来读。

主线关注的问题适合先看
计算主线attention 怎么算得更省、更稳20 -> 22 -> 31
解码主线生成时怎么选 token、怎么减少重复计算21 -> 37
缓存主线KV cache 怎么复用、怎么分页、怎么调度22 -> 36 -> 41
吞吐主线怎么把 prefill / decode / batch 排布得更高效36 -> 38 -> 31
高级生成主线speculative / multi-token / scheduling 怎么串起来2.7A -> 37 -> 38

一页速记

层级你主要关心什么在本专题里怎么看
训练框架模型是怎么训练出来、怎么导出权重的只看它作为上游来源,不在这里展开训练细节
推理框架模型怎么被加载、请求怎么被组织、解码怎么走先看 2.6 / 2.7A,再看请求和解码策略
推理引擎调度、KV cache、kernel 路径和执行效率重点看 22 / 36 / 38 / 41 这条线

建议阅读顺序

  1. 先看 2.6 -> 20 -> 21 -> 22,把 attention、decode 和 cache 的基础行为对上。
  2. 再看 2.7A -> 36 -> 37 -> 38 -> 41,把前缀复用、高级生成和调度串起来。
  3. 最后回到 31 / 2.9,确认方法层判断能不能在 benchmark 里兑现。

典型案例

长 prompt

长 prompt 的核心不是“token 多”,而是 attention 成本和 KV cache 一起上来。优先检查 20 -> 22,看 attention 是否已经做了分块/在线 softmax 级别的优化,再看 36 -> 41,判断前缀复用和 cache 驱逐有没有跟上请求结构。

生成慢

如果是生成慢,通常要看 21 -> 37 -> 38。采样策略决定生成路径,草稿-验证决定 token 产出节奏,调度决定 prefill 和 decode 是否能排顺。很多场景不是模型本身慢,而是请求组织没有把吞吐挤出来。

显存持续涨

如果 cache 持续涨,重点看 22 -> 36 -> 41。要先分清是 KV cache 的自然增长,还是前缀复用不足、驱逐策略太保守、batch 组织不合理造成的额外占用。

框架与引擎

推理优化不是孤立发生的,它通常发生在一条链路里:

  1. 训练框架先把模型训练出来,或者把微调后的权重导出。
  2. 推理框架负责把模型加载进来,并把请求、解码和基础 serving 逻辑组织起来。
  3. 推理引擎再往下接管调度、KV cache、kernel 路径和执行效率。

所以,当你在看 FlashAttention / PagedAttention / Prefix Caching / Decode Scheduling 时,不要只问“算法怎么写”,还要问“它落在推理框架层还是引擎层”。
前者更偏接口、请求和流程组织,后者更偏执行、缓存和吞吐。

典型阅读链

  • 如果你想先理解推理慢在哪里,先读 20 -> 22 -> 31,把 attention、cache 和收益验证先串起来。
  • 如果你想先理解生成阶段怎么做决策,先读 21 -> 37,把采样策略和多 token 生成连起来。
  • 如果你想重点看 cache 生命周期和调度,先读 22 -> 36 -> 41,把分页、前缀复用和驱逐策略连起来。
  • 如果你想看吞吐和延迟怎么一起优化,先读 36 -> 38 -> 31,把 prefill、decode 和 benchmark 连起来。
  • 如果你想看更强的生成加速,先读 2.7A -> 37 -> 38,再回到 31 看收益是否成立。

对照表

场景先看什么重点差异
长 prompt20 -> 22 -> 31看 attention 成本和 cache 增长
生成慢21 -> 37 -> 38看采样、草稿验证和调度
cache 变大22 -> 36 -> 41看复用、分页和驱逐
想提吞吐36 -> 38 -> 31看 prefill / decode 排布
想接更强生成2.7A -> 37 -> 38看策略复杂度和接受率

进一步展开

1. 先看请求阶段

  • prefill 占比高时,先关注 attention 和前缀复用。
  • decode 占比高时,先关注采样、草稿验证和调度。

2. 再看 cache 生命周期

  • cache 的增长是否和 prompt 长度同步。
  • 前缀是否真的被命中复用。
  • 驱逐是否会误伤高复用请求。

3. 最后看工程化收益

  • 是否真的提升了吞吐。
  • 是否把延迟控制在可接受范围。
  • 是否引入了过高的实现复杂度。

简单规则

  • 先区分目标是降延迟还是提吞吐。
  • 再区分瓶颈是在 attention、decode 还是 cache。
  • 再看优化是否改变了请求组织方式。
  • 最后用 312.9 证明收益。

常见错误

  • 只优化单个 kernel,不管请求调度。
  • 只看理论提速,不看线上请求分布。
  • 只谈 cache 省了多少,不谈调度复杂度增加了多少。

深入阅读

  • 想看完整请求链路故事,去 推理优化深入阅读
  • 想快速回顾摘要、对照和 FAQ,继续留在本页即可。

相关专题

小结

推理优化的核心不是“有多少技巧”,而是“哪类请求适合哪条链路”。这页的作用是把技巧放回问题里看,而不是单独看概念。

Released under the MIT License.