《互联网产品的 AI 架构·推理性能与成本工程》附录 A 性能与成本指标速查

把卷二反复使用的指标压缩成一页可查的定义表:TTFT、TPOT、端到端延迟、吞吐、goodput、并发、缓存命中率、重试率、降级率、单次成本、单位 token 成本与归因维度;每个指标给出定义、算式、分母、常见误读与对应章节,并附一张团队口径对齐模板。

指标速查的使用方式

指标定义不统一,后面的实验与容量规划都会失真。附录 A 把卷二用到的指标集中列出,每组给五样东西:定义、算式、分母、常见误读、对应章节。

建议团队在第一次优化之前,用最后一节的模板把口径写下来。写不下来的指标,不要放进报表。

一、延迟指标

TTFT(Time To First Token,首字延迟)

定义:从请求进入到第一个输出 token 可用的时间。

算式:TTFT = 排队 + 预处理 + 首 token 生成 + 网络。

分母:全部请求,包括失败请求;失败请求的 TTFT 记为未达标,不剔除。

常见误读:

  • 只统计成功请求,峰值时报表反而变好。
  • 把网关处理时间排除在外,用户感知不到这个“优化”。
  • 用平均值代替 p95,长尾被抹平。

对应章节:1.1、1.3、12.3。

TPOT / ITL(每 token 时间 / 增量延迟)

定义:首字之后,相邻 token 之间的平均或分位间隔。

算式:TPOT = (结束时间 - 首字时间) / (输出 token 数 - 1)。

分母:成功完成且输出 token 数大于 1 的请求。

常见误读:

  • 输出被截断时仍按完整长度计算。
  • 把流式分片的网络抖动算进模型生成时间。
  • 忽略不同能力的输出长度差异,直接横向比较。

对应章节:1.1、4.3。

端到端延迟(E2E)

定义:从用户触发到完整结果可用的时间。

算式:E2E = TTFT + 生成时间 + 后处理 + 渲染。

分母:全部请求。取消请求单独统计,不混入成功样本。

常见误读:

  • 只测模型调用,不测后处理与渲染。
  • 把“流式首字出现”当成端到端完成。
  • 不同客户端版本混在一起统计。

对应章节:1.1、4.2。

二、吞吐指标

吞吐(throughput)

定义:单位时间内完成的请求数或 token 数。

算式:吞吐 = 完成请求数 / 统计窗口。

分母:统计窗口,必须写明是一秒、一分钟还是一小时。

常见误读:

  • 窗口太长,把突发峰值平均掉。
  • 只算成功请求,失败与超时被排除。
  • 把“已发送”当成“已完成”。

对应章节:1.2、8.2。

并发(concurrency)

定义:同一时刻正在处理的请求数。

算式(Little 定律):并发 = 到达率 × 平均停留时间。

分母:同一时刻的在途请求,包含排队与生成。

常见误读:

  • 把连接数当成并发数。
  • 忽略排队时间,低估所需并发。
  • 按平均值配置,峰值时排队雪崩。

对应章节:2.2、8.2。

goodput(有效吞吐)

定义:满足延迟目标的请求比例或速率。

算式:goodput = 满足 SLO 的请求数 / 统计窗口。

分母:全部请求,包括超时与失败。

常见误读:

  • 用吞吐代替 goodput,忽略延迟超标。
  • 目标定得太宽,goodput 恒为 100%。
  • 只统计在线请求,漏掉异步任务。

对应章节:1.2、8.1。

三、质量与复用指标

缓存命中率

定义:命中缓存的请求占可缓存请求的比例。

算式:命中率 = 命中次数 / (命中次数 + 未命中次数)。

分母:可缓存请求,不含明确不缓存的请求。

常见误读:

  • 键设计错误导致“假命中”,命中率虚高、质量下降。
  • 把过期结果算作命中。
  • 命中率上升但平均成本没降,因为未命中的请求更贵。

对应章节:5.1、5.3。

重试率

定义:发生至少一次重试的请求比例。

算式:重试率 = 含重试请求数 / 全部请求数。

分母:全部请求;重试次数单独统计。

常见误读:

  • 只统计最终失败的请求,忽略“重试后成功”。
  • 重试不消耗预算,实际成本翻倍。
  • 把客户端重试与服务端重试混在一起。

