一切从两个工具开始
理解推理系统不需要太多概念,只需要两件事。
第一是 Roofline 分析,判断某个操作的瓶颈到底来自算力还是内存带宽。第二是一个极度简化的拆解:只看权重操作时间和 KV cache 操作时间。
整个推理过程可以压缩成一个判断式:
Time ≥ max(Compute Time, Memory Time)
计算时间由 batch size 和激活参数决定。内存时间由两部分组成:权重读取时间,以及 KV cache 的读取时间。激活参数指每个 token 实际参与计算的参数规模——某些 MoE 模型总参数极大,但每次只激活一小部分。KV cache 则随 batch 和上下文长度线性增长,每个 token 占用几 KB 内存。
Fast Mode 为什么贵但快
很多人困惑:为什么 Claude 或 Cursor 的 Fast Mode 付六倍的钱,只换来 2.5 倍速度。
核心答案是 batch size。
AI 推理从来不是一个用户一个用户单独服务的,而是把大量请求打包成一个 batch 一起执行。batch 越大,模型权重只需读取一次就能服务更多用户,单位成本被持续摊薄。但 batch 变大意味着等待时间增加——你必须等到「这一批车满了才发车」。
Fast Mode 的本质是让你进入更小的 batch,甚至给你更专属的资源,所以延迟更低,但每个 token 的成本更高。
那能不能付一百倍的钱把速度推到极致?理论上可以继续优化,但存在一个无法突破的物理下限:模型推理过程中必须把完整权重从 HBM 读一遍,这个时间无法绕过。在当前一代硬件上,这个下限大约是十几毫秒级别。
反向思考,Slow Mode 能不能更便宜?几乎没有意义。因为 KV cache 是针对每个用户独立存在的,速度变慢并不能有效摊薄它。
延迟和 batch 的曲线
把延迟对 batch size 画成图,结构非常清晰。
- 计算时间:一条线性上升的直线
- 权重读取时间:一个常数(与 batch 无关)
- KV cache 读取时间:随 batch 增长的线性部分
- 总时间:取两者中的较大值
小 batch 时,权重读取占主导,延迟被锁死在一个很高的水平。随着 batch 增大,权重成本被摊薄,延迟下降,直到最终被计算时间限制住。最低延迟,始终被权重读取时间锁死。
把这条时间曲线除以 batch size,得到的就是每个 token 的成本曲线:
- 计算成本:常数
- KV cache 成本:趋于常数
- 权重成本:反比函数,在小 batch 时趋近无限大
这解释了一个现实——小 batch 用户极其昂贵,过去很多产品其实是在用补贴覆盖这部分成本。
最优 batch 怎么算
系统存在一个效率最高的工作点:当权重读取时间和计算时间相等时,硬件利用率达到最佳。
推导出来的经验公式是:
batch size ≈ 300 × 稀疏度
300 这个数字来自硬件的算力与带宽比例,在不同 GPU 架构中变化不大。在实际工业部署中还需要再放大几倍,因为真实效率达不到理论极限。最终得到的 batch 数量,与前沿模型的真实运行规模非常接近。
MoE 决定了模型的物理形态
专家混合模型(MoE)现在是主流结构。一个模型可能包含上百个专家,但每次只激活其中少数几个。计算成本因此下降,但总参数规模变大,内存压力显著增加。
部署时,不同专家会被分布到不同 GPU 上,这需要全互连通信。在同一个机架内,NVLink 速度很快;但跨机架通信会明显变慢。
结论很直接:机架规模本身成为模型结构的物理边界。一个厂商能造多大的 scale up 域,决定了它能跑多大的 MoE。
流水线并行(Pipeline Parallel)能把模型拆到多个机架,缓解单卡内存压力。但 KV cache 才是主要内存消耗来源,而 pipeline 减少不了这一部分;某些情况下因为并行执行的序列增加,KV 占用反而更高。所以推理阶段倾向于把计算集中在一个大的 scale up 域里,只在必要时才用少量流水线。
至于为什么要不断扩大 scale up——很多人以为是为了增加内存容量,其实更关键的是提升内存带宽。权重读取时间与 GPU 数量成反比,GPU 越多,可以并行读取的权重越多,延迟越低。基础设施的差异,会直接反映到模型性能上。
为什么模型被严重过度训练
从经济角度看,AI 模型的成本结构有三块:预训练、强化学习、推理。最优策略是让三者成本尽可能接近。
如果推理阶段产生的 token 数量巨大,那就需要通过更充分的训练让每次推理更高效。根据估算,一个前沿模型在推理阶段产生的 token 量,已经接近甚至超过预训练数据规模。这意味着模型需要被训练得更「熟练」——训练量相比传统的 Chinchilla 类最优理论大幅增加。
API 定价的底层逻辑
理解了上面这些,所有看似奇怪的定价规则都能推导出来:
- 长上下文更贵:KV cache 的带宽消耗持续增长,超过某个临界点后系统从计算受限转为内存受限
- 输出 token 比输入更贵:生成阶段每次只产生一个 token,KV cache 开销占比更高
- 缓存命中更便宜:可以复用已有 KV 而不重新计算,但要占用内存资源,所以按时间收费
这些不是商业策略层的设计,而是硬件物理特性的直接外化。
一个有意思的类比
神经网络和密码学在某种意义上非常相似——两者都在对信息进行复杂的混合和变换。密码学是把结构变成随机,神经网络是从随机中提取结构。它们甚至共享某些可逆结构,这类结构在训练中可以通过反向传播时重新计算中间结果,节省大量内存。
写在最后
AI 不是魔法,也不是简单的规模扩展游戏。它是被机架、电缆、内存带宽、batch 经济学和通信模式这些硬约束牢牢限制的工程系统。
对独立开发者和一人公司而言,这套思维框架的实用价值在于:当你下次抱怨 API 又贵又慢,或者纠结要不要上 Fast Mode 时,你会知道自己付的钱具体买的是什么——是更小的 batch、更专属的资源,还是仅仅是优先级。理解约束,比相信宣传文案更接近真相。