返回课堂

读完输入,与逐步生成是两种节奏

V01/b0 · 输入已知:prefill

同一请求:已知输入 → 第一个输出 → 后续生成

prefill · 处理已知输入

材料已经给全

可并行处理输入各位置。因果 mask 保留:每个位置仍只能看允许的前缀。

decode · 逐 token 生成

B?…

后续 token 尚未知,得到前一个后才能继续。生成还会增加 KV。

首 token 等待与持续出字延迟可以受不同瓶颈限制;实际瓶颈取决于 batch、模型和硬件。

输入已知:prefill

训练完成后,我们回到一个使用请求。材料已经全部给出,这段已知输入可以像前面的大矩阵那样批量处理;因果 mask 仍规定每个位置能够读到哪里。这一步叫 prefill。它逐层计算输入,形成这次请求的 K/V,并来到生成第一个输出的位置。并行的是已知输入的计算,不是已经同时知道了未来答案。

教师备课:指图与模拟问答

指图与推进 · 不朗读教师指向当前高亮对象,随后推进。

V01/b1 · 输出未知:decode

同一请求:已知输入 → 第一个输出 → 后续生成

prefill · 处理已知输入

材料已经给全

可并行处理输入各位置。因果 mask 保留:每个位置仍只能看允许的前缀。

decode · 逐 token 生成

B更快…

后续 token 尚未知,得到前一个后才能继续。生成还会增加 KV。

首 token 等待与持续出字延迟可以受不同瓶颈限制;实际瓶颈取决于 batch、模型和硬件。

输出未知:decode

第一个输出选出来以后,才能继续选第二个;普通自回归生成按这样的节奏推进,这叫 decode。已有 K/V 可以复用,新 token 仍需计算,并留下新的状态。因此提交以后等待第一字,与之后持续出字,是两种不同的服务体验。现在把注意力放回开场那一侧:这些当前记忆到底存在哪里,长度增加时怎样继续放?

教师备课:指图与模拟问答

指图与推进 · 不朗读教师指向当前高亮对象,随后推进。

补充推导、边界与来源

prefill 接收已经给出的整段输入。各位置的输入已知,因此可以组织并行计算;因果 mask 仍限制每个位置不能读取后面的 token。“并行”描述执行安排,不取消因果可见性。prefill 建立输入对应的 K/V,并提供生成开始所需的计算结果。

decode 的后续 token 尚未确定,需要先选择当前 token,再把它作为下一步输入,因此普通自回归生成按步继续。已有 KV 可复用,避免重复计算全部历史投影。用户等待第一个输出的时间常称首 token 延迟,后续相邻输出的间隔是另一项体验指标。长输入 prefill 与小批 decode 往往呈现不同瓶颈,但计算受限或带宽受限并非不看形状、批量和硬件就永远成立的标签。

本页证据与条件

普通自回归生成流程示意

进入主题正文