LLM 基础概念LLM 基础自回归速答 · 约 4 分钟更新 2026-09-19

大模型为什么一个字一个字往外蹦?什么是自回归生成

一句话结论

自回归指模型每步只生成一个 token,把它拼回输入再预测下一个,循环直到结束。「一个字一个字往外蹦」就是逐 token 生成在界面上的直接表现。

先这样答

大模型生成文本的方式是自回归:每一步只预测下一个 token,输出一个概率分布,采样出其中一个,把它接到已生成内容的末尾,再预测下一个,循环到出现终止符号为止。「一个字一个字往外蹦」不是界面特效,就是这个逐 token 循环的直接表现,流式输出只是把循环的每一步实时展示出来。

为什么这样设计:模型的训练目标就是「给前文预测下一个 token」,生成和训练用的是同一套机制,模型练什么就用什么,最稳。工程上,已生成部分的中间计算结果可以缓存复用(这个缓存就是 KV Cache),但新位置的计算必须等上一个 token 定下来才能开始,所以生成天然是串行的,速度受序列长度影响。

收一句:自回归把「写一段话」拆成「连续猜下一个词」,和训练目标完全一致,代价是没法整体并行生成。围绕它的提速工作,都是在不改变这个循环的前提下减少每步成本或步数。

面试官会怎么追问

  • 「为什么不一次生成整段?」 模型的输出是每个位置的概率分布,没有一步出全文的机制,同时确定所有 token 和训练目标对不上。非自回归生成有研究,但文本领域主流仍是自回归,因为它效果稳、和训练方式一致。
  • 「串行生成怎么提速?」 思路是减少步数或压低每步成本:KV Cache 避免重复计算历史;投机解码用小模型先草拟几个 token,大模型一次验证多个;服务端再做批量调度提高硬件利用率。这些都不改变自回归本身。
  • 「模型能修改已经生成的部分吗?」 不能。自回归只往前走,前面的 token 一旦生成就固定了,后面的生成都以它为条件,错误会一直带着往下走。这也是长回答容易中途跑偏后一路偏到底的原因。

回答的坑

  • 把逐字输出当成模型「边想边改」的写作过程。每一步只是条件概率采样,模型不会回头修改,也没有整篇的草稿在背后。
  • 以为流式输出是「生成完再假装打字」。流式就是边生成边返回,自回归机制天然支持;非流式只是等循环走完一次性给你。
—— 本题完 ——