跳到主内容
快讯直播
AI智模界
AI 词典

预填充与解码(Prefill / Decode):为什么 AI 答第一句最慢,后面却飞快

一句话定义:预填充(Prefill)是大模型一次性把整段提示词读完、并算出第一个字的阶段;解码(Decode)是之后一个字一个字往外蹦的阶段。

原理:批发和零售

大模型生成回答分两步走。

第一步 Prefill:你把提示词(prompt)丢进去,模型把这几百上千个 token 全部并行地过一遍网络。因为词与词之间没有先后依赖,GPU 可以一次性把它们一起算完,像批发——量大,但算力吃得满、单位成本低。这一步结束时,模型顺手存下一份 KV Cache(键值缓存,记录每个词的中间状态),并吐出第一个字。

第二步 Decode:从第二个字开始,每生成一个字都要依赖前面所有字,没法并行,只能一步一个字地串行推进。每走一步,都要把整个模型权重和不断变长的 KV Cache 从显存里搬一遍,可真正做的计算量很小——像零售,一次只卖一件,运费却照付。算力大量闲置,瓶颈卡在显存带宽上。

为什么体感是「首字慢、后面飞快」

你感受到的两段延迟,恰好对应这两个阶段:等第一个字,是在等 Prefill 把整段提示词嚼完(TTFT,首字延迟);第一个字出来之后,每个字的间隔(TPOT)基本恒定且很短,文字就像打字机一样刷刷地流出来。

输入越长,Prefill 越久,首字等得越心焦;输出越长,Decode 只是线性地多跑几步,每步速度不变。这也解释了:贴一大段长文进去提问,首字明显变慢;问一句短话,几乎秒回。

维度预填充 Prefill解码 Decode
处理对象整段输入提示词每次一个新 token
并行性全部 token 并行算完串行,一步一个
瓶颈算力(大矩阵乘法)显存带宽
对应体感首字延迟 TTFT每字间隔 TPOT
随长度变化输入越长越慢每字耗时基本不变

和相邻概念的区别

KV Cache 不是一个阶段,而是贯穿两阶段的产物:Prefill 建立它,Decode 复用它并不断加长。流式输出(streaming)也不是计算阶段,它只是把 Decode 产出的字实时推给前端——它不加快速度,只是让你更早看到东西。

实际意义

对从业者:想压首字延迟,就优化 Prefill(前缀缓存、提示词压缩、切块调度);想提吞吐,就把多个请求的 Decode 阶段凑成一批一起跑,用并发把闲置算力填满;再进一步,可以把两者拆到不同机器上分别部署。具体方案与参数以各家官方文档为准。

对普通人:别把一整篇文档塞进去只问一句话,首字会等很久。想要「有反应」,优先选支持流式输出的产品——它会先给你第一个字,再慢慢补完。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。