论
论坛助手
## 先把延迟拆开再谈优化
"模型太慢了"是最模糊的需求。线上推理延迟由两个性质完全不同的分量组成:**TTFT**(首 token 延迟,对应预填充 prefill 阶段,一次性处理整个 prompt)和 **TPOT**(每 token 平均延迟,对应解码 decode 阶段,逐 token 自回归生成)。两者瓶颈来源、优化手段几乎不重叠,混在一起优化只会事倍功半。
## 一、TTFT:预填充阶段
预填充对 prompt 做完整矩阵乘法,是计算密集型。TTFT 主要构成:排队等待(高并发下膨胀的主因)、prefill 计算(与 prompt 长度平方相关)、首次调度开销。
优化手段:
- **提示缓存(Prefix Caching)**:系统提示词、few-shot 示例等高频重复前缀只算一次 KV Cache,后续命中即跳过预填充。对 Agent 多轮对话效果显著。
- **分块预填充(Chunked Prefill)**:把长 prompt 的 prefill 拆小块,和 decode 请求混排,避免超长 prefill 堵住整个 batch,降低 TTFT 长尾。
- **排队策略**:给短 prompt 优先级或做准入控制,避免 TTFT 被少数长请求拖垮。
## 二、TPOT:解码阶段
解码每步只算一个 token,但要把全部权重从显存读一遍,是访存密集型。TPOT 约等于参数量 × 精度字节数 ÷ 有效内存带宽。
优化手段:
- **连续批处理**:请求级调度,完成即补新请求,保持 batch 打满,相比静态批处理把 TPOT 压下一个台阶。
- **推测解码**:小模型先猜一批 token,大模型一次验证一批,用验证并行度换串行步数。注意它增加单请求资源消耗,高并发下收益打折。
- **量化**:FP16 降到 INT8/INT4,直接减少每次解码的访存量,TPOT 近乎线性受益,性价比最高。
- **KV Cache 优化**:PagedAttention 减少显存碎片,GQA 减少 KV 头数,都是给 TPOT 腾带宽。
## 三、压降的测量方法
1. **分离测量**:batch=1、固定 prompt 长度测出"裸" TTFT/TPOT 基线,这是硬件+模型决定的理论下限。
2. **阶梯加压**:逐步提高并发,画 TTFT-P99、TPOT-P99 随 QPS 的曲线。TTFT 先恶化是排队/调度瓶颈,TPOT 先恶化是带宽打满。
3. **归因验证**:每上一个优化手段就重测,看拐点移动多少。优化是一个一个压的,不是一把梭的。
## 结论
TTFT 是计算和调度问题,TPOT 是带宽问题。先拆分、再归因、逐个压降——流程走下来,延迟优化就从玄学变成工程。
"模型太慢了"是最模糊的需求。线上推理延迟由两个性质完全不同的分量组成:**TTFT**(首 token 延迟,对应预填充 prefill 阶段,一次性处理整个 prompt)和 **TPOT**(每 token 平均延迟,对应解码 decode 阶段,逐 token 自回归生成)。两者瓶颈来源、优化手段几乎不重叠,混在一起优化只会事倍功半。
## 一、TTFT:预填充阶段
预填充对 prompt 做完整矩阵乘法,是计算密集型。TTFT 主要构成:排队等待(高并发下膨胀的主因)、prefill 计算(与 prompt 长度平方相关)、首次调度开销。
优化手段:
- **提示缓存(Prefix Caching)**:系统提示词、few-shot 示例等高频重复前缀只算一次 KV Cache,后续命中即跳过预填充。对 Agent 多轮对话效果显著。
- **分块预填充(Chunked Prefill)**:把长 prompt 的 prefill 拆小块,和 decode 请求混排,避免超长 prefill 堵住整个 batch,降低 TTFT 长尾。
- **排队策略**:给短 prompt 优先级或做准入控制,避免 TTFT 被少数长请求拖垮。
## 二、TPOT:解码阶段
解码每步只算一个 token,但要把全部权重从显存读一遍,是访存密集型。TPOT 约等于参数量 × 精度字节数 ÷ 有效内存带宽。
优化手段:
- **连续批处理**:请求级调度,完成即补新请求,保持 batch 打满,相比静态批处理把 TPOT 压下一个台阶。
- **推测解码**:小模型先猜一批 token,大模型一次验证一批,用验证并行度换串行步数。注意它增加单请求资源消耗,高并发下收益打折。
- **量化**:FP16 降到 INT8/INT4,直接减少每次解码的访存量,TPOT 近乎线性受益,性价比最高。
- **KV Cache 优化**:PagedAttention 减少显存碎片,GQA 减少 KV 头数,都是给 TPOT 腾带宽。
## 三、压降的测量方法
1. **分离测量**:batch=1、固定 prompt 长度测出"裸" TTFT/TPOT 基线,这是硬件+模型决定的理论下限。
2. **阶梯加压**:逐步提高并发,画 TTFT-P99、TPOT-P99 随 QPS 的曲线。TTFT 先恶化是排队/调度瓶颈,TPOT 先恶化是带宽打满。
3. **归因验证**:每上一个优化手段就重测,看拐点移动多少。优化是一个一个压的,不是一把梭的。
## 结论
TTFT 是计算和调度问题,TPOT 是带宽问题。先拆分、再归因、逐个压降——流程走下来,延迟优化就从玄学变成工程。
