跳转至

五十二:推理评估方式

来源:http://mp.weixin.qq.com/s?__biz=MzYyNTk3Njg1NA==&mid=2247484685&idx=1&sn=97565e6b8e8288a67dc85759beaad5d8&chksm=f01eb674c7693f62c2b8cd2b05b73edaa2fc6f559a2be88cf57cae932f11eab40ac3ad3997de#rd

1. 学习范围

本日主题是大模型推理评估。 本日覆盖: - 推理服务评估的目标。

  • TTFT、TPOT、ITL、E2E latency、吞吐、并发。

  • Prefill/Decode 与指标的关系。

  • P50/P95/P99 长尾延迟。

  • 成本、显存、GPU 利用率和 KV cache 指标。

  • 质量评估、安全评估和稳定性评估。

  • 压测方法、负载建模和线上观测。

2. 推理评估的目标

推理评估不是只测模型回答好不好,而是评估模型服务在真实负载下是否满足用户体验、成本和可靠性要求。 核心问题: - 首 token 是否足够快。

  • 后续 token 是否稳定。

  • 并发上来后是否退化。

  • GPU 是否有效利用。

  • KV cache 是否成为瓶颈。

  • 单位成本是否可接受。

  • 质量是否因优化下降。

  • 长尾延迟是否符合 SLO。

3. 指标分类

推理指标可分为: - 延迟指标:TTFT、TPOT、ITL、E2E latency。

  • 吞吐指标:tokens/s、requests/s。

  • 资源指标:GPU utilization、memory usage、KV cache usage。

  • 成本指标:cost/request、cost/1K tokens。

  • 质量指标:准确率、幻觉率、格式遵循率。

  • 稳定性指标:错误率、超时率、OOM、P99 latency。

4. TTFT,首字延迟

TTFT, Time To First Token, 表示从请求到第一个 token 输出的时间。 组成:

TTFT = queue_time + preprocessing + prefill_time + first_decode_time + network_overhead
TTFT 对交互式体验很关键。用户通常对“迟迟没有开始输出”非常敏感。

5. TPOT

TPOT, Time Per Output Token, 表示生成阶段平均每个输出 token 的时间。

TPOT = decode_time / output_tokens
TPOT 越低,流式输出越快。它主要反映 Decode 阶段效率。

6. ITL

ITL, Inter-Token Latency, 表示相邻输出 token 之间的时间间隔。 TPOT 是平均值,ITL 更关注逐 token 抖动。流式场景下,ITL 抖动会让用户感到输出卡顿。

7. E2E Latency

E2E latency 是端到端延迟,从请求发出到完整响应结束。

E2E = queue + prefill + decode_all_tokens + postprocess + network
对于非流式 API,E2E latency 是用户最直观的等待时间。对于流式 API,TTFT 和 ITL 同样重要。

8. Token Throughput, 吞吐

Token throughput 表示单位时间生成 token 数,常见单位是 tokens/s。 可分为: - Prefill tokens/s:处理 prompt token 的吞吐。

  • Decode tokens/s:生成 output token 的吞吐。

  • Total tokens/s:输入输出合计吞吐。

不同统计口径必须说明清楚。

9. Request Throughput

Request throughput 表示单位时间完成请求数,常见单位是 requests/s。 它受请求长度分布影响很大。短请求下 requests/s 高,长输出请求下 requests/s 可能低但 tokens/s 不一定低。

10. 并发

并发指系统同时处理的活跃请求数。并发提升会增加 batch 效率,也会增加排队时间、KV cache 显存和长尾延迟。 评估时要画出:

concurrency -> TTFT / TPOT / throughput / error_rate
找到系统饱和点。

11. P50/P95/P99

平均延迟容易掩盖长尾。推理服务必须关注分位数: - P50:典型用户体验。

  • P95:大多数用户体验。

  • P99:长尾和稳定性。

线上 SLO 通常更关注 P95/P99,而不是平均值。

12. Prefill 指标

