大模型推理指标
GPU 利用率 90%,用户还是喊卡?大模型推理指标的三重认知陷阱
“我们的模型在公开 Benchmark 上跑出了 200 TPS,为什么上线后用户反馈‘首字等 3 秒、生成像打字机’?”
这不是个例。在大模型推理从实验室走向生产环境的过程中,我们反复观察到一种割裂:监控面板上的指标一片繁荣,用户体验却千疮百孔。问题不在于加速器不够快,而在于我们用错了尺子。
传统 Web 服务的 QPS/延迟模型,在 Token 流式生成的世界里几乎完全失效。本文将拆解三个最致命的认知误区,并给你一个可以立即运行的诊断脚本——不再被白皮书峰值牵着鼻子走。
误区一:负载画像错配——你在测什么?
几乎所有推理框架或硬件白皮书都会亮出一个惊人的 TPS 数字。但当你把同样的模型部署到真实的 RAG 或 Agent 场景中,性能往往打 3-5 折。这是 Benchmark 假设与真实业务负载画像的结构性错配造成的:
| 维度 | Benchmark 典型设定 | 真实业务特征 | 性能影响 |
|---|---|---|---|
| 序列长度 | 固定 128in/128out 或 512in/128out | 输入长度长尾分布(RAG 上下文可达 4K+),输出长度动态变化 | 长输入场景下首字延迟恶化数倍,长输出场景下生成累积延迟显著超出预期 |
| 并发模式 | 恒定 Batch Size 压满 | 请求到达服从泊松分布,Batch Size 频繁抖动 | 实际吞吐低于恒定 Batch 压测值,且波动幅度随请求到达方差增大 |
| 调度开销 | 忽略 Tokenizer/Detokenizer、网络序列化 | 这些开销在短请求/高并发下占比可达 15-30% | 短请求/高并发下框架开销占比上升,实测 TPS 进一步偏离理论值 |
评估供应商或选型时,不能只看官方 TPS。你需要要求提供与自身业务输入输出长度分布匹配的实测数据,或者用下文提供的校准脚本自行验证。基于峰值做的容量规划,上线后大概率面临 3 倍以上的资源缺口。
从系统侧看,这种错配的根源在于:加速器利用率是一个“欺骗性指标”——它无法区分算力是被用于有效 Decode、被 Prefill 抢占,还是消耗在 Padding 填充上。真正能反映推理健康度的监控指标,应该是“实际 Batch Size 均值/P99”和“Prefill/Decode 时间占比”。至于为什么利用率会骗人、以及这些替代指标如何指导优化,我们将在 “误区二:Prefill 与 Decode 是两种病” 一节中深入拆解。
认知校准器:你的业务场景到底能跑多少 TPS?
下面这个 Python 脚本是一个 “认知校准器”,基于昇腾 910B3 + Qwen3.5-27B FP16 的参数,用引入 Batch Size 感知的简化 Roofline 模型 + 经验衰减系数,帮你快速建立“业务参数 → 系统指标”的直觉。