Day 5 · 训练 vs 推理
改数字,还是用数字:一个 AI 的两种人生
前四天我们讲了 AI 怎么说话(接龙)、怎么认字(token)、怎么有「语感」(坐标)、怎么开口(采样)。今天回答一个所有技术文章都默认你懂、但很少有人讲透的问题:「训练」和「推理」到底差在哪?为什么训练一次要烧那么多钱?
学完你能回答
AI 是怎么从「什么都不会」到「会接龙」的?
1 起点:这些你早就会了
先回忆一下前几天的设定:AI 的「脑子」是一大堆数字,学名叫参数 (K3 有 2.8 万亿个,报告摘要);它干活的方式是给每个候选 token 打分、接龙。今天的全部内容,就是回答「这堆数字从哪来、什么时候动、什么时候不动」。老规矩,先把你会的搬过来:
你已经会的 AI 世界里对应的东西
学生做题:做题 → 对答案 → 把错因记进错题本 训练 :猜下一个 token → 对照原文 → 调整 参数——题要做十几万亿道,参数攒一大批才合并调一次(百万次量级)
考场作答:不能翻书,不能改准考证,凭脑子上 推理 :参数全部锁死,一个都不许改,纯接龙
老师批改:错得离谱的题,扣分更狠 损失 :AI 给正确答案打的分越低,惩罚越重
考试时心里默算一遍得出答案 前向计算 :输入进来、分数出去,只走一遍
考完复盘:从错题倒推出哪个知识点没掌握 反向传播 :从损失倒推出每个参数该往哪调
毕业上岗:脑子定型,开始干活 训练完成,模型部署上线——你平时用的 AI 全在这个状态
今天的核心类比就一句话:训练 = 学生做题改错,推理 = 考场作答 。剩下的篇幅是把这句话拆细、算账。
2 训练:做题 → 对答案 → 调整,刷完十几万亿道题
一个刚初始化好的模型,参数全是随机数——它给任何候选 token 的打分都是瞎蒙,接龙接出来的是乱码。从「什么都不会」到「会接龙」,靠的是一个朴素到家的循环:
训练循环:做题、对答案、调整参数,做题十几万亿次
四步循环:盖住下一个 token 让模型猜,对照标准答案算损失,调整参数,换一段再来
训练循环(每一圈,参数都变好一点点)
① 做题:盖住下一个 token,让模型猜
文章里每个位置都是一道现成的填空题
② 对答案:看模型给正确 token 打了多少分
打分的尺子叫「损失」,第 5 节讲
③ 调整参数:给正确答案加分、给错误答案减分
「学习」真正发生的瞬间,就在这一步
④ 攒一大批题合并调一次参数,回到 ① —— 做题十几万亿次(示意)
图 1 · 训练 = 一个刷题循环: 妙处在于不需要老师出题 ——任何一段现成文字,盖住最后一个 token 就是一道带标准答案的填空题。整个互联网的文字,都是免费的习题册。
打个比方
训练就像一个学生抱着全世界最大的习题册刷题:做题、对答案、把教训刻进脑子,然后再来一道。没有任何人告诉他「什么是语法」「什么是事实」——他刷了十几万亿道题之后,语言的规律自己从参数里长了出来 。
严格来说:模型的「错题本」不是一本记录题目的册子——它什么都不记,只是把参数拧了一丁点。经验全部化在那 2.8 万亿个数字里,找不到任何一条「错题原文」。
记住这个词 · 调整
今天全文只说「调整 」,不说「微调」。「微调」是专有名词,特指「在已经训练好的模型上再做一小轮训练」,那是第 4 周(后训练)的内容。今天讲的「调整」,是训练循环里每一步 对参数的小改动——一词之差,指的是完全不同的两件事。
3 推理:考场作答,参数一个不动
训练结束,模型「毕业」了。从这一刻起,它的参数被锁死 ——你跟 Kimi 聊天、让它写周报、让它改代码,全程它只做一件事:用固定的参数,一遍遍打分接龙 。这个状态叫推理 (inference)。
训练与推理的对比
训练是前向加反向、循环调整参数;推理是仅前向、参数锁死、循环接龙
训练 = 学生做题(改数字)
推理 = 考场作答(数字锁死)
喂入海量文章
每段都藏着「标准答案」
猜下一个 token(前向)
给每个候选打分
对答案 → 调整数字(反向)
越自信的错误罚得越重
循环十几万亿次(示意),参数每圈都好一点
拿到你说的话
参数一个都不动
给候选 token 打分(仅前向)
走一遍「考试流程」
挑一个,接到末尾
再来一轮 → 继续接龙
循环到输出「结束」为止,参数始终不变
图 2 · 左「训练」右「推理」: 两边都在循环,但循环的东西完全不同。训练循环里参数在变 (前向算分 + 反向调整);推理循环里文本在变长 (接一个、再打分、再接一个),参数从头到尾一个不动。你每次跟 AI 聊天,走的都是右边这条路。
打个比方
考场上,你不能翻书,更不能改自己的脑子——你只能用已经定型的大脑把卷子答完。推理时的模型就是这样:不管你说什么、它答得好不好,这次对话不会改变它任何一个参数 。
严格来说:模型在对话里「记得你说过什么」,靠的是把你说过的话重新读一遍(上下文窗口,Day 6 讲),不是把知识写进了参数。对话一结束,它对你的「印象」也就没了。
一个常见误区的解药: 「AI 会从我的聊天里实时学习」——不,推理时它一个数字都不改。真要更新参数,得专门再跑一轮训练(那是第 4 周「后训练」的话题)。你和它聊得再多,它明天还是那个它。
4 为什么训练贵出几个数量级?算三笔账
「训练烧钱、推理便宜」是行业常识,但为什么?拆开看是三笔账叠在一起:
第一笔账:每个 token 干的活多一倍不止
推理时,一个 token 过一遍模型,算出分数,完事——这叫前向计算 。训练时多走一步:算完分数、对完答案,还要把「这次错了多少」的账倒推回去 ,算出 2.8 万亿个参数每一个 该往哪个方向调、调多少——这叫反向传播 。前向 + 反向加起来,训练在单个 token 上的算力大约是推理的 3 倍 (这是工程上的经验估算,记住「约三倍」这个量级即可)。
第二笔账:数据量根本不是一个世界
推理一次,模型要重读当前窗口里的全部内容——几十到几十万个 token,但和十几万亿的训练语料比仍是零头。训练一次,要「读完」一整个语料库:前沿大模型的预训练语料普遍在十万亿 token 量级 (作为参照,Meta 公开的 Llama 3 用了约 15 万亿 token;K3 报告没有公布自家语料的总量)。每个 token 都是一道题,所以「做题 → 对答案 → 算清该调多少」要重复十几万亿次 ;但真正动手调参没这么勤——每算完一大批题才把账合并起来调一次,全程只有百万次量级 。一边是当前窗口,一边是十几万亿道题——光数据量就差出七八个数量级。
第三笔账:调参数本身也很贵
反向传播不是免费的。要给 2.8 万亿个参数算账,就得先给它们各存一份「草稿」 (每个参数这次该调多少),还得存下负责「拧螺丝」的机器自身的零件。实际训练占用的显存,是「只装参数」的好几倍——这也是为什么训练要用成千上万张顶级 GPU 连成集群,而推理一个模型可以装进少得多的机器里。
三笔账合起来: 单 token 算力 ×3,数据量 ×无数个零,再乘上存草稿、拧螺丝的开销——「训练一次 = 天文数字,推理一次 = 几厘钱(量级感受)」就是这么来的。这也是为什么 AI 公司的商业模式是「砸钱训练一次,然后靠无数次便宜的推理把钱赚回来」。
进阶小注 · 工程上有条经验法则:参数量 N 的模型,推理每 token 约 2N 次浮点运算,训练(前向 + 反向)约 6N——知道「训练约是推理 3 倍」这个比例即可,公式不用记。反向传播给每个参数算出的「该往哪调、调多少」,学名叫梯度 ,第 5 节小注还会用到它。
5 损失的直觉:答得越自信,错得越狠,罚得越重
第 2 节说「对答案算损失」,这个「损失」到底是怎么算的?今天只要一句话的直觉:
记住这个词 · 交叉熵
训练常用的损失叫交叉熵 (cross-entropy)。它的全部直觉:只看 AI 给「正确答案」打了多少分 ——分给得越高,损失越小;分给得越低,损失越大。所以 AI 要是把宝押在了别处 (给正确答案只打了 1%),罚得就特别重;要是本来就犹犹豫豫,反而罚得轻。答得越自信、错得越狠、罚得越重。
这个设计非常符合直觉:教育最怕的不是「不会」,是「自信地错」。交叉熵就是一台专门重罚「自信地错」的机器——逼着模型在不确定的时候老实保留几个候选,而不是瞎蒙一个还理直气壮。训练十几万亿次之后,模型的「自信程度」就被校准得越来越靠谱——所谓校准,就是它嘴上说的把握和真实水平对得上。
严格来说:损失是 −log p(正确答案分),分越接近 0 惩罚涨得越快,永不为负——今天不用记公式,记住「重罚自信的错误」这句人话就够了。
进阶小注 · 写出来就是 L = −log p(正确 token):p 从 1 掉到 0.01,损失从 0 涨到约 4.6,越往低分走罚得越陡。训练的一步 = 前向算 L + 反向传播求梯度 + 优化器更新参数;推理的一步 = 仅前向 + 挑一个 token。
面试视角
面试官可能会问:「训练和推理的区别是什么?为什么训练贵那么多?」
八股答 「训练要更新参数,推理不更新;训练有反向传播,推理只有前向。」——两个名词都对,但停在这里,面试官追问「所以呢?」就卡住了。
本课答 「区别在于两个层面。机制上:训练每一步是前向算损失、再反向传播把责任分摊到每个参数并调整,推理只走前向、参数全程锁死——所以单 token 算力训练约是推理的 3 倍。规模上:推理一次要重读当前窗口里的全部内容(几十到几十万个 token),训练要把十万亿 token 量级的语料每个都当一道题做一遍——做题十几万亿次,参数则攒一大批题合并调一次(百万次量级)。两层相乘,总成本差出七八个数量级。也正因如此,模型公司的账本是『训练一次重资产投入,靠海量廉价推理摊薄』。」
6 映射到原文:训练从来就是头等大事
今天讲的是「常识层」的东西,但它在两篇原文里都有正式的位置。2017 年的 Attention 论文,专门用一整节(§5 Training)交代训练配置——训练数据、批次(batch,一次一起算多少题,再合并成一次调整)、优化器。一篇提出新架构的论文,愿意花一节讲「怎么练」,说明从 Transformer 诞生的第一天起,「训练」就是和「架构」平起平坐的大事 。
K3 报告里,今天的内容对应 §3 预训练的开篇。看 §3.3 这句:
K3 原文(§3.3 训练配方)
「在这一范式下,视觉与文本 token 在单一的下一 token 预测目标中交错出现,使共享主干从一开始就能学习统一的多模态表示。」
逐词翻译:
下一 token 预测目标 :就是我们今天讲的「盖住下一个 token 做填空题」。K3 训练时做的每一道题,和你 Day 1 学到的「接龙」是同一个动作——训练时练的题,就是推理时要干的活 。
视觉与文本 token 交错出现 :图片也拆成 token,和文字混在同一本「习题册」里一起练。
共享主干 :看图和看文用的是同一个大脑、同一套参数,不是两个模型拼起来。
顺带一提诚实原则:K3 报告 §3.1 只说预训练语料「涵盖四大主要文本领域——Web 文本、代码、数学与知识」并配大规模视觉语料,没有公布具体 token 总量 ——所以本课不写「K3 语料 XX 万亿」这类查不到出处的数字。
≈3×
训练单 token 算力 ÷ 推理 (前向+反向,经验估算)
十几万亿次
训练循环的做题次数 (动手调参为百万次量级·示意)
2.8T
K3 每步要「调整」的参数总量 (报告摘要)
4 大领域
K3 预训练语料覆盖 (§3.1:Web/代码/数学/知识)
7 自测题(先自己答,再点开看解析)
Q1 AI 是怎么从「什么都不会」进化到「会接龙」的?
靠一个刷题循环:从现成文章里盖住下一个 token 当填空题 → 让模型猜 → 对照标准答案算损失 → 调整参数 ,然后换一段再来——题要刷十几万亿道,参数则是攒一大批题才合并调一次(百万次量级)。初始时参数是随机数,接出来是乱码;十几万亿次「做题改错」之后,语言规律就刻进了参数里。关键是:题目不用人出,任何文字自带标准答案。
Q2 「训练」和「推理」(考场作答)最本质的区别是什么?
训练 = 改数字 :每步走「前向算损失 + 反向传播调参数」,参数一直在变。推理 = 用数字 :参数全程锁死,只走前向,一遍遍打分接龙。你每次和 Kimi 聊天都发生在推理状态——它不会因为你们的对话改变任何一个参数。
Q3 为什么训练比推理贵出几个数量级?说出至少两层原因。
两层:① 机制 ——训练多了反向传播,要给每个参数算「该调多少」,单 token 算力约为推理的 3 倍(经验估算);② 规模 ——推理一次重读的是当前窗口里的内容(几十到几十万个 token),训练要把十万亿 token 量级的语料每个都当题做一遍——做题十几万亿次,调参按批次合并、百万次量级。还有一层加分项:训练要为 2.8 万亿个参数存「草稿」(梯度)和优化器状态,显存开销是只装参数的好几倍。
Q4 判断:「我多跟 Kimi 聊天,它就会记住我、为我变得更好。」
错。 推理时参数一个都不动,对话不会改变模型本身。它在对话里「记得你说过什么」,靠的是把你的话放在上下文里反复重读(Day 6 讲窗口的代价),对话结束「印象」即消失。想让模型真正「学会」新东西,得专门再跑训练——那是第 4 周后训练的内容。
Q5 交叉熵损失「重罚自信的错误」是什么意思?为什么这样设计合理?
交叉熵只看模型给正确答案 打了多少分:分越低罚越重,而且罚得越往后越狠。如果模型自信地选错(给正确答案只打 1%),损失巨大;如果它本就犹豫(几个候选分差不多),罚得反而轻。这逼着模型不确定时老实保留多个候选,而不是瞎蒙一个——十几万亿次训练后,模型的「自信程度」就被校准得靠谱了。
明天 · Day 6上下文窗口:记忆的代价 AI 能「记住」你说过的每句话,是因为把你说的每个 token 都重新读了一遍——100 万 token 的记性,是有价格的。
进入 Day 6 →