对应章节:9.1、12.1。

降级率

定义:发生降级的请求比例。

算式:降级率 = 降级请求数 / 全部请求数。

分母:全部请求;按降级等级分别统计。

常见误读:

  • 只记录布尔值,无法区分换模型、缓存与兜底。
  • 降级后仍算成功,质量回退被掩盖。
  • 降级开关长期不关,基线被污染。

对应章节:12.2、11.3。

四、成本指标

单次成本

定义:完成一次请求的平均成本。

算式:单次成本 = (输入 token × 输入单价 + 输出 token × 输出单价) / 请求数。

分母:全部请求,包含失败与重试。

常见误读:

  • 只算成功请求,低估真实成本。
  • 忽略重试与缓存未命中的重复计费。
  • 用浮点金额累加,产生舍入误差。

对应章节:9.1、9.3。

单位 token 成本

定义:每百万 token 的综合成本,用于跨模型比较。

算式:单位成本 = 总成本 / 总 token 数 × 1,000,000。

分母:输入与输出分别计算,再给加权值。

常见误读:

  • 输入输出混算,掩盖结构差异。
  • 忽略缓存折扣与批处理折扣。
  • 用不同币种直接比较。

对应章节:9.2、6.3。

成本归因维度

维度回答的问题常见缺口
租户谁在花钱共享池未拆分
能力哪个功能最贵能力标识缺失
模型哪个档位最贵路由后未记录
提示版本哪次改版推高了成本版本未绑定
请求类型在线还是离线任务未分类

对应章节:9.2、9.3。

五、容量指标

峰值系数

定义:峰值请求率与平均请求率的比值。

算式:峰值系数 = 峰值 QPS / 平均 QPS。

分母:至少观察两周,覆盖工作日与周末。

常见误读:

  • 用单日数据外推全年。
  • 忽略活动与大促的独立峰值。
  • 把峰值系数当成固定值,不做季节性修正。

对应章节:8.2。

容量余量

定义:可用容量超过峰值需求的比例。

算式:余量 = (可用容量 - 峰值需求) / 峰值需求。

分母:峰值需求,按最坏组合估算。

常见误读:

  • 余量只算机器,不算供应商配额。
  • 忽略冷启动与扩容延迟。
  • 余量过大,成本长期闲置。

对应章节:8.2、8.3。

六、口径对齐模板

把下面这张表填完,再开始优化:

能力:            chat.reply
延迟定义:        首字出现 / 最后一段渲染完成
统计窗口:        1 分钟聚合,按小时报表
延迟目标:        TTFT p95 <= 800ms;E2E p95 <= 4s
分母:            全部请求(含失败与取消)
成本口径:        整数微元,含重试与缓存未命中
归因维度:        租户 / 能力 / 模型 / 提示版本
质量指标:        人工抽检通过率,样本量 >= 200/周
缓存口径:        可缓存请求为分母,过期结果不计命中
降级口径:        按等级分别统计,降级仍计入成功但单独标记

模板的价值在于暴露分歧。两个人对“延迟”的定义不同,填表时就会吵起来;早吵比上线后吵便宜。

七、指标之间的三个陷阱

陷阱一:平均值陷阱。 平均值达标、p95 超标,是 AI 请求的常态。长尾来自长输入、长输出与重试放大,必须单独观察。

陷阱二:分母陷阱。 用成功请求做分母,失败会被从报表里抹掉。所有核心指标的分母都应该是全部请求。

陷阱三:窗口陷阱。 一分钟窗口能看见突发,一小时窗口能看见趋势。两个窗口都要有,不能只留一个。

小结

指标不是越多越好。卷二真正依赖的只有十几项:三个延迟、两个吞吐、三个质量、三个成本、两个容量。

把这十几项的定义、分母与窗口写下来,团队就有了共同语言。剩下的工作,是在这个共同语言上做对照实验。

继续阅读

探索更多技术文章

浏览归档,发现更多关于系统设计、工具链和工程实践的内容。

全部文章 返回首页

「books」更多文章

  1. 《互联网产品的 AI 架构·平台化与治理》附录 C 平台化评审清单
  2. 《互联网产品的 AI 架构·平台化与治理》附录 B 能力目录与配额字段速查
  3. 《互联网产品的 AI 架构·平台化与治理》附录 A 治理角色与职责速查