跳转至

P1-5.2 模型执行(inference)在运行什么

Section ID: P1-5.2 Version: v2026.07.20

5.1 已经把 learningtraining 区分开来。Training 是利用数据去调整模型内部值的过程,而 learning 是更宽的概念,表示作为结果,模型在某个任务上的表现提升了。

这一节继续问下一个问题:当训练结束后,我们在使用模型时,到底是什么在被执行?

在 AI 文档里,这个过程通常叫作 inference。在本地语言正文里,它常常会被翻成带有“推理”意味的词,但这一节会把英语 inference 一起保留,因为一个翻译词很容易同时让人联想到 reasoningprediction,乃至统计学里的 statistical inference。这些术语冲突会在 5.3 再单独整理。

这一节会把 inference 先固定成:利用训练好的值,把新输入转成输出的执行阶段,并把它和整个服务处理流程区分开。learningtrainingfitting 的基本边界已经在 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 读成“运行模型”“应用模型”或“执行输出生成”。
  • 区分 traininginference
  • 理解 inference 通常不会去改变模型参数。
  • 把传统机器学习里的 prediction 与 LLM 里的响应生成放到同一个大结构里看。
  • 区分模型输出和完整业务处理并不是同一回事。

三个基准

这里先不看复杂计算,而是先看清楚:现在模型实际在做什么。阅读正文时,先抓住下面三个基准。

基准 为什么重要 本节所需的理解水平
inference 是把训练好模型应用到新输入上的执行 这样能减少“推理”一词带来的过度意味。 把它理解成:塞入新输入并取回输出的阶段。
traininginference 是不同阶段 这样不会把学习时和使用时混在一起。 training 会改内部值,而 inference 通常不会。
inference 结果不等于完整服务流程 这样能把模型输出和业务决策分开。 看到分数或文本之后,还可能接着规则和人工复核。

inferencepredictionresponse 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 仍然表示“把训练好的模型应用到新输入上,并产生输出”的执行。

temperaturetop-pmax 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 解释成把训练好的模型应用到新输入上并生成输出的过程。
  • 能说明 traininginference 的差别。
  • 能说明 inference 期间模型参数通常不会被改动。
  • 能把传统机器学习里的 prediction 和 LLM 里的 response generation 放到同一个更大结构里理解。
  • 能区分模型输出与业务系统的最终决定。
  • 能说明不应直接把 inferencereasoning 当成同一个词;这一点会在 5.3 再整理。
  • 能说明:inference 是执行训练好的模型来生成新输入输出的过程,训练会改变内部值,inference 会使用这些已改变的值
  • 能区分模型被训练的时点、模型以 inference 被执行的时点、模型输出被接进服务决策的时点。

出处与参考资料