《互联网产品的 AI 架构·推理性能与成本工程》4.3 生成长度的非线性成本
会话摘要的 P50 是 805 token,P99 却到 1193 token,前 5% 的长请求吃掉两成输出预算。本节用 200 条确定性样本说明长度分布、分位数与长尾占比怎么算,给出延迟与期望成本曲线、按能力设长度目标和截断上限的收益试算,并用 node --test 的真实输出验证每一个数字。
tag
会话摘要的 P50 是 805 token,P99 却到 1193 token,前 5% 的长请求吃掉两成输出预算。本节用 200 条确定性样本说明长度分布、分位数与长尾占比怎么算,给出延迟与期望成本曲线、按能力设长度目标和截断上限的收益试算,并用 node --test 的真实输出验证每一个数字。
用户在第 1.2 秒切走私信页,模型也可能在答案已经足够确定时继续生成。本节区分用户取消、置信度停止与预算耗尽三种提前终止,给出期望成本、盈亏平衡置信度与首帧后不重试的决策代码,并用 node --test 与 200 条示例样本的真实运行结果说明省下的 token 与赔掉的重问成本。
「回声」客服的工单建议在 max_tokens 边界被截成半截 JSON,另一个能力又因上限过大把长回复的成本推高。本节把输出预算拆成目标、余量与闭包三段,给出 max_tokens 计算、跨增量块的停止序列扫描与截断分类的 TypeScript 实现,并用 node --test 的真实输出验证每一种截断的可用性与重试判断。
21 条检索、历史与工具片段压缩到 9 条,输入 token 从 767 降到 415,但一次去掉保护标记的实验丢掉了退款单号、金额与时效三个事实。本节给出压缩流水线、逐步丢弃原因与事实探针验收,说明怎样在省钱的同时证明关键信息没有丢。文中数字均为示例样本运行结果。
同样的提示内容只调整块顺序,可缓存前缀从 594 token 变成 1,354 token,百次请求的输入成本从 29,300 微元降到 12,200 微元。本节说明前缀缓存的命中条件、失效边界与“可缓存形状”,并给出可运行的前缀分析模块与示例样本运行结果。
从「回声」一次账单翻三倍的扩容说起,拆解输入 token 的四类来源、历史每轮重发带来的近似二次增长,以及上下文长度对成本与首字延迟的不同曲线;文中给出可运行的 TypeScript 统计模块、示例样本上的运行结果,并说明它与卷一上下文预算的分工。
从「回声」大客户挤占小客户容量的投诉出发,讨论多租户共享推理容量时的加权公平队列、饥饿防护、租户配额与突发额度。文中给出可运行的 TypeScript WFQ 与令牌桶模块,并在三租户确定性样本上给出无防护与 200ms 防护两种配置的真实运行结果,说明公平份额与最坏等待之间的取舍。
从一次「把并发调大就好了」的线上误判出发,说明并发上限如何用 Little 定律与目标利用率推导、信号量如何限制在途请求、背压如何向上游传播,以及降级与拒绝的本质区别。文中给出可运行的 TypeScript 信号量与压力决策模块,并在 240 条固定样本上对比无界队列、有界拒绝与降级三种策略的真实运行结果。
从「回声」早高峰的排队投诉出发,讨论有界队列、优先级老化与准入判据:为什么无限排队会把过载伪装成延迟,为什么纯优先级会让批量任务饿死,以及怎样用预估等待时间在入口直接拒绝。文中给出可运行的 TypeScript 队列与准入模块,并在 90 条确定性样本上比较 FIFO、优先级与老化三种顺序的真实运行结果。
三份来自不同团队的压测报告往往无法比较,因为负载模型不同。本文用确定性 mock 推理器构造稳定、突发、长尾三种负载,产出一份不含时间戳、带指纹、可逐字段比对的基线报告,并给出把它当回归门禁的阈值与取舍;所有数字均为示例样本上的运行结果,不是生产实测。
看板写着 40 QPS,用户却在超时:吞吐、并发与有效吞吐回答的是三个不同问题。本文给出 goodput 的 SLO 与窗口口径,用确定性批调度器展示并发饱和、批处理对 p95 的影响,以及吞吐几乎不变而 goodput 从 100% 跌到 28% 的取舍。
从用户只看到「转圈很久」的投诉出发,把流式推理拆成首字、单 token 与端到端三段:排队、冷启动、预填充各占多少,TTFT、ITL、TPOT 与 E2E 如何互相约束,预算为什么必须逐项签而不是取平均;附可逐条断言的 TypeScript 时间线模块与示例样本上的运行结果。
卷二《推理性能与成本工程》全目录:13 章 39 节,从延迟与吞吐的度量出发,经调度、上下文、输出、缓存、压缩替代、离线批处理、容量、归因、对照实验,走到质量联合优化、规模化稳定性与收口;附三条阅读路径、章节产出物与读完应能回答的十二个问题。
前言交代卷二的结构与用法:13 章如何从度量走到优化与收口,ai-lab 的 src/perf 模块地图,三级可运行性与代码块约定,数字口径与版本边界,章间依赖与三条阅读路径,以及每章留给团队的练习和自检清单,并说明哪些结论不能直接搬到生产。
卷一回答了 AI 能力的边界在哪,卷二回答同样边界下怎样更便宜更快。这篇序从一次账单超支讲起,说明为什么性能与成本必须一起设计,拆解成本失控的五个放大器与三份预算,交代两卷的分工、实验工程 ai-lab 的延续方式、数字来源,以及卷二明确不承诺的事情。
把卷一十三轮的判断压缩成一份可打印的评审清单:能力与契约、网关职责、路由与模型组合、流式、提示与上下文、结构化输出、预算与成本、缓存、降级、安全边界、观测计量、演进入口共十二组六十问,每组附通过判据、常见驳回理由与整改建议,末页给出三十分钟评审流程与结论模板。
把卷一反复使用的两类产物压缩成可直接抄用的速查:能力契约模板(六面承诺、请求响应形状、预算与降级字段)与错误模型速查(九类错误、可重试判定、HTTP 映射、用户可见文案、记录字段);另附五种能力的契约对照、流式事件与结构化输出失败表,以及预算算式与契约评审检查点。
把卷一的核心术语与判据压缩成速查表:能力契约、网关、路由、流式、提示、结构化输出、预算、缓存、降级、安全、观测与治理十二组,每组给出定义、判断条件、常见误用与对应章节;另附一页纸十二问与中英对照,可作为评审前的对齐材料,也适合新人快速上手。
用 60 条确定性样本跑完基线,得到成功率、P95 延迟、单次成本、缓存命中率与降级率,再按影响乘概率生成风险清单,并给出进入卷二的七项条件。文中数字来自 ai-lab 的示例样本运行结果,不是生产实测;同时说明样本量、阈值与风险分档为什么必须一起写清楚。
前十二章的部件都写好了,却没有一条流水线把它们按正确顺序串起来。本节把认证与配额、缓存、路由、调用、校验和降级组合成基线:说明缓存为什么在路由之前、预算如何逐段扣减、命中与降级各记录哪些字段,以及失败时由哪一层负责,并给出可运行实现与九个确定性测试。