Fast 模式为什么更快也更贵:从 Prefill/Decode 到 Batch 经济学

22 阅读7分钟

在 Claude Code 里敲一下 /fast,输出速度大约提升 2.5 倍,价格变成 2 到 6 倍。OpenAI 那边也有对应的 Fast 档位,逻辑一样。

第一反应容易想歪:是不是切到了一个更小、更快、但更笨的模型?

不是。Anthropic 的说法很直接——Fast mode is not a different model。同一份权重,同样的智力,同样的采样逻辑,它给出的答案就是它本来会给出的答案。唯一变的是 token 吐出来的速度,以及你为此付的钱。

而这两件事之所以绑在一起,得从「模型是怎么生成一个回答的」讲起。

一次生成的两个阶段

任何一次 LLM 响应都分成两个阶段,物理特性完全不同。

Prefill(提示处理):把你发过去的所有东西——这轮消息、读进上下文的文件、整段对话历史、系统提示——做一次前向传播。所有输入 token 可以并行推进,这一步相对快,而且规模化得不错。

Decode(逐 token 生成):自回归地一个 token 一个 token 往外吐,每个新 token 都要以前面所有 token 为条件。它是严格串行的,而且几乎所有的等待时间都花在这里。

一句话概括:Prefill 决定你等多久看到第一个字(TTFT,time-to-first-token),Decode 决定后面的字流得多快(OTPS,output tokens per second)。

Decode 慢在哪:它卡的是显存带宽,不是算力

这是整件事最反直觉的一环。

每生成一个 token,GPU 都要把整套模型权重从 HBM(高带宽显存)搬到计算单元里过一遍,算完这一个 token,下一个 token 再搬一遍。对一个前沿规模的模型来说,这是每个 token 搬动几百 GB 的量级。

而单个 token 需要的算术运算量,跟搬这些权重的开销比起来微不足道。

于是 Decode 阶段的真实画面是:GPU 的计算单元大部分时间在空转等数据。这个阶段是 memory-bandwidth-bound(显存带宽受限),不是 compute-bound(算力受限)。

Prefill 恰好相反——它用一次权重加载,把你成千上万个输入 token 一起推过去,把 FLOPs 吃得很满。

Decode 时那段闲置的算力,就是所有推理服务商赖以生存的那块余量。

解法:批处理(Batching)

一条序列喂不饱 GPU。所以服务商的做法是把很多用户的请求塞进同一次前向传播——权重只加载一次,同时作用在几十条序列上。这就是连续批处理(continuous batching)。

最贵的那部分开销(搬权重)被整个 batch 摊薄了。

这就是前沿模型能被负担得起的全部经济学:

  • batch 越大 → 一次权重加载服务的 token 越多 → 系统总吞吐越高 → 单 token 成本越低

但批处理是拿延迟换吞吐。你的 token 是按整个 batch 共享的节奏挤出来的,而且 batch 越大,每一步要 attend 的序列越多、要搬的内存越多,任何单个用户感受到的速度就越慢

标准档的 Opus 跑的是大 batch:便宜、高吞吐、对你个人来说慢。

同一次权重加载被多少条序列分摊,决定了单个用户的速度和成本

Fast 模式做了什么

反向操作,就这么简单:把你的请求放进一个小得多的 batch,很可能还落在预留容量(reserved capacity)或更高优先级的推理路径上。

每次前向传播里分摊权重加载的序列少了,你的序列每一步能拿到更多的 GPU 时间和带宽,OTPS 最高提升约 2.5 倍。

成本是同一根杠杆的另一头。那次权重加载现在只由少数几条序列分摊,所以你在每个 GPU-second 里占的份额陡然上升。

注意你买的不是「更多的计算」——生成出来的 token 跟标准档一模一样。你买的是一块更少人共享的 GPU 切片。这就是溢价的来源:Opus 4.8 上 2×,4.7 上 6×。

标准模式Fast 模式
模型权重同一份同一份
答案质量不变
Batch 大小小 / 预留容量
OTPS(输出速度)基准最高 ~2.5×
TTFT(首字延迟)基准基本不变
单 token 价格基准2×(4.8)/ 6×(4.7)

需要说清楚的是:2.5× 是 Anthropic 自己给的数字,不是第三方独立测量的;「更小 batch」是最符合实测特征(OTPS 上升、TTFT 持平)的机制推断,Anthropic 没有公开确认内部实现。

关键的坑之一:它让你更早结束,不是更早开始

Fast 模式加速的是 Decode。它完全不碰 Prefill,所以第一个 token 出来之前的那段等待(TTFT)没有变化。缩小 batch 让解码变快,首字延迟原地不动。

推论很直接:只有输出量大的时候 Fast 才有意义。

  • 短回复:两种模式几乎同时结束,你付了 2~6 倍的钱,省下一个眨眼的时间
  • 长生成:Fast 明显拉开差距,输出越长,溢价买到的时间越多

什么时候开,什么时候别开

建议开:

  • Decode 占主导的长输出——大规模重构、脚手架生成、动辄几千 token 的产出
  • 你人在旁边盯着等结果,你自己的时间是更贵的那个成本项
  • 有时间盒的活儿,早完成能换成真金白银

建议关:

  • 短交互——提问、确认、一行回答(这些是 TTFT-bound,Fast 帮不上什么忙)
  • 后台或自主运行的任务,反正没人盯着
  • 批处理作业和 CI(本来也用不了)

关键的坑之二:别在会话中途打开

这个坑最贵,而且不容易想到。

Fast 和标准档各自维护独立的 prompt cache。

你一切换,那份已经预热好的标准档缓存对 Fast 路径就完全无用了——整段对话前缀会被当成一次 cache write 重新处理,按 Fast 的费率计价,而且这发生在 Claude 写出第一个 token 之前。

切得越晚,一次性代价越大:

切换时的上下文量重新计费(Opus 4.8)重新计费(Opus 4.7)
50K tokens$0.62$1.88
100K tokens$1.25$3.75
200K tokens$2.50$7.50
260K(实测)$3.26$9.77

原文作者实测了最后一行:在一个 260K token 的会话里敲 /fast,260,591 个 token 被作为 Fast 费率的 cache write 重新计费,在产出任何有用内容之前,先付掉约 $3.15 的一次性溢价。

正确做法:在会话开始时就决定要不要开 Fast,而不是在第 80 轮。好消息是关掉再开不会重复扣这笔钱——Fast 那份缓存已经建好了。

几个边角情况

  • 订阅制下,Fast 模式只从 usage credits 扣,从第一个 token 起就按 Fast 费率计
  • 撞到 Fast 的速率限制,它会静默回落到标准速度和标准价格
  • Fast 模式目前是 research preview,定价和可用性都可能变

小结

Fast 模式的本质,用一句话说完:同一个模型,跑在一块更少人共享的 GPU 切片上。

「更快」和「更贵」不是两个独立的事实,是同一个事实的两种表述——你没有买到更多的计算,你买到的是更少的共享。

所以它的适用判断也很清晰:

  1. 看输出长度。输出短,Fast 的收益被 TTFT 吃掉了
  2. 看有没有人在等。没人等,就没有值得用钱买的时间
  3. 看什么时候开。会话开头开,别在中途开

顺带一个更通用的收获:理解 Prefill/Decode 的分野和显存带宽瓶颈,能解释的不止 Fast 模式——为什么长上下文的首字延迟高、为什么流式输出的速度会随负载波动、为什么 prompt caching 能省那么多钱,底下都是同一套物理。

参考