用大模型时,答案总是一个字一个字往外蹦,这个逐字生成的过程,技术名叫解码阶段。它和开口前那段不出声的准备是两回事:准备阶段把输入通读一遍,解码阶段才是真正写答案,每写出一个新字,都要把前面已经写出的内容再掂量一遍,决定下一个字接什么。
答案为什么是蹦出来的
解码阶段的工作方式决定了它只能逐字推进。模型每生成一个字,都要把“原始问题加上已生成的所有字”重新过一遍,才算出下一个字的概率。写第十个字时,前九个字都参与计算;写第一百个字时,前面九十九个全都在场。这种带反馈的推进,让答案天然呈现为一个字一个字往外冒的形态。
这个阶段的成本有两个特点。一是每多写一个字,计算量就涨一截,因为要考虑的上下文越来越长;二是它没法像读输入那样并行处理,只能一个接一个来。你看到的流式输出,就是解码过程实时把成果往外送的结果。
像口译员同声传译
理解解码阶段,可以类比口译员做同声传译。发言人讲一段,译员开口译一段,译每一个句子时,都要记得前面译过什么,保证人称、时态、指代不乱。模型的解码也是这样:每写一个新字,都要回看已经写下的全部内容,维持前后一致。
同传类比还解释了一件事:为什么长回答的后半段偶尔会跑题。译员连续工作会疲劳,模型则是上下文越写越长,靠前的早期信息权重被稀释,写到后面容易丢掉开头立下的规矩。让它在开头把要求说死,比任由它自由发挥更稳。
同传类比对不上的地方
这个类比有两处偏差。其一,同传译员有休息间隙,解码阶段一旦启动就马不停蹄,直到写完最后一个字或触发停止条件,中途没有“喝口水”的空当。其二,译员能听懂语义,模型的每个字只是概率计算的结果,它并不真的“知道”自己在写什么,写得流畅不等于想得明白。
| 对照点 | 同传译员 | 解码阶段 |
|---|---|---|
| 工作方式 | 听一段译一段 | 每写一字都要回看全部已生成内容 |
| 连续性 | 有休息间隙 | 启动后直到写完或触发停止,中途不停 |
| 语义理解 | 真懂内容 | 每个字只是概率计算的结果 |
| 长内容表现 | 连续工作会疲劳 | 靠前信息权重被稀释,写到后面容易跑题 |
还有一处要分清:解码阶段管“写”,不管“读得准不准”。读输入是预填充阶段的事,输入理解有偏差,解码阶段只会把这个偏差流畅地延续下去。
怎么感知解码的快慢
普通用户感知解码速度,最直接的指标是答案往外蹦的流畅度,也就是每秒 token 数衡量的东西。Kimi 和通义千问在长回答场景下被不少用户提到输出跟手,这种“跟手”就是解码阶段跟上的表现;长回答扎堆的时段,还要看并发接待量扛不扛得住。顺带说一句,解码阶段的“掂量”只回看当前这一次对话的内容,不会记得你上周问过什么,跨会话的记忆靠的是另一套外部机制。分清楚这两层,才明白为什么同一个产品这次上下文连贯、下次开新会话就什么都不记得。
带走一个判断:解码阶段是答案成形的过程,逐字蹦是机制使然,不是卡顿。首字之前等多久看准备阶段,首字之后蹦多快看解码阶段,两个指标分开记,才不会被“时快时慢”的体感搞糊涂。准备阶段的那本账,预填充那篇讲得细。
速查表:解码=逐字生成;每写一字都要回看前文;类比同声传译;偏差在模型无疲劳也无真理解;快慢用每秒 token 数感知。
聊聊解码阶段的常见疑问
- 解码阶段能不能并行写字?不能,它严格一个个推进,每写一字都要把前文重新纳入计算。
- 为什么长回答后半段容易跑题?上下文越写越长,靠前的信息权重被稀释,开头的要求容易被淡忘。
- 流式输出是解码本身变快了吗?不是,流式只是把已经算出的字实时送出来,生成节奏并没有变。


