0%

性能基线(Benchmark)建设方法论

性能基线(Benchmark)建设方法论

一句话定位:没有可信基线,所有”优化了 30%”都是自说自话。基线的全部价值在于可复现可比较

1. 五条硬规则

1 固定输入分布

  • 输入的长度分布、batch 组成、请求到达模式必须固定并记录(LLM 场景尤其关键:输入/输出长度直接决定吞吐);
  • 用固定数据集或固定随机种子生成,避免每次测的其实是不同负载。

2 固定环境

  • 固定硬件(GPU 型号、卡数、拓扑)、驱动/CUDA/框架版本、并发数、功耗与时钟模式(必要时锁频,避免降频与 boost 波动);
  • 独占机器测量,避免邻居进程干扰。环境变了就不能与旧数据直接比。

3 区分预热与稳定态

  • 前若干次迭代包含 CUDA 上下文初始化、显存分配、autotune、cache 预热,耗时显著偏高;
  • 必须丢弃预热轮,只统计稳定态;同时明确报告预热轮数(同 5.1 的 profiler schedule)。

4 报告 P50 / P99 而非仅均值

  • 均值会掩盖长尾。一个 P99 严重恶化的方案在生产上是不可接受的,哪怕均值更好;
  • 延迟必须给分位数(P50/P90/P99),吞吐给稳定态均值 + 波动范围。这也是 4.7 四维评估中”稳定性”维度的数据来源。

5 明确吞吐与延迟的取舍点

  • 两者天然对立:增大 batch / 加长聚合窗口 → 吞吐升、延迟升(见 3.6 Dynamic Batching);
  • 因此不能只报单点,应给出吞吐-延迟曲线,并标明业务 SLA 约束下(如 P99 < 2s)的最大可用吞吐——这才是有决策价值的数字。

2. 报告应包含的最小信息集

模型与精度 / 硬件与版本 / 输入输出长度分布 / 并发与 batch 设置 / 预热与测量轮数 / P50-P99 延迟 / 稳定态吞吐 / 显存占用峰值。

参考:MLPerf Benchmark 方法论