首页/AI/大模型部署与运维速查/性能回归:变量隔离法
运维监控与排障50 条

性能回归:变量隔离法

升级或改参数后变慢,用固定负载基准与变量隔离定位:同一压测集对比新旧版本,观察 TTFT(prefill 计算)与 TPOT(decode 带宽与通信)分别变了多少,指向不同的退化源。

为什么必须固定基准

升级镜像、驱动、推理框架或换量化版本之后变慢,是排障里最常见也最容易吵起来的问题。可靠做法是先有一套固定负载基准:同一份数据、同一并发、同一输入输出长度,只改一个变量后重跑,并把首 token 延迟与逐 token 延迟分开看。两者退化的方向指向完全不同的根因,混在一起看就只能靠猜。

基本信息

适用平台自托管推理服务,各引擎通用
基准要素数据集、并发、输入长度、输出长度四项固定
观察指标首 token 延迟、逐 token 延迟、总吞吐、显存与缓存水位
记录要求镜像版本、驱动版本、权重版本一并写进报告
权限要求能读引擎指标与显卡状态的普通账号即可

典型使用场景

  • 版本升级后验证:新版本在目标并发下是否退化
  • 驱动与固件变更:区分是软件变化还是底层变化带来的影响
  • 参数调优对照:改一个参数就跑一遍同一份基准
  • 容量评估:给出可承诺的并发档位与对应延迟
  • 故障复盘:把退化点与变更时间线对齐,找到引入版本
  • 跨硬件对照:换卡或换机型用同一基准比较,避免只按纸面参数下结论

固定基准(示意)

固定基准(示意)
<基准脚本> --input-len 1024 --output-len 256 --concurrency 16   # 固定形状与并发
# 记录首 token 延迟与逐 token 延迟的分位数,以及显存与缓存水位
# 每次只换一个变量,其余保持不变;数据与并发都不换
git -C /opt/llm rev-parse HEAD > /tmp/ver.txt                   # 记录代码版本

退化方向对照

现象优先怀疑核对方法
首 token 延迟变差预填充计算、编译与图捕获用长输入短输出的档位单独测
逐 token 延迟变差解码路径、量化内核、通信用短输入长输出的档位单独测
整体吞吐下降调度策略、批处理配置、降频对照显存水位与降频记录
波动变大同卡邻居、磁盘 IO、网络查同机其他任务与整机负载
一次只改一个变量:镜像、驱动、参数、权重分开对比,混合变更得到的结论不可信。
把基准脚本与数据集纳入版本管理:否则过几个月没人能复现当初的结论,也没法和新结果对齐。

易错点

  • 新旧版本在不同负载下对比:并发与长度不一致时,快慢结论完全失真
  • 只看平均延迟:平均值掩盖尾部退化,用户在高峰期最先感受到
  • 忽略环境差异:驱动、邻居任务、温度都会影响结果,压测前先固定环境
  • 没有记录权重与镜像版本:结论无法复现,也无从判断该回滚到哪一版

数据来源与参考

  • vLLM 官方仓库:benchmarks 目录(github.com/vllm-project/vllm)
  • NVIDIA 官方文档:性能分析工具总览(docs.nvidia.com)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