P1-5.2 模型执行(inference)在运行什么¶
Section ID:
P1-5.2Version:v2026.07.20
5.1 已经把 learning 和 training 区分开来。Training 是利用数据去调整模型内部值的过程,而 learning 是更宽的概念,表示作为结果,模型在某个任务上的表现提升了。
这一节继续问下一个问题:当训练结束后,我们在使用模型时,到底是什么在被执行?
在 AI 文档里,这个过程通常叫作 inference。在本地语言正文里,它常常会被翻成带有“推理”意味的词,但这一节会把英语 inference 一起保留,因为一个翻译词很容易同时让人联想到 reasoning、prediction,乃至统计学里的 statistical inference。这些术语冲突会在 5.3 再单独整理。
这一节会把 inference 先固定成:利用训练好的值,把新输入转成输出的执行阶段,并把它和整个服务处理流程区分开。learning、training、fitting 的基本边界已经在 5.1 建好,和其他“推理类”词的冲突会在 5.3 继续处理。
这一节里该怎样读它¶
Inference 如果只从翻译词出发,很容易被读成人的思考过程;但在 5.2 里,更适合把它读成下面这样:
inference = 把训练好的模型应用到新输入上,并生成输出的执行
在这一节里,它更接近“运行模型”“应用模型”或“执行输出生成”。与其给它加上“模型在思考”的意味,不如把它看成:把已经训练好的计算结构应用到新输入上,从而产生结果的阶段。
训练:把模型准备好。
inference:把准备好的模型运行起来。
后处理:把模型输出接到人真正使用的业务结果上。
这三句话最重要的作用,是把 模型算出结果的阶段 和 服务利用结果去处理事情的阶段 分开。这里必须先看见:模型执行 并不等于 完整业务处理。
日常语言里的推理类表达和 AI 文档里的 inference,确实都带有“根据输入得到输出”的味道。但它和人的意义理解、逻辑 reasoning、统计学里的 statistical inference 仍然应该区分。这部分差别会在 5.3 另行展开。
5.2 不是用数学方式解释 inference 的章节。矩阵乘法与激活函数会在 Part 5 展开,attention 计算和 decoding 算法会在 P1-11 到 P1-14 以及 Part 6 再回来。
5.2 也不是在讲完整 AI 服务架构。API 服务器、缓存、RAG、工具调用、权限检查和监控,会在 P1-14 与 Part 7 再处理。
这里先只保留一个更小的问题:
当训练好的模型收到一个新输入时,
它利用什么值,生成什么样的输出?
把 inference 读成模型执行的基准¶
- 把
inference理解成使用训练好模型的执行过程。 - 把
inference读成“运行模型”“应用模型”或“执行输出生成”。 - 区分
training与inference。 - 理解
inference通常不会去改变模型参数。 - 把传统机器学习里的
prediction与 LLM 里的响应生成放到同一个大结构里看。 - 区分模型输出和完整业务处理并不是同一回事。
三个基准¶
这里先不看复杂计算,而是先看清楚:现在模型实际在做什么。阅读正文时,先抓住下面三个基准。
| 基准 | 为什么重要 | 本节所需的理解水平 |
|---|---|---|
inference 是把训练好模型应用到新输入上的执行 | 这样能减少“推理”一词带来的过度意味。 | 把它理解成:塞入新输入并取回输出的阶段。 |
training 和 inference 是不同阶段 | 这样不会把学习时和使用时混在一起。 | training 会改内部值,而 inference 通常不会。 |
inference 结果不等于完整服务流程 | 这样能把模型输出和业务决策分开。 | 看到分数或文本之后,还可能接着规则和人工复核。 |
inference、prediction、response generation、后处理 一开始也很容易听起来差不多。先把位置简短分开就够了。
| 术语 | 极简含义 | 本节中的角色 |
|---|---|---|
| inference | 把训练好的模型应用到新输入上的执行 | 真正产出模型输出的中心步骤 |
| prediction | 模型产出的类别或分数等结果 | 传统机器学习里更偏结果侧的说法 |
| response generation | 一步步生成回复文本的输出形式 | LLM 侧的结果表达 |
| post-processing | 把模型输出变成人真正使用结果的外层步骤 | 路由、规则检查、格式调整等 |
这里保持的区分是:inference 是模型执行,prediction 是预测结果,response generation 是生成结果,后处理 是模型之外的处理。
inference 是在应用训练好的模型¶
Google 的 Machine Learning Glossary 会把传统机器学习里的 inference 解释成:把训练好的模型应用到没有标签(unlabeled)的新例子上,从而产生预测(predictions)的过程。对于 LLM,则会把它解释成:利用训练好的模型,根据输入提示词(prompt)生成响应(response)的过程。
这两种说法表面上看起来不同,但共用一个更大的结构:
训练好的模型 + 新输入 -> 输出
对一个客服消息分类器来说,可以这样看:
| 步骤 | 例子 |
|---|---|
| 训练好的模型 | 用过去消息和标签训练好的分类模型 |
| 新输入 | “查不到物流。” |
| inference 结果 | 配送 |
对一个 LLM 来说,也可以这样看:
| 步骤 | 例子 |
|---|---|
| 训练好的模型 | 经过预训练和后续调整的语言模型 |
| 新输入 | “请给这条客服消息写一个回复草稿。” |
| inference 结果 | 一段自然语言回复草稿 |
所以,inference 不是模型再次学习的过程,而是把已经训练好的模型应用到新输入上,并生成输出的过程。
training 和 inference 的目的不同¶
虽然两者都在“运行模型”,但它们的目的完全不同。
| 区分 | training | inference |
|---|---|---|
| 目的 | 调整模型内部值 | 使用已学习值去产生输出 |
| 输入 | 训练数据、标签或学习信号 | 新输入、提示词或观测数据 |
| 主要计算 | 损失计算与参数更新 | 输出计算、预测或生成 |
| 内部参数 | 会变化 | 通常不变化 |
| 结果 | 一个训练好的模型 | 预测值、分数、类别或回复 |
Google 词汇表在解释权重(weight)时,也会把 training 描述为寻找理想权重的过程,把 inference 描述为利用已学习权重去生成预测的过程。
这个区分重要,是因为初学者很容易感觉:AI 每回答一次,好像就又学了一点。但在多数已部署系统里,并不是这样。用户提问并得到回答时,通常发生的是 inference,而不是立刻更新模型参数。
当然,也有例外,例如在线学习(online learning)、持续学习(continual learning)、依据用户反馈重新训练的系统、或者混合检索和缓存的复杂系统。但最基础的区分仍然很有用:
使用阶段产生输出 = inference
收集数据后再调模型 = training 或 retraining
inference 的基本流程¶
不同模型的内部计算当然会不同,但在入门层面,整体流程可以先读成下面这样:
新输入
-> 把输入变成模型可读取的形式
-> 用已学习参数做计算
-> 产生候选输出、分数、概率或 token
-> 转成人可以使用的结果
继续用客服消息分类做例子:
| 步骤 | 说明 |
|---|---|
| 接收输入 | “查不到物流。” |
| 变换表示 | 把句子变成 token、向量或特征值 |
| 模型计算 | 利用已学习参数为各类消息计算分数 |
| 选择输出 | 选出最合适的标签 |
| 返回结果 | 配送 |
关键点是:模型并不会在当场“重新学习这条输入”。训练好的内部值已经在那里,inference 做的是利用这些值把输入推到输出。
在深度学习里,这个方向常常被叫作 forward pass。与之相对,backpropagation 属于训练时为了调参数而进行的计算,不是普通 inference 说明里的中心。
输出会随着任务定义而变化¶
Inference 结果到底是什么,取决于模型被定义成什么任务。正如 4.4 已经建立过的基准:输出定义决定建模任务,而 inference 就是把那个定义好的输出真正算出来。
Google 词汇表会把 prediction 解释成模型的输出:二元分类模型可能输出正/负类,多分类模型可能输出其中一类,回归模型可能输出一个数值。
| 任务 | 输入 | inference 结果 |
|---|---|---|
| 消息类型分类 | 消息文本 | 退款、配送、换货 等标签 |
| 配送延迟预测 | 订单信息 | 延迟风险分数或预计到达时间 |
| 异常检测 | 交易信息 | 异常分数 |
| 回复草稿生成 | 消息文本加政策 | 自然语言回复草稿 |
| 图像分类 | 图像 | 图像类别 |
所以,要理解 inference,先得知道:模型究竟被定义成要产出什么。
分类模型的 inference 给出标签。
回归模型的 inference 给出数值。
生成模型的 inference 产出文本、图像或音频。
分数和概率不一定就是最后决定¶
模型的 inference 并不总是直接结束在一个标签上。很多模型会先算出多个候选结果的分数或概率,然后才由服务层决定展示哪个、或者是否转给人工。
例如,一个客服消息分类器可能会给出下面这样的分数:
| 候选标签 | 模型分数 |
|---|---|
| 配送 | 0.72 |
| 退款 | 0.18 |
| 换货 | 0.07 |
| 其他 | 0.03 |
服务可以把这些分数都保留下来,也可以只返回最高分的 配送,或者在不确定时转给人工复核。
模型输出:配送 0.72,退款 0.18,换货 0.07,其他 0.03
服务决定:按配送路由
所以,模型输出和业务决定并不是同一回事。Inference 负责生成模型输出,而如何使用这个输出,是服务设计和业务规则决定的。
用户最终看到的结果,也不一定等同于模型原始输出。模型可能内部先生成分数或候选标签,而服务层再把它们变成按钮文案、提示语、路由结果等更适合人使用的形式。
LLM inference 是生成回复的执行¶
在 LLM 里,inference 看上去比分类器更复杂,因为它生成的是自然语言回复。但更大的结构并没有变:
prompt
-> tokenization
-> 用已学习参数计算下一个 token 候选
-> 重复选择 token
-> 生成 response
假设提示词是:
请为一条配送延迟咨询写一段礼貌的回复草稿。
LLM 会先把输入变成 token,再用已学习参数计算下一个 token 的可能性,随后按照生成方式不断选择 token,直到组成一段回复。
这里最重要的不是内部算法细节,而是:即使在 LLM 里,inference 仍然表示“把训练好的模型应用到新输入上,并产生输出”的执行。
像 temperature、top-p、max tokens 这样的值,不应和训练得到的模型参数混淆。它们是 inference 期间调节输出方式的生成设置值,正如 4.3 已经区分过的那样。
所以,LLM inference 更安全的理解方式是:它不是“模型在思考”,而是“利用训练好的模型、输入提示词和生成设置,一步步生成输出 token 的执行”。
inference 不一定等于整个请求流程¶
严格说来,一个真实服务请求往往还会包含模型计算之外的许多步骤:
接收请求
-> 验证输入
-> 预处理
-> 模型 inference
-> 后处理
-> 策略检查
-> 返回响应
但在这一节里,inference 只指其中那个“模型利用训练好的内部值去计算输出”的部分。
例如,在自动客服消息分类系统中:
| 阶段 | 说明 |
|---|---|
| model inference | 根据消息文本算出 配送 标签和分数 |
| service handling | 把消息路由给配送团队、发送通知、记录日志 |
Model inference 可以是服务处理中的一环,但它并不是整个服务流程本身。
再用一个小例子收束¶
继续沿用 5.1 的例子:
training data:
- “我想退款。” -> 退款
- “配送什么时候到?” -> 配送
- “商品寄来时是坏的。” -> 换货
训练结束后,模型内部已经有了一组把输入表征映射到输出的调整值。现在新消息来了:
new input:
“我昨天刚下单,但现在还查不到物流。”
Inference 做的,就是把这条新输入送进训练好的模型。
| 步骤 | 结果 |
|---|---|
| 表征转换 | 像配送、查询不到、状态异常这样的线索被转成可计算形式 |
| 模型计算 | 已学习参数算出各候选标签的分数 |
| 输出生成 | 返回 配送 标签及其分数 |
| 后处理 | 结果可再接到路由或人工复核流程 |
模型并不会因为这条新句子在当场再训练一次。在普通 inference 里,它只是使用现成的已学习值来产出结果。
检查清单¶
- 能把
inference解释成把训练好的模型应用到新输入上并生成输出的过程。 - 能说明
training和inference的差别。 - 能说明
inference期间模型参数通常不会被改动。 - 能把传统机器学习里的
prediction和 LLM 里的response generation放到同一个更大结构里理解。 - 能区分模型输出与业务系统的最终决定。
- 能说明不应直接把
inference与reasoning当成同一个词;这一点会在 5.3 再整理。 - 能说明:inference 是执行训练好的模型来生成新输入输出的过程,
训练会改变内部值,inference 会使用这些已改变的值。 - 能区分模型被训练的时点、模型以 inference 被执行的时点、模型输出被接进服务决策的时点。
出处与参考资料¶
- Google for Developers, Machine Learning Glossary, 确认日期:2026-06-22.
- scikit-learn developers, Glossary of Common Terms and API Elements, 确认日期:2026-06-22.