Skip to content

推理优化判断手册

这份判断手册按问题组织,不属于 Task0–6 的顺序学习内容。完成机制学习后,遇到延迟、吞吐、并发或显存问题时,用它选择排查方向和验证项目。

推理优化不应从工具名称开始,而应从请求表现开始判断:问题发生在 prefill、decode、KV Cache、调度还是模型部署,应该先改计算、缓存、调度还是表示方式。

统一判断链是:

text
现象 → 请求阶段 → 瓶颈对象 → 策略代价 → 证据出口

本专题重点关注 Infra-L2–L4 的执行效率;模型版本治理、灰度发布、扩缩容和流量治理属于 Infra-L5,不在这份判断手册展开。

推理栈与组件边界

选择推理方案时,先区分“模型是什么”和“模型如何运行”。训练或微调得到的是模型权重;量化、转换或编译后得到的是推理部署产物;vLLM、SGLang、TensorRT-LLM 和 llama.cpp 则负责加载产物、管理执行状态并处理请求。

模型、部署产物与推理引擎关系

名称主要职责典型例子在本专题中的判断重点
训练模型保存架构、权重和配置,可继续训练或微调Llama、Qwen、DeepSeek 权重模型结构、参数规模、dtype 和上下文能力
推理部署产物为部署准备的权重文件、量化文件或编译结果FP16 / BF16 checkpoint、GPTQ、AWQ、GGUF、TensorRT Engine文件格式、量化方式、加载要求和质量变化
推理框架提供模型加载、张量计算和生成接口PyTorch、Transformers参考实现、模型兼容性和可读性
推理引擎 / Runtime管理 KV Cache、调度请求、调用 kernel 并提供服务接口vLLM、SGLang、TensorRT-LLM、llama.cppbackend、调度、缓存、kernel 和运行时收益

不要把“推理模型”作为默认术语:它也可能被理解为具有推理能力的模型。本文统一使用“训练模型”和“推理部署产物”描述模型侧对象。

常见推理引擎如何分工

引擎重点机制适合观察的问题使用边界
vLLMPagedAttention、KV Cache 管理、Continuous Batching缓存组织、批处理、TTFT、TPOT 和吞吐收益依赖模型、版本、dtype 和 workload
SGLangRadixAttention、Prefix Cache、结构化请求执行前缀复用、缓存命中、结构化生成和调度需要单独确认模型与版本适配
TensorRT-LLMTensorRT 编译、融合 kernel、量化和 NVIDIA 优化编译后执行、kernel 路径和 NVIDIA 平台性能engine 构建和环境准备更复杂
llama.cppGGUF 加载、CPU/GPU 混合执行本地部署、GGUF 格式和资源受限场景GGUF 是独立 backend 路径,不沿用 GPTQ / AWQ 或 vLLM 的启动方式

这张表用于选择验证方向,不替代各项目的安装说明。66 负责浮点推理 baseline;67 负责量化部署;69 关注 Prefix Cache / RadixAttention;70 关注多请求调度。TensorRT-LLM 和 llama.cpp 先作为可选 backend 路径,不强行塞入所有基础项目。

按现象选择机制

遇到 Cache 相关问题时,先判断改变的是“保存什么”“如何分配”“如何复用”还是“如何控制容量”,再进入对应 Notebook 或项目。

Cache 角色先回答的问题典型机制主要指标学习与验证入口
请求级状态Decode 需要保存哪些历史 K / V?KV Cache峰值显存、TPOT11 KV Cache / 03 Decode
物理分配Cache 如何减少碎片并按需增长?PagedAttention、Block TableBlock 利用率、并发容量、峰值显存22 PagedAttention
前缀复用相同前缀是否可以避免重复 Prefill?RadixAttention、Prefix Cache命中长度、reused tokens、TTFT24 RadixAttention / 69 Prefix Cache
容量治理Cache 接近预算时如何控制代价?驱逐、压缩、KV Cache 量化OOM、速度、质量、并发04 KV Cache / 41 KV Cache 量化

如果还不能确定瓶颈对象,先使用下面的现象表定位阶段;已经确认属于 Cache 问题后,再使用上面的 Cache 角色表选择具体机制。

现象先判断的对象优先策略主要指标验证出口
长 prompt 下首 token 明显变慢prefill 计算与访存FlashAttention、chunked prefill、prefix cacheTTFT、prefill 时间、峰值显存02 Prefill
单请求生成阶段每 token 很慢decode 计算和 KV 读取speculative decoding、multi-token decodingTPOT、接受率、质量03 Decode
并发增加后生成速度下降decode 调度和 GPU 利用率decode scheduling、continuous batchingTPOT、吞吐、P99、GPU 利用率03 Decode / 07 Serving
cache 持续增长,并发上不去KV Cache 容量与组织paging、prefix reuse、evictioncache 容量、命中率、并发、峰值显存04 KV Cache
显存下降但交互体验变差量化或缓存策略的代价区分权重量化、KV Cache 量化和调度影响TTFT、TPOT、吞吐、质量、显存05 Quantization / 06 Benchmark
backend 能加载但收益不稳定kernel、格式或运行时路径对齐 backend、dtype、workload 和版本格式、kernel、延迟、吞吐、质量06 Benchmark

证据与项目决策

推理优化证据与决策流程

指标主要回答什么常见误判
TTFT首 token 是否被 prefill 拖慢只看总延迟,无法定位 prefill
TPOTdecode 阶段每 token 是否过慢把 decode 慢归因于整个模型
throughput单位时间能完成多少请求或 token只看吞吐,不看交互延迟
P99长尾请求是否不稳定只看平均值,忽略排队和调度
peak memory当前配置能否继续增加上下文或并发显存接近上限时仍盲目加 batch
cache hit ratePrefix / Radix Cache 是否真的复用只看 TTFT 变化就推断命中
acceptance ratespeculative decoding 是否减少了验证成本只看生成速度,不检查质量和接受率
证据层级可以确认什么不能确认什么
CPU 模拟shape、容量公式、匹配逻辑和决策逻辑真实显存、TTFT、吞吐和 backend 命中
GPU 探针CUDA 分配和基础峰值变化完整 backend 机制收益
backend smoke服务能否启动和基本指标稳定 benchmark 与普遍结论
repeated benchmark固定 workload 下的相对收益其他模型或 workload 的普遍收益

66 负责建立浮点推理 baseline 和统一指标口径;68–71 分别验证推测解码、缓存复用、调度和架构扩展。任何候选方案都应在固定模型、backend、dtype、prompt / generated tokens、并发和请求分布下比较。

形成结论时按以下顺序检查:

  1. 先定位阶段。 先区分 prefill、decode、cache 和 serving 调度,不要用一个总延迟替代阶段指标。
  2. 再定位对象。 说明瓶颈来自计算、访存、缓存容量、排队还是模型加载路径。
  3. 再选择策略。 写清楚代价转移到了算力、带宽、显存、通信、排队延迟还是质量。
  4. 最后选择证据。 CPU 只能验证 shape、容量公式和决策逻辑;真实 TTFT、TPOT、P99、吞吐和 backend 行为需要 GPU 实验。

使用 accept / tune / reject 时,必须同时考虑速度、显存、质量和稳定性。单次 smoke test 或单一指标改善,只能标记为待验证,不能写成完整推理优化结论。

阅读入口

Released under the MIT License.