ECDFEmpirical Cumulative Distribution Function 的缩写,中文通常翻译为:经验累积分布函数

在大模型性能测试中,只看平均 TTFT 往往不够。

ECDF(经验累积分布图)更适合回答:

有多少比例的请求,能在某个时间内拿到第一个 Token?

图表达什么?

横轴是 TTFT(Time To First Token),纵轴是累计请求比例

在这里插入图片描述

本例模拟 1000 个 LLM 请求,实际得到:

  • P50 = 1.26s:50% 的请求在 1.26 秒内返回首 Token;
  • P90 = 3.86s:90% 的请求在 3.86 秒内返回;
  • P95 = 5.28s
  • P99 = 8.54s

ECDF 越靠近左上角,通常意味着整体 TTFT 越低、尾延迟越好。

图中 P50 只有 1.26 秒,但 P99 已经达到 8.54 秒,说明:

大部分请求体验不错,但少量慢请求形成了明显的尾延迟。

这也是为什么大模型性能分析不能只看平均值。

核心代码:

# 1. 把 TTFT 从小到大排序
x = np.sort(ttft)

# 2. 为每个 TTFT 计算累计比例
y = np.arange(1, len(x) + 1) / len(x)

# 3. 画 ECDF 曲线
ax.step(
    x,
    y,
    where="post",
    linewidth=2
)

一般使用场景

ECDF 很适合分析:

  • TTFT;
  • TPOT;
  • 请求总延迟;
  • 输出 Token 速率;
  • KV Cache 传输耗时;
  • Prefill 时间;
  • 排队等待时间。

尤其适合比较不同模型、不同并发或不同推理框架的 P50 / P90 / P95 / P99

一句话总结

ECDF 能同时展示大模型请求的整体延迟分布和尾延迟指标

更多推荐