读完输入,与逐步生成是两种节奏
V01/b0 · 输入已知:prefill
prefill · 处理已知输入
可并行处理输入各位置。因果 mask 保留:每个位置仍只能看允许的前缀。
decode · 逐 token 生成
后续 token 尚未知,得到前一个后才能继续。生成还会增加 KV。
首 token 等待与持续出字延迟可以受不同瓶颈限制;实际瓶颈取决于 batch、模型和硬件。
训练完成后,我们回到一个使用请求。材料已经全部给出,这段已知输入可以像前面的大矩阵那样批量处理;因果 mask 仍规定每个位置能够读到哪里。这一步叫 prefill。它逐层计算输入,形成这次请求的 K/V,并来到生成第一个输出的位置。并行的是已知输入的计算,不是已经同时知道了未来答案。
教师备课:指图与模拟问答
指图与推进 · 不朗读教师指向当前高亮对象,随后推进。
V01/b1 · 输出未知:decode
prefill · 处理已知输入
可并行处理输入各位置。因果 mask 保留:每个位置仍只能看允许的前缀。
decode · 逐 token 生成
后续 token 尚未知,得到前一个后才能继续。生成还会增加 KV。
首 token 等待与持续出字延迟可以受不同瓶颈限制;实际瓶颈取决于 batch、模型和硬件。
第一个输出选出来以后,才能继续选第二个;普通自回归生成按这样的节奏推进,这叫 decode。已有 K/V 可以复用,新 token 仍需计算,并留下新的状态。因此提交以后等待第一字,与之后持续出字,是两种不同的服务体验。现在把注意力放回开场那一侧:这些当前记忆到底存在哪里,长度增加时怎样继续放?
教师备课:指图与模拟问答
指图与推进 · 不朗读教师指向当前高亮对象,随后推进。
补充推导、边界与来源
prefill 接收已经给出的整段输入。各位置的输入已知,因此可以组织并行计算;因果 mask 仍限制每个位置不能读取后面的 token。“并行”描述执行安排,不取消因果可见性。prefill 建立输入对应的 K/V,并提供生成开始所需的计算结果。
decode 的后续 token 尚未确定,需要先选择当前 token,再把它作为下一步输入,因此普通自回归生成按步继续。已有 KV 可复用,避免重复计算全部历史投影。用户等待第一个输出的时间常称首 token 延迟,后续相邻输出的间隔是另一项体验指标。长输入 prefill 与小批 decode 往往呈现不同瓶颈,但计算受限或带宽受限并非不看形状、批量和硬件就永远成立的标签。
本页证据与条件
普通自回归生成流程示意