学了半天 AI,才发现“推理”原来是两个词

学了半天 AI,才发现“推理”原来是两个词


今天继续学 AI,从训练数据、模型参数,一路聊到蒸馏和 DeepSeek-R1 的部署。

前面还在想,671B 参数到底得占多少显存,多个人同时使用,是不是每个人都得准备一份模型。慢慢才弄清楚,模型权重可以共用,但不同请求还需要各自的 KV cache。把模型放进去,只是开始,后面还有一整套让它跑起来、同时服务很多人的事情。

这些都属于 inference。

这个词我已经学过一阵子了。之前看 prefill、decode、KV cache、PagedAttention,还有 vLLM,来来回回碰到它。中文一般叫“推理”。

然后今天往下学,碰到了 reasoning model。

也是推理。推理模型,推理能力,思维链。

我突然觉得不对,回头把两个英文词放在一起看:

Inference。Reasoning。

怎么都叫推理?

我当时在学习记录里写了一句:

我擦,中文对这个事情的翻译也太懒惰了,完全不同的阶段放到一起说。而且我们平常经常听大家说推理推理,都不知道他们说的是哪个阶段。

这句话后半段,后来还得修正一下。但那个突然发现自己一直把两件事混着听的感觉,倒是真的。

搜了一下,满屏都是“推理”

发现这个区别以后,我去 B 站搜了一下“AI 推理是什么”。

在 B 站搜索“AI 推理是什么”,结果里同时出现推理引擎、模型运行流程等不同话题

搜索结果里,有讲 DeepInfer、vLLM 推理引擎的,有讲 Prefill、Decoder、KV cache 的,也有标题直接叫“推理的本质”。

如果已经知道 inference 和 reasoning 的区别,大概能看出这些视频各自在讲什么。但对还没分清的人来说,满屏都是“推理”,很容易以为它们讲的是同一件事。

当然,只看标题,不能说这些作者讲错了。后来专门把两个英文词放在一起搜,也确实能找到中文文章解释它们的区别。

只是,这个区别似乎没有得到多少提醒。我平常听大家说推理算力、推理模型、推理能力,自己也跟着听了很久,直到今天用英文学习,才突然发现它们背后竟然是两个词。

更麻烦的是,得先知道有 inference 和 reasoning,才会想到去搜它们有什么区别。如果原本就不知道,搜来搜去,可能还是那两个字:推理。

之前学的“推理”,是在说模型怎么跑

我最早接触 inference,是把它和 training 放在一起理解的。

训练时,通过数据、loss、梯度和参数更新,让模型逐渐学到一些东西。等到使用时,输入进入已经训练好的模型,经过计算,得到输出。

后面这个使用模型的过程,就是机器学习语境里的 inference。[1]

比如让模型判断一张图片里有没有猫,这是 inference。让语言模型接着一句话往下写,也是 inference。

这里没有要求它一定得解一道难题,更没有要求它先像人一样琢磨半天。它用已经学到的参数处理新输入,就已经是在做 inference 了。

所以,我之前学的那些词,现在可以放回原来的位置:

推理引擎,关心怎么把模型运行起来。推理延迟,关心多久能得到结果。KV cache 和 PagedAttention,则和运行过程中怎么保存、管理中间状态有关。

这些问题很具体:显存够不够,能同时接多少请求,生成得快不快。

模型能跑得很快,和它能不能把一道复杂问题想明白,是两件需要分别看的事。

以前都叫“推理”,我很容易顺着中文把它们接成一件事。

今天学的“推理”,是在说问题怎么解

Reasoning 更接近日常中文里,我对“推理”的直觉。

给出一些条件,分析它们之间的关系,拆开问题,经过中间步骤,最后得到答案。

今天学 reasoning model 的时候,我能先说出来的理解还很粗糙:chain of thought 很重要,中间的推导会影响最后的答案。

这至少让我开始理解,为什么有些问题需要模型多算一会儿。

以语言模型生成中间步骤为例,前面生成的内容会进入后面的上下文。它可以先拆问题,再沿着拆出来的部分继续处理,也可能检查前面的结果,发现不对,再换一个方向。DeepSeek-R1 的公开材料里,就讨论了这类多步求解和检查行为。[2]

这当然不等于写得越长越正确。中间步骤也可能出错,后面还顺着错误继续走。我们看到的一段解释,也不能直接当作模型内部计算的完整记录。

但我至少能把“多想一会儿”放回一个具体的计算过程中理解了:模型在这一次回答里,花了更多计算来尝试解决问题。

这不要求它一边回答,一边修改自己的参数。

参数可以不变,这一次运行却可以做更多事。之前我脑海里,“训练让模型变强”和“回答时多花点时间”还有些搅在一起,到这里又分开了一点。

不过,也不能把它们画成前后两站

再看我刚才那句吐槽,“完全不同的阶段”,说得并不准确。

我一发现两个英文词不同,就很容易再画出一个流程:

先 inference,再 reasoning,最后回答。

这样又分错了。

Reasoning 可以发生在 inference 过程中。

Reasoning 可以发生在 Inference 过程中:运行模型的过程中,也可以逐步求解

示意图:这里画的是概念之间的关系,不是模型内部的真实结构。

一个已经训练好的模型开始处理问题,生成中间步骤,检查,再给出答案,整个运行过程仍然属于 inference。我们讨论 reasoning,是在关注它如何求解、能不能把问题处理好。

一个说的是模型的运行过程,一个说的是求解过程和能力。它们看的是不同的事情,却可以发生在同一次回答里。

我现在先用下面这个小表提醒自己:

听到的说法 在常见 AI 语境里,主要指什么
推理引擎、推理部署、推理延迟 Inference:模型怎么运行
推理能力、推理模型、思维链 Reasoning:问题怎么求解

这样看,“让模型推理得更快”和“让模型推理得更好”,终于不再是一句模模糊糊的话了。

前者可能在说运行效率,后者可能在说求解能力。具体还得看上下文,光听“推理”两个字,确实不够。

这回,英文帮了我一下

我学 AI 的时候,一直尽量用英文讨论,也用英文记学习笔记。博客还是先写中文,重要的技术词保留英文。

英文当然也费劲。有时候一个概念本来就抽象,还得先过语言这一关。

但今天这个发现,恰好是因为我一直看着两个不同的英文词。

如果只看中文,从推理算力读到推理能力,再读到推理模型,我很可能就顺着读过去了。都是推理嘛,好像也没什么可问的。

换成 inference 和 reasoning,反而让我停了一下:前面那个我不是已经学过了吗,怎么这里又来了一个?

我也不能凭这一次就判断,这个翻译到底应该怎么改。英语里的这两个词,在其他语境下也有交叉。只是到了我现在学的机器学习和大模型语境里,把英文保留下来,确实能少绕一点路。

之前我为了学 AI,画了知识地图,也试着想象过一只“参数海胆”。那些办法,是为了把分散的东西接起来。

今天倒过来了:两个原本被我接在一起的东西,需要先拆开。

Reasoning model 到底怎么训练,哪些中间计算真正帮助了解题,我还没学明白。这部分先留着。

下次再听见别人说“推理”,我大概要先在心里补一句:

这里说的是 inference,还是 reasoning?


参考资料:

[1] NVIDIA:Inference、Training 等术语定义

[2] DeepSeek-R1 官方项目说明