跳到主要内容

模型性能

模型服务压测不应该只看“每秒多少请求”。LLM 推理有输入阶段、生成阶段、流式返回、KV Cache 和显存管理等特征,所以需要同时关注延迟、吞吐、token 分布、稳定性和资源利用率。

核心指标​

指标英文 / 缩写含义主要关注点
首 token 延迟Time To First Token / TTFT从请求发出到收到第一个输出 token 的时间用户开始看到响应要等多久,交互体验最敏感
token 间延迟Inter Token Latency / ITL流式输出时,相邻输出 token 之间的时间间隔输出是否顺滑,是否有明显卡顿
完整请求延迟End-to-End Latency / E2E Latency从请求发出到完整响应结束的总耗时用户完成一次请求的总等待时间
平均延迟Average Latency所有请求延迟的平均值快速看整体水平,但容易被分布掩盖
分位延迟p50 / p90 / p95 / p99 Latency不同分位上的请求延迟尾延迟和稳定性,p99 往往比平均值更重要
请求吞吐Request Throughput / RPS / QPS单位时间内完成的请求数服务能处理多少请求
输出 token 吞吐Output Token Throughput单位时间生成的输出 token 数decode 阶段生成能力
总 token 吞吐Total Token Throughput单位时间处理的输入 + 输出 token 数整体 token 处理能力
输入长度Input Sequence Length / ISL每个请求的输入 token 数影响 prefill 成本和 KV Cache 占用
输出长度Output Sequence Length / OSL每个请求生成的输出 token 数影响 decode 成本和请求总时长
并发数Concurrency同时处理的请求数量服务容量和排队情况
请求速率Request Rate单位时间进入系统的请求数模拟线上流量入口,观察是否排队或超时
成功率Success Rate成功完成请求占比压测是否有效,服务是否稳定
错误率Error Rate失败请求占比超时、限流、服务端异常、OOM 等问题
超时率Timeout Rate超时请求占比高负载下是否出现排队或响应过慢
GPU 显存占用GPU Memory Usage推理服务占用的显存权重、KV Cache、运行时开销是否接近上限
GPU 利用率GPU UtilizationGPU 计算资源利用情况判断是否吃满 GPU,或瓶颈是否在 CPU / 网络 / 调度
KV Cache 使用量KV Cache UsageKV Cache 占用或 block 使用情况长上下文、高并发下是否成为瓶颈
队列等待时间Queue Time请求进入服务后等待调度的时间高并发下延迟上升是否来自排队

怎么看这些指标​

场景优先关注指标判断方式
聊天机器人 / 助手TTFT、ITL、p90 / p99 延迟首 token 要快,流式输出要稳定
批量生成任务Output Token Throughput、E2E Latency、成功率更关注总吞吐和任务完成时间
长文档总结ISL、TTFT、GPU 显存、KV Cache长输入会显著增加 prefill 和显存压力
高并发在线服务RPS、p99 延迟、错误率、队列等待时间看是否开始排队、超时或抖动
模型 / 框架对比TTFT、ITL、token throughput、显存占用同一数据集和负载下比较才有意义
压测容量上限Request Rate、错误率、p99 延迟、GPU 利用率找到延迟恶化或错误率上升的临界点

指标理解​

TTFT​

TTFT 主要受 prefill 阶段影响。输入越长、batch 越大、排队越严重,TTFT 往往越高。

对交互式产品来说,TTFT 很关键,因为用户并不一定关心完整回答什么时候结束,但会明显感知“什么时候开始输出”。

ITL​

ITL 主要反映 decode 阶段的流式生成速度。

如果 TTFT 很低但 ITL 很高,用户会看到“很快开始输出,但后面一个字一个字蹦得很慢”。如果 ITL 抖动很大,流式输出会显得不稳定。

吞吐​

LLM 压测里最好同时看请求吞吐和 token 吞吐:

  • 请求吞吐高,不代表 token 吞吐高,因为每个请求的输入/输出长度可能很短。
  • token 吞吐高,不代表用户体验好,因为 TTFT 和 p99 延迟可能很差。

所以压测报告里要同时写清楚请求数、输入长度、输出长度和并发条件。

p99 延迟​

平均延迟容易掩盖问题。线上服务更应该关注 p90 / p95 / p99。

如果平均延迟看起来正常,但 p99 很高,说明部分用户会遇到明显卡顿,可能来自排队、批处理调度、KV Cache 紧张、显存碎片或后端抖动。

压测记录建议​

每次压测至少记录这些信息:

类别需要记录
模型模型名称、参数量、精度、量化方式
服务推理框架、版本、启动参数、是否 streaming
硬件GPU 型号、数量、显存、CPU、内存
负载并发数、请求速率、总请求数、运行时长
数据输入长度分布、输出长度分布、数据集来源
结果TTFT、ITL、E2E latency、吞吐、错误率、显存
备注是否 OOM、是否限流、是否出现明显排队或超时

常见误区​

  • 只看 QPS,不看 token 长度。
  • 只看平均延迟,不看 p90 / p99。
  • 不区分 prefill 和 decode 阶段。
  • 不记录输入长度和输出长度,导致不同压测结果无法比较。
  • 用固定并发结果代表线上真实流量,但线上更接近固定请求速率或突发流量。
  • 不记录推理框架参数,后续无法复现。

常用工具

AIPerf