大模型推理是什么?

大模型推理是什么?从 Prompt 到输出的完整流程
你有没有想过这个问题?
你在 ChatGPT 里敲下"什么是量子计算",几秒后就得到一段流畅答案。快得像是施了魔法。
但魔法背后到底发生了什么?
你的文字怎么就变成了答案?
这正是今天要聊的:大模型推理的完整流程。
先让机器"读懂"你的话
机器不认字。
这句话听起来像废话,但理解它很关键。大模型其实是个数学怪物——它只会算数字。
所以当你输入 Prompt 时,系统得先把你的文字翻译成数字。
怎么转?
用 Tokenization(分词)。
简单说,就是把一句话拆成小块。这个小块就叫 token。
英文里 token 通常是一个词根或标点。"Hello, world!" 可能拆成 ["Hello", ",", " world", "!"]——四个 token。
中文呢?按字切,或者按词切。"什么是量子计算" 大概切成 ["什么", "是", "量子", "计算"]——四个 token。
每个 token 再映射成一串数字。这就是所谓的"向量"。

机器就靠这些数字理解你的意思。
那它怎么"懂"的?靠的是海量数据训练出来的模式。见过几十亿句话之后,机器发现"量子"和"计算"经常一起出现,"什么是"后面通常跟个解释。
所以关键不是"认识"这些字,是知道这些数字之间的关系。
理解上下文,只做一次
好,现在你的问题变成了数字。
大模型要做的第一件事:理解你在问什么。
这个阶段叫 Prefill。
它会一次性处理整个输入 Prompt。不是看一个字算一个字,是一口气看完你发的所有内容。
想象一下。考试的时候,你是不是先扫一遍整道大题再动笔?
Prefill 就是这个道理。并行计算,秒懂语境。
同时,它会初始化一个叫 KV Cache 的东西。
简单说,就是把已经算过的中间结果存下来。后面要用,不用再算一遍。
就像你做笔记,划了重点,下次复习只看划线的部分。

这个阶段完成之后,模型就准备好了:知道你在问什么,也知道答案应该以什么开头。
逐字生成的奥秘
现在进入最神奇的部分。
模型开始输出了。但它不是一下子吐出整段话。
是一个字、一个字蹦出来的。
生成第一个字"量",然后把它加进输入,再预测下一个。生成"子",再加进去,再预测下一个是"计"。
这个过程叫自回归生成。
你可以把它想象成超级接龙高手。
"小明去超市买了苹果,接着他——"
你会猜"付款"、"回家"、"打开",对吧?模型也是这么猜的。只不过它要同时考虑整句话、整个 Prompt、上下文所有信息。
一直猜到遇到停止符,或者达到最大长度。
这就是为什么大模型输出是"流式"的——你能看到字一个一个跳出来。

问题来了:每次猜,模型怎么知道选哪个字?
它会给每个可能的字打个分。最高分的那个,就是下一个 token。
但怎么决定"最高分"是不是真的选它?这就涉及到下一篇文章的主题了。
先卖个关子。
为什么有快有慢?
你发现没有?不同模型响应速度差很多。
有的模型打字如飞,刷刷刷全出来了。有的模型憋半天,第一个字才出来。
这背后有两个关键指标。
TTFT:Time To First Token,首字延迟。你点发送,到看见第一个字,多久?
这主要看 Prefill 阶段有多快。模型越大、Prompt 越长,Prefill 就越慢。
TPOT:Time Per Output Token,每 token 生成时间。第一个字之后,每个新字出来的间隔。
这主要看硬件 GPU 的算力。
类比一下。点外卖。
骑手从商家取餐出发,到敲响你家门——这是 TTFT。路上骑多快,每公里花多久——这是 TPOT。
两个指标都很重要。

影响速度的因素很多。
模型参数量越大,理论上越"聪明",但算得越慢。
硬件配置也关键。我之前用 V100 跑推理,换成 H100 后明显快了不少。
还有一项技术叫量化——用更少的位数表示模型权重。原本 32 位的数,压缩成 8 位甚至 4 位。文件大了要压缩,模型也可以压缩。
让大模型跑得更快的秘密武器
推理是个重活。大模型每秒要算万亿次。
工程师们发明了好几个加速技巧。
KV Cache。刚才提过,把 Key 和 Value 缓存起来。
第一次计算结果存好,后面每次生成新 token 时,直接查缓存,不用从头再算。
就像查字典。第一次翻目录找到页码,记住了;下次直接翻到那页。
Flash Attention。注意力机制是 Transformer 的核心,但计算量很大。
Flash Attention 用更聪明的方式组织计算,减少内存访问次数。省时又省显存。
量化。前面说过了。INT8、INT4,就像图片压缩。文件小了很多,画质损失一点,凑合能用。
模型压缩后,占用内存小了,跑得更快了。

为什么推理模型更"慢"但更聪明?
最近有个趋势:推理模型火了。
OpenAI 的 o1、o3,还有国内的 DeepSeek-R1,都是这类。
它们有个特点:输出之前会先"想一会儿"。
不是真的在想,是先生成一段内部"思考链"。类似草稿纸上的演算。
等草稿写完了,再把最终答案抄到答卷上。
所以你看到的效果是:首字延迟变高了。模型要"想"更久才能开始输出。
但答案质量往往更好。尤其是数学题、编程题这类需要推理的任务。
这就是测试时计算扩展。
不是训练时喂更多数据,而是在推理时给模型更多"思考时间"。
用时间换质量。
我之前测试过让普通模型和推理模型解同一道算法题。普通模型秒出答案但漏洞百出,推理模型要等30秒,但第一次就做对了。

为什么你的问题决定了答案质量?
现在你知道了大模型怎么从 Prompt 变成答案。
但还有一件事没讲:每次生成下一个词的时候,模型到底是怎么决定选哪个的?
为什么有时候答案准确,有时候跑偏?
同样是猜下一个字,为什么有的时候大胆,有的时候保守?
这就是 Temperature、Top-k、Top-p 这些参数在起作用。
控制生成的"随机性",决定模型有多"创意"或多"保守"。
我们下篇见。