Prefill 指标包括: - prefill time。

  • prompt tokens/s。

  • queue time before prefill。

  • batch prefill size。

  • prompt length distribution。

  • prefix cache hit rate。

Prefill 指标主要解释 TTFT。

13. Decode 指标

Decode 指标包括: - TPOT。

  • ITL。

  • decode tokens/s。

  • active sequences。

  • decode batch size。

  • KV cache bandwidth。

  • tokens generated per request。

Decode 指标主要解释流式输出速度和总生成时间。

14. KV cache 指标

KV cache 指标包括: - used blocks。

  • free blocks。

  • fragmentation。

  • cache hit rate。

  • prefix cache hit rate。

  • eviction count。

  • OOM count。

  • per-request cache length。

KV 指标能解释为什么 GPU 仍有算力但无法接纳更多请求。

15. GPU 利用率

GPU utilization 包括算力利用率、显存占用、显存带宽、SM occupancy 和 kernel 时间分布。 注意:GPU utilization 高不一定代表服务好。可能 TTFT 很差、P99 很差或用户排队严重。

16. 成本指标

成本指标包括: - cost/request。

  • cost/input token。

  • cost/output token。

  • GPU hours。

  • utilization-adjusted cost。

  • cost per successful task。

最终业务更关心“完成一个有效任务花多少钱”,而不只是硬件吞吐。

17. 质量指标

推理优化可能影响质量。例如量化、KV cache 量化、speculative decoding、截断上下文、滑动窗口都可能改变输出。 质量指标: - 准确率。

  • 幻觉率。

  • 格式遵循率。

  • 代码通过率。

  • 检索引用正确率。

  • 用户满意度。

性能优化不能牺牲不可接受的质量。

18. 稳定性指标

稳定性指标包括: - error rate。

  • timeout rate。

  • OOM rate。

  • retry rate。

  • cancelled requests。

  • degraded responses。

  • server restarts。

高吞吐但错误率高的系统不可用。

19. 负载建模

压测必须模拟真实负载: - prompt length distribution。

  • output length distribution。

  • arrival rate。

  • concurrency。

  • streaming / non-streaming。

  • 不同任务类型。

  • 长短请求混合。

  • burst traffic。

只用固定长度请求压测会误导结论。

20. 压测方法

典型压测流程:

1. 固定模型、硬件和推理参数
2. 构造请求长度分布
3. 逐步提高 QPS 或并发
4. 记录 TTFT、TPOT、P95/P99、吞吐、显存和错误率
5. 找到饱和点和退化点
6. 比较不同框架或配置
压测要区分冷启动、warmup 和稳定运行阶段。

21. SLO 与容量规划

SLO 是服务目标,例如:

P95 TTFT < 1.5s
P95 TPOT < 80ms
error_rate < 0.1%
容量规划要根据 SLO 反推需要多少 GPU、允许多少并发、最大上下文和最大输出长度。

22. 常见误区

常见误区: - 只看平均延迟。

  • 混淆 tokens/s 和 requests/s。

  • 不区分 input tokens 和 output tokens。

  • 用不真实的固定长度压测。

  • 忽略 queue time。

  • 忽略 P99。

  • 忽略质量变化。

  • 忽略成本和错误率。

23. 核心总结

推理评估要同时看用户体验、系统吞吐、成本、质量和稳定性。TTFT 主要反映排队和 Prefill,TPOT/ITL 主要反映 Decode,吞吐反映整体处理能力,P95/P99 反映长尾稳定性。 面试表达时应突出: - 推理评估必须分阶段、分指标。

  • 不同负载长度会改变瓶颈。

  • 性能优化必须和质量、安全、成本一起评估。

24. 参考资料

  • LLM inference solution and metrics: https://zeux.io/2024/03/15/llm-inference-sol/

  • Main stages of auto-regressive decoding: https://aiexpjourney.substack.com/p/main-stages-of-auto-regressive-decoding

  • Hugging Face KV cache documentation: https://huggingface.co/docs/transformers/main/en/kv_cache

  • vLLM documentation: https://docs.vllm.ai/

            预览时标签不可点
    

    <div class="