设计机器学习应用系统设计机器学习应用系统
首页
讨论区
首页
讨论区
  • 目录
  • 前言

    • 关于作者
    • 关于本文档
  • 机器学习数学基础

    • 线性代数

      • 向量基础
      • 矩阵基础
    • 微积分

      • 极限、导数与微分
      • 多元函数与复合函数求导
    • 统计与概率

      • 概率基础
      • 统计推断
  • 经典统计学习方法

    • 线性模型

      • 线性回归
      • 逻辑回归
      • 正则化与广义线性模型
    • 贝叶斯方法

      • 朴素贝叶斯
      • 贝叶斯网络
      • EM 算法
    • 支持向量机

      • 支持向量机
      • 核技巧
    • 决策树与集成

      • 决策树
      • 随机森林
      • 提升方法
    • 无监督学习

      • 聚类
      • 降维
  • 神经网络与深度学习

    • 神经网络结构

      • 神经网络基础原理
      • 线性感知机
      • 多层感知机
      • 前向传播
      • 反向传播
      • 激活函数与损失函数
    • 优化神经网络

      • 梯度下降
      • 自适应优化器
    • 深层网络稳定性

      • 权重初始化
      • Dropout 正则化
      • 批归一化
    • 卷积神经网络

      • CNN 基础原理
      • AlexNet 与 CNN 复兴
      • VGG 与 GoogLeNet
      • ResNet 残差网络
      • 工程实训:AlexNet 图像分类实验
    • 生成式模型

      • 变分自编码器
      • 生成式对抗网络
      • 工程实训:DCGAN 图像生成实验
    • 序列模型

      • 词嵌入与表示学习
      • RNN 基础原理
      • LSTM 与 GRU 门控机制
      • Seq2Seq 序列映射
      • 工程实训:LSTM 古诗词生成实验
  • 语言模型的奇点

    • Transformer 架构

      • Transformer 基础原理
      • Transformer 演进与变体
      • 语言模型与分词
      • 工程实训:Transformer 模型训练实验
    • 预训练与微调

      • 预训练数据工程
      • 缩放定律
      • 分布式训练基础设施
      • 监督微调
      • 工程实训:SFT 模型对话实验
    • 对齐训练

      • 人类反馈强化学习
      • 对齐方法的演进
      • 工程实训:DPO 对齐训练实验
    • 推理能力

      • 思维链与推理模型
      • 推理缩放定律
      • 推理效率优化
      • 工程实训:LLM 推理效率优化实验
    • 模态融合与安全

      • 多模态大模型
      • 模型评估与安全
      • 工程实训:视觉语言模型训练实验
  • AI 基础设施与工程化

    • 模型服务化

      • 推理服务架构
      • 请求调度与批处理
      • GPU 资源管理
      • 工程实训:部署 LLM 推理服务
    • 工程化实践

      • 数据版本管理
      • 实验追踪与模型管理
      • 自动化调参
      • 模型性能监控
      • 漂移检测
  • Agentic 应用系统

    • 向量检索与增强生成

      • 嵌入与向量检索
      • 检索质量评估与优化
      • 检索增强生成
      • 工程实训:构建知识库问答系统
    • 构建 Agent 应用

      • 从 LLM 到 Agent
      • 工具调用
      • 规划与推理
      • 记忆系统
      • 协作与通讯
      • 编排与容错
      • 工程实训:技术调研 Agent 协作系统
  • 附录

    • 构建沙箱环境
    • Numpy 数学实践

      • 数据处理实践
      • 微积分计算实践
      • 概率统计实践

推理时缩放定律

预训练缩放定律揭示了更大的模型、更多的数据能够使模型具备更强的能力。2024 年 8 月,加州大学伯克利分校的查理·斯内尔(Charlie Snell)在论文《Scaling LLM Test-Time Compute Optimally can be More Effective than Scaling Model Parameters》中发现,在推理阶段投入更多计算,无论是生成更多候选答案、搜索更多推理路径,还是进行更深入的验证,同样可以系统地提升模型性能。一个参数量较小但推理计算充足的模型,在某些任务上可以超越参数量大 14 倍但推理计算不足的大模型。这项研究将推理阶段的计算投入与模型性能之间的定量关系呈现了出来,被称为推理时算力缩放(Test-Time Compute Scaling)。

早在 2022 年,谷歌研究院的论文《Self-Consistency Improves Chain of Thought Reasoning in Language Models》中就发现,对同一个问题生成多个推理路径并取多数投票,可以显著提升准确率,这是推理计算多采样策略的雏形。2023 年,普林斯顿大学的姚顺雨(Shunyu Yao)在论文《Tree of Thoughts: Deliberate Problem Solving with Large Language Models》中将搜索算法引入推理过程,让模型像下棋一样在推理空间中探索,进一步拓展了推理计算的利用方式。

2024 年 9 月,OpenAI 发布了 o1 模型,这是第一个将推理算力扩展作为核心设计原则的商业模型。o1 根据问题难度自动调整思考时间,简单问题快速回答,复杂问题可能思考数十秒。三个月后发布的 o3 模型更进一步,在 ARC-AGI 基准上达到了 87.5% 的准确率,已十分接近人类水平。这些模型的成功宣告了 LLM 的能力提升从预训练为主转入训练推理并重的新阶段。

推理衰减模型

预训练缩放定律揭示了模型规模与能力的关系:参数量翻 10 倍,损失就降低一个固定倍数。但训练完成后,模型的能力不见得就完全固定了,推理阶段投入更多计算,也能提升模型性能。思维链就是推理阶段提升性能的最好例子,在复杂问题上,思维链显著提高了模型的准确率。斯内尔的研究量化了这种提升的数量关系,证明了推理步数与准确率之间存在正相关,且增长曲线符合边际收益递减规律。设推理步数为 nnn,基础准确率为 a0a_0a0​(就是模型直接回答,不做任何额外推理的准确率),最大可达准确率为 amax⁡a_{\max}amax​,推理效率系数为 kkk(反映每一步推理对准确率的贡献大小,kkk 越大意味着每步推理带来的提升越显著),则准确率随推理步数的变化可以建模为:

a(n)=a0+(amax⁡−a0)⋅(1−e−kn)a(n) = a_0 + (a_{\max} - a_0) \cdot (1 - e^{-kn})a(n)=a0​+(amax​−a0​)⋅(1−e−kn)

准确率增长曲线的核心是 1−e−kn1 - e^{-kn}1−e−kn,它表示剩余提升空间中被利用的比例随步数增加趋于饱和。指数衰减模型说明推理步数带来的准确率提升是先快后慢的,前几步推理最有效,后续步数的贡献逐渐递减。这与认知科学中的练习效应有相似之处,人类学习新技能时,初期进步最快,随着熟练度提升,继续练习带来的边际提升越来越小。对于语言模型,前几步推理帮助模型将隐性知识转化为显性推理,效果最显著;后续步骤更多是在确认和细化,提升愈发有限。

不同难度问题下推理缩放曲线

图:不同难度问题下推理缩放曲线

如上图所示,不同难度的问题,曲线参数也不同。简单问题的 a0a_0a0​ 较高、kkk 较大,只需少量推理就能达到饱和。困难问题的 a0a_0a0​ 较低、kkk 较小,需要更多推理步数才能获得可观的提升。这意味着推理预算应该根据问题难度动态调整,简单问题分配较少推理计算资源,困难问题分配较多推理计算资源。

推理缩放与预训练缩放

推理计算能提升准确率,但受边际递减约束,推理缩放与预训练缩放并非相互替代,而是互补关系。推理阶段增加计算和预训练中扩大规模各有适用场景。

预训练决定了能力的天花板。一个只有 1B 参数的模型,即使投入再多的推理计算资源,也很难在复杂推理任务上达到 100B 级别的表现,因为它的知识储备和推理潜能本身就有上限,就像一个只学过基础算术的人,无论给他多少时间慢慢想,也做不出微积分的题目。但在预训练设定的天花板之下,推理缩放的价值在于让模型充分发挥已有的潜力。一个强大的模型如果只做直接回答,就好比考试时只写最终答案不写过程,即使知识储备足够,也可能因为一步粗心或推理不够深入而答错。推理缩放相当于给了模型一张演算的草稿纸,让它有条件把全部能力展示出来。至于资源应该更多地投向预训练还是推理,答案取决于任务的成本结构。预训练是一次性的固定投入,训好之后长期受益。推理则是每次使用都要付出的边际成本。对于高频低价值的任务,譬如客服对话,把资源重点投在预训练上、推理阶段尽量节省更经济。对于低频高价值的任务,比如数学证明或代码审计,在推理阶段多花一些计算资源反而更划算。

斯内尔等人 2024 年的实验为这种互补性提供了定量证据。他们比较了不同参数量模型在不同推理计算量下的表现,发现将推理计算增加 4 倍,在某些任务上可以弥补模型参数量 14 倍的差距。这意味着,如果推理预算充足,一个较小的模型通过充分的推理计算,可以超越一个更大但推理计算不足的模型。当然,这种等价性是有边界的,当基础模型的能力差距过大时,推理计算无法弥补。

动态推理深度

下一个问题是推理计算可以提升性能,那么应该投入多少推理计算?答案肯定不是越多越好,合理的回答应该是根据问题难度动态调整。不同问题的难度差异巨大,"1+1=?" 这样的问题不需要深度推理,而"证明费马大定理"则需要大量思考。根据问题的复杂度,自适应地分配推理计算资源的机制被称为动态推理深度(Dynamic Inference Depth)。

图:动态推理深度

实现动态推理深度的挑战有三个:如何在推理前判断问题的难度(复杂度评估),如何根据复杂度分配推理计算(计算分配),以及何时停止推理输出答案(终止条件)。这三个问题相互关联,构成了动态推理的技术核心。

复杂度评估

评估问题难度是动态推理深度的第一步。只有准确判断了问题的复杂程度,才能做出合理的计算分配。目前有三类主要的评估方法:

  • 基于问题特征的启发式评估:通过问题长度、涉及领域、是否包含约束条件等表面特征来粗略判断难度。这是最传统、最基础的方法,容易实现但不够精确。一个简短的数学证明可能比一道冗长的计算题更困难,表面特征与真实难度之间的相关性并不强。它更适合作为粗粒度的初始筛选,在更精细的评估手段不可用时提供基本的难度分级。

  • 基于模型正确率的难度分类:斯内尔的研究中采用了一种模型视角的难度定义,让模型对同一问题生成多个候选答案,统计正确答案的比例作为难度指标。这种定义的优点是难度是相对于特定模型的,而非绝对的。同一个问题对 PaLM-2-S 可能是困难的,对 GPT-4 可能是简单的,这与我们讨论的推理缩放定律完全一致,不同模型的曲线参数不同,难度感知也应该因模型而异。

  • 基于模型内部信号的难度预测:2024年,斯坦福大学的罗欣·曼维(Rohin Manvi)在论文《Adaptive Inference-Time Compute: LLMs Can Predict if They Can Do Better, Even Mid-Generation》中发现,模型可以在生成过程中推测出重新生成是否会得到更好的答案。具体做法是在已生成的部分文本后追加一个预定义的自评估提示,然后生成一个 token,其概率值就代表了对当前回答质量的评估。这种方法不需要外部奖励模型,计算成本极低(只需一个额外 token 的生成),却能让模型自己判断能不能做得更好。曼维等人的实验表明,利用这种自评估信号进行自适应采样,平均只需 1.2 个样本就能捕获 16 样本 Best-of-N 中 74% 的性能提升。

计算分配策略

知道了问题的难度,下一步是根据难度分配推理计算资源。最简单的做法是固定预算分配。把问题按难度分成几个等级,每个等级分配固定数量的采样,简单 1 次,中等 4 次,困难 16 次。这种方式只需要几个 if-else 就能实现,但同一难度等级内的问题差异可能很大,固定的计算量要么在一些问题上多余、在另一些问题上不足,颗粒度明显不够。

更精细的策略是斯内尔提出的计算最优缩放,它根据问题的难度特征选择完全不同的推理方式。对于模型通过率较高的简单问题,初始答案通常已经接近正确,采用迭代修正(Sequential Revision)让模型审视并微调自己的回答最为高效。对于模型通过率较低的困难问题,初始答案大概率是错的,需要从多个方向并行探索,生成多个独立候选再用评分函数选出最优,树搜索或 Best-of-N 正是为此设计的。

还有一种更务实有效的做法是渐进式分配。先花少量计算生成一个初始答案作为试探,根据试探结果判断当前回答的质量是否足够好,不够再逐步追加计算。这种策略类似于考试时先浏览全卷判断各题难度再分配时间,它与后面要讨论的自适应计算中的动态停止策略恰好形成互补,渐进式分配决定何时追加,动态停止决定何时收手。

自适应计算

自适应计算(Adaptive Compute)是指模型在推理过程中根据问题难度灵活调整推理计算量,而非预先设定固定的推理步数,它是实现动态推理深度的技术框架。实现自适应计算有三种主要思路,各自从不同角度回答"何时停止推理"这个问题。

最直观的思路是置信度阈值。模型在每一步推理后评估自己对当前答案的把握,置信度够高就输出答案,不够就继续思考。阈值的设定本身就是一道权衡题。设得太高,准确率确实有保障,但推理时间会拉长;设得太低,速度快了,准确率却可能下滑。实践中,阈值通常会根据任务类型和性能要求动态调整,而非一成不变。

另一种思路是把决策提前到推理开始之前,这就是计算预算预测。模型在拿到问题后先预估所需计算量,然后一次性分配预算,就像项目经理在启动前做工作量评估。它的好处是避免了推理过程中反复判断是否继续,但难点也很明显,预测本身就可能不准,而这恰好是前面讨论的复杂度评估要解决的问题,基于模型正确率或内部信号的评估方法可以直接为预算预测提供输入。

最灵活的思路则是动态停止,它不依赖事先的预算分配,而是在推理过程中实时判断,不仅看当前答案的质量是否达标,还要评估继续推理的预期收益是否值得额外的计算开销。这需要一个专门的停止判断器来做这一判断,本质上是在每一刻都在做成本效益分析,看再多想一步能不能换来更好的结果。

三种自适应推理策略的对比

图:三种自适应推理策略在不同难度问题上的行为对比

从上图可以看到,三种策略在不同难度问题上的行为差异明显。对于简单问题,三种策略都能快速达到高置信度,差异不大。对于复杂问题,计算预算预测可能因为预算不足而无法达到阈值,而置信度阈值和动态停止策略会持续推理直到满足条件。动态停止策略在置信度已经足够高且继续推理的预期收益很小时提前终止,比置信度阈值策略更高效。

搜索策略

思维链让模型学会一步步思考,但其实这种拟人化的描述有一些误导成分,因为推理的路径通常都不是串行的,每步都可能有多种选择。面对先算 A 还是先算 B 这样的分叉,模型通常只能选一条路走到底,如果最后证明选错了,就只能靠回溯纠错能力去弥补。回溯纠错毕竟是被动策略。更主动的方法是同时探索多条路径,然后选择其中最优的。这就是为什么模型推理中会考虑搜索策略的原因。

Best-of-N 采样

Best-of-N 采样是最简单的搜索策略。一次生成 N 个候选答案,选择最好的一个。这个策略的学术基础可追溯至 2022 年谷歌的自一致性(Self-Consistency)研究。他们发现,对同一个问题生成多个推理路径,然后取多数投票的结果,比任何单条路径的准确率都高。Best-of-N 将这一思想一般化,不一定要多数投票,任何可靠的评分函数都可以用来选择最佳答案。

Best-of-N 的平均最优质量会随 N 的增大而提升,但增长符合边际收益递减的表现,速度会逐渐放缓。当 N=1 时,答案质量分布较宽,好坏的可能性都较大;当 N=100 时,分布集中在高质量区域,几乎不会选到差的答案,如下图所示。代价是 N 从 1 增加到 100,计算成本也增加了 100 倍,这在实际部署中是否划算取决于任务价值。

Best-of-N 采样的质量提升与分布变化

图:Best-of-N 采样的质量提升与分布变化

Best-of-N 有效的前提假设是存在可靠的评分函数。对于数学问题,可以验证答案是否正确;对于代码,可以运行测试用例。但对于开放性问题(如写作、创意生成),评分函数难以定义,Best-of-N 的效果将大打折扣。此外,Best-of-N 是并行探索策略,N 个候选答案之间没有任何交互,每个答案独立生成。当推理步骤之间存在强依赖关系时,这种独立探索效率就十分受限。

树搜索

Best-of-N 无法处理复杂推理任务中步骤间存在依赖关系(如前一步的选择影响后续步骤的展开)的场景。以数学证明为例,选择用因式分解还是求根公式作为第一步,会完全决定后续推理的走向。这时需要用树搜索策略,在推理空间中系统性地探索不同路径。常用的树搜索主要有束搜索(Beam Search)和蒙特卡洛树搜索(MCTS)两种。

  • 束搜索是一种宽度受限的广度优先搜索。每一步保留得分最高的 K 个候选(Beam Width = K),然后从这些候选继续扩展。它是一种贪心策略,每一步都只保留当前最优的 K 条路径,其余路径直接剪枝。束搜索的优势在于计算效率,每一步只扩展 K 条路径,计算量可控。但它的缺点同样明显,贪心剪枝可能错过全局最优。如果某条路径前几步得分不高但后续大幅改善,束搜索会在早期就将其剪掉。

  • 蒙特卡洛树搜索是一种更复杂的搜索策略,结合了探索与利用。它最初在围棋 AI AlphaGo 中大放异彩,2023 年姚顺雨在论文《Tree of Thoughts》中将其思想引入 LLM 推理,提出了树搜索 + 语言模型的推理框架。MCTS 利用置信上界(Upper Confidence Bound,UCB)平衡了"选历史得分高的节点"与"选访问次数少的节点"的两种策略,两项之和确保搜索不会陷入局部最优。UCB 公式为:

    UCB(i)=Vˉi+cln⁡NniUCB(i) = \bar{V}_i + c\sqrt{\frac{\ln N}{n_i}}UCB(i)=Vˉi​+cni​lnN​​

    其中 Vˉi\bar{V}_iVˉi​ 是节点 iii 的历史平均得分,nin_ini​ 是节点 iii 的访问次数,NNN 是父节点的访问次数,ccc 是控制探索力度的常数。公式前项 Vˉi\bar{V}_iVˉi​ 代表节点的历史平均价值,后项 ln⁡Nni\sqrt{\frac{\ln N}{n_i}}ni​lnN​​ 代表选访问次数少的节点的权重(因为访问少意味着不确定性大,仍有潜力)。MCTS 的执行流程是一个四个步骤循环:

    1. 选择(Selection):从根节点开始,根据 UCB 公式选择最有潜力的子节点。
    2. 扩展(Expansion):在选中的节点上生成新的推理步骤,创建子节点。
    3. 模拟(Simulation):从新节点开始,快速完成推理到终点,评估这条路径的质量。
    4. 回溯(Backpropagation):将模拟结果反向传播,更新路径上所有节点的价值估计。

    图:MCTS 的执行流程

    蒙特卡洛树搜索与束搜索的根本区别在于其探索机制。束搜索是纯贪心的,只看当前得分,不管未探索区域可能藏着什么。MCTS 通过 UCB 公式主动探索看起来不那么有希望但尚未充分评估的路径,避免陷入局部最优。这就像一个经验丰富的棋手,知道最有可能的走法是什么,但也会花一些时间尝试不太常见的变招,因为偶尔会有意外收获。

验证与自我纠错

搜索策略让模型探索多条推理路径,最终还需要从中选择最优的一条。Best-of-N 用评分函数来选择最佳答案,MCTS 用模拟结果来评估路径质量。这些判断推理是否正确的机制,统称为验证。验证不仅发生在搜索过程中,也发生在推理完成之后,模型需要审视自己的推理过程,发现并纠正错误。

2022 年,谷歌研究院在论文《Self-Consistency Improves Chain of Thought Reasoning in Language Models》中提出了一个简洁而有效的验证方法:对同一个问题生成多个推理路径,取多数投票的结果作为最终答案。自一致性(Self-Consistency)的前提假设是正确的推理路径更容易达成共识。如果 10 条推理路径中有 7 条得出相同答案,这个答案大概率是正确的,因为不同的推理路径独立地到达了同一个结论。反之,如果 10 条路径给出 10 个不同答案,说明模型对这个问题没有稳定的推理能力,任何答案都不可靠。

自一致性本质上是一种特殊的 Best-of-N 采样,评分函数不是外部奖励模型,而是答案一致性。它的优势在于不需要额外的评分模型,完全依赖模型自身的推理能力。缺点是计算成本较高,需要生成多个完整推理路径,且只适用于答案可以精确匹配的任务(如数学题),对开放式生成任务(如创作)效果受限。

当模型对某个概念的理解本身就有偏差,所有推理路径可能都得出同一个错误答案,多数投票无法解决问题时,就需要外部验证器来提供独立的判断。在上一章里,我们已经接触过两种外部验证器。结果奖励模型(ORM)只看最终答案是否正确,给出二值奖励(0 或 1)。过程奖励模型(PRM)对推理的每一步评分,给出连续的奖励值。推理阶段,这两种验证器有着不同的应用场景:

  • ORM 通常用于 Best-of-N 选择:生成 N 个候选答案,用 ORM 评分每个答案的正确性,选择得分最高的。这种方式简单直接,但只能区分答案对错,无法判断推理过程的质量。推理过程全错但碰巧蒙对答案的解答一样能得满分。

  • PRM 通常用于更精细的搜索指导:在 MCTS 的模拟和回溯阶段,PRM 对每一步推理评分,提供比 ORM 更精确的价值估计。一条推理路径的 PRM 总分是所有步骤分数的乘积,任何一步出错都会拉低总分,即使最终答案碰巧正确。这使得搜索过程更倾向于选择推理过程扎实的路径,而非运气好的路径。

外部验证器的局限在依赖额外的模型或标注数据,而推理模型在强化学习训练中涌现出的自我验证能力,则不需要任何外部辅助。模型自己检查推理过程,发现矛盾并主动修正。自我验证可以理解为一种内部评分函数。模型在推理过程中扮演同时解题者和检查者两个角色,既负责生成推理步骤,又要审视已生成的步骤是否合理。当检查者发现问题时,解题者回溯到出错的位置,尝试不同的推理方向。这种"解题 - 检查 - 修正"的循环,与人类在草稿纸上解题的过程高度相似。

但自我验证并不能取代外部验证器。模型可能验证了一个实际上错误的推理,检查者和解题者共享同一套有缺陷的知识,导致错上加错。这就是为什么外部验证器(如 PRM)在关键场景中仍然不可或缺,它提供了一双独立的眼睛,不受模型自身偏见的影响。

三大缩放定律的统一视角

行文至此,我们已经完整地讨论了预训练缩放、后训练缩放和推理时缩放三种提升 LLM 能力的途径。它们并称 LLM 的三大缩放定律,共同构成了 LLM 能力提升的完整框架,各自在不同阶段发挥作用。三种缩放定律的关系可以用一个公式概括:

模型最终能力=f(N,D⏟预训练,DSFT,DRLHF⏟后训练,CTEST⏟推理)\text{模型最终能力} = f(\underbrace{N, D}_{\text{预训练}}, \underbrace{D_{\text{SFT}}, D_{\text{RLHF}}}_{\text{后训练}}, \underbrace{C_{\text{TEST}}}_{\text{推理}})模型最终能力=f(预训练N,D​​,后训练DSFT​,DRLHF​​​,推理CTEST​​​)

模型的最终能力由三个阶段的投入共同决定,任何一个阶段的短板都会限制最终表现,上面公式就包含了影响模型性能的所有因素:

  • NNN 是模型参数量,DDD 是预训练数据量,两者共同决定模型的基础能力,即模型能知道多少、能理解多深。
  • DSFTD_{\text{SFT}}DSFT​ 是 SFT 数据量和质量,DRLHFD_{\text{RLHF}}DRLHF​ 是 RLHF 偏好数据量和质量,两者决定模型将基础能力转化为人类可用的对齐程度,即模型能否遵循指令、是否符合人类偏好。
  • CTESTC_{\text{TEST}}CTEST​ 是推理阶段的计算投入(采样数量、搜索深度、验证次数),决定模型在可用能力范围内能产出最优输出的概率,即模型能否充分发挥全部潜力。

图:三大缩放定律

三大缩放定律之间存在协同效应,一个阶段的投入能放大其他阶段的收益,也同时存在成本上的权衡。协同效应体现在一条清晰的因果链上:预训练能力越强,推理缩放的天花板就越高;后训练对齐做得越好,推理搜索就越有效率,模型更倾向于生成有用的推理路径而非偏离主题的胡思乱想;推理计算越充足,预训练和后训练的投入就越能被充分释放出价值。然而,协同并不意味着可以无限制地在任一阶段投入,三者在资源性质、适用场景和边际收益上存在真实的取舍,理解这些权衡才能做出合理的资源分配。

成本权衡的第一层是投入性质的差异。预训练是一次性的固定成本,训好之后长期受益。推理则是每次使用都要付出的可变边际成本。面对数百万用户的高频服务,把资源砸在预训练上摊薄每次调用的成本更划算。面对只在少数高价值场景中使用的模型,推理阶段多花一些计算反而明智。

第二层是能力覆盖面的取舍。预训练提升的是通用能力,如知识面、语言理解、常识推理等等,让模型在所有任务上都有不错的表现。推理计算提升的则是特定任务上的深度表现。如果需要的是一个面面俱到的通才,预训练是优先项。如果只需要在某个特定任务上做到极致,推理投入的杠杆效应更明显。

第三层也是最定量的一层,是边际收益的交叉点。斯内尔等人的实验给出了一个具体的参照:推理计算增加 4 倍,在某些任务上可以弥补参数量 14 倍的差距。当推理预算充足且任务边界明确时,"小模型 + 强推理"可能比"大模型 + 弱推理"更经济,这不是模糊的直觉,而是有实验数据背书的等式。

三大缩放定律也为 LLM 开发提供了清晰的指导。在模型开发阶段,首先根据预算确定预训练规模,遵循 Chinchilla 最优比例(参数和数据同步增长)。然后投入高质量对齐数据,将基础能力转化为可用能力。最后设计推理策略,在部署时根据任务特点动态调整推理计算。在应用部署阶段,对于高频低价值任务(如客服对话、简单问答),使用小模型 + 快速推理,控制成本,对于低频高价值任务(如数学证明、代码审计),使用大模型 + 深度推理,追求质量,对于中等频次的任务,根据任务特点在模型规模和推理深度之间寻找平衡点。

本章小结

推理时缩放定律的意义不在于"多算几遍就能做对"这个直觉,而在于它重新定义了模型能力的边界。在此之前,一个模型训练完成,它的能力就固定了,能做什么、不能做什么,在推理开始之前就已经注定。推理缩放打破了这层限制,让模型的能力不再是一个静态的数值,而是一个可以随计算投入动态提升的区间。这个区间的下限是模型直接回答的准确率,上限是预训练赋予它的知识储备所能支撑的最佳表现。推理计算的作用,就是让模型从下限向上限逼近。

这种从固定能力到弹性能力的转变,带来了两个实质性的改变。一是经济层面的,当推理计算可以替代部分参数规模时,我们不必一味追求更大的模型,而是可以根据任务特点在大模型弱推理和小模型强推理之间做选择。高频低价值的场景用小模型快速响应,低频高价值的场景用中等模型深度推理,这种分层策略比一刀切用最大模型更合理。二是技术层面的,动态推理深度让模型学会了量力而行,简单问题不浪费算力,复杂问题不轻易放弃,这比固定深度的推理更接近人类解决问题的真实方式。

但推理缩放也有它无法逾越的边界。它只能逼近预训练设定的上限,不能突破上限。一个没有学过微积分的模型,给它再多的推理时间也证不出微积分基本定理。推理计算买来的是发挥,不是超越。正因如此,三大缩放定律才构成一个完整的体系,预训练决定上限,后训练让能力可用,推理缩放让潜力兑现。三者缺一,模型的表现都会打折扣。理解了这一点,就不会把推理缩放当作万能药,也不会在预训练上偷懒而指望推理来补救,而是根据实际场景在三个阶段之间做出合理的资源分配。

练习题

  1. 推理缩放定律的公式 a(n)=a0+(amax⁡−a0)⋅(1−e−kn)a(n) = a_0 + (a_{\max} - a_0) \cdot (1 - e^{-kn})a(n)=a0​+(amax​−a0​)⋅(1−e−kn) 中,kkk 的物理含义是什么?如果两个模型的 kkk 值不同(k1=0.1k_1 = 0.1k1​=0.1,k2=0.3k_2 = 0.3k2​=0.3),哪个模型从额外推理步数中获益更大?为什么?

    参考答案

    kkk 是推理效率系数,反映每一步推理对准确率的贡献大小。kkk 越大,每步推理带来的提升越显著,准确率曲线越快趋于饱和。

    k2=0.3k_2 = 0.3k2​=0.3 的模型从额外推理步数中获益更大。代入公式计算:对于 k=0.1k = 0.1k=0.1,第 5 步推理的提升比例为 (1−e−0.1×5)−(1−e−0.1×4)≈0.39−0.33=0.06(1 - e^{-0.1 \times 5}) - (1 - e^{-0.1 \times 4}) \approx 0.39 - 0.33 = 0.06(1−e−0.1×5)−(1−e−0.1×4)≈0.39−0.33=0.06;对于 k=0.3k = 0.3k=0.3,第 5 步的提升比例为 (1−e−0.3×5)−(1−e−0.3×4)≈0.78−0.70=0.08(1 - e^{-0.3 \times 5}) - (1 - e^{-0.3 \times 4}) \approx 0.78 - 0.70 = 0.08(1−e−0.3×5)−(1−e−0.3×4)≈0.78−0.70=0.08。kkk 较大的模型每步推理更"有效率",但也会更快饱和,在前几步就能获得较大提升。

  2. 对比 Best-of-N 和 MCTS 在以下三种任务上的适用性,并解释原因:

    • 数学推理(有明确答案可验证)
    • 代码生成(有测试用例)
    • 开放式写作(无明确评分标准)
    参考答案

    数学推理:Best-of-N 和 MCTS 都适用。Best-of-N 可以通过答案验证来选择最优解;MCTS 可以在推理步骤级别搜索最优路径。对于简单题目,Best-of-N 更经济;对于需要多步推理的复杂题目,MCTS 更有效,因为步骤间存在强依赖。

    代码生成:Best-of-N 更适合。代码有测试用例作为天然评分函数,可以精确验证每个候选答案。MCTS 虽然也能用,但代码的推理步骤之间依赖性强且难以独立评估,MCTS 的步骤级搜索优势难以发挥。

    开放式写作:两者效果都有限。开放式写作缺乏可靠的评分函数 —— 没有"正确答案"可以验证,也没有测试用例可以运行。Best-of-N 的评分函数只能依赖人类偏好模型或 LLM-as-judge,可靠性存疑。MCTS 的问题更突出:推理步骤的"好坏"难以量化,搜索树的价值评估不可靠。对于这类任务,可能更适合用更长的思维链而非搜索策略。

  3. 分析以下场景中应该优先投入哪种缩放(预训练/后训练/推理),并解释理由:

    • 场景 A:一个面向学生的数学辅导助手,需要准确解答从小学到高中的数学题。
    • 场景 B:一个社交媒体聊天机器人,需要自然流畅地与用户对话。
    • 场景 C:一个代码安全审计工具,需要精确发现代码中的安全漏洞。
    参考答案

    场景 A:推理优先。数学题有明确的正确答案可以验证,推理计算的增加(多路径搜索、自我验证)可以有效提升准确率。一个中等规模的模型配合充足的推理计算,可能比一个大模型但推理计算不足更经济。此外,数学推理任务的推理策略(验算、多方法交叉验证)容易内化,推理强化学习的收益显著。

    场景 B:后训练优先。对话的"好坏"没有明确的评分标准,推理搜索难以提供有效指导。更重要的是,对话需要自然流畅、符合人类偏好,这正是 RLHF 对齐训练的强项。预训练和后训练确保模型能理解和生成自然的对话,推理阶段不需要也不应该投入太多计算 —— 用户期望快速响应而非长时间思考。

    场景 C:预训练 + 推理并重。代码安全审计需要深度的代码理解能力(依赖预训练中的代码知识),同时需要精确的推理来追踪数据流、识别漏洞模式(依赖推理计算)。后训练对齐也有价值 —— 确保模型输出结构化的审计报告而非随意评论。但由于漏洞检测的准确率至关重要(漏报的代价极高),推理阶段的多路径搜索和交叉验证尤为关键。

  4. 假设你有以下资源约束:预训练预算 100 万 GPU 小时、对齐数据 10 万条、推理预算每问题 10 秒 GPU 时间。设计一个 LLM 应用的资源配置方案,说明你会如何在这三个阶段分配资源,以及为什么。

    参考答案

    资源配置方案取决于应用场景,以下以"数学推理助手"为例:

    预训练阶段:遵循 Chinchilla 最优比例,用 100 万 GPU 小时训练一个中等规模模型(约 30B 参数,配 600B tokens 训练数据)。选择中等规模而非更大模型,是因为推理预算充足时,小模型配合强推理可以在特定任务上超越大模型。

    后训练阶段:将 10 万条数据中的 6 万条用于 SFT(数学推理过程的示范),4 万条用于 RLHF(推理质量的偏好对比)。SFT 数据侧重于多步推理格式和自我验证习惯的示范,RLHF 数据侧重于"推理过程扎实的答案优于推理有缺陷但答案正确的答案"这一偏好,引导模型重视过程质量。

    推理阶段:10 秒 GPU 时间的推理预算相当充裕。部署策略:先用置信度阈值快速处理简单问题(1-2 秒),将剩余时间留给复杂问题。对于复杂问题,使用 Best-of-4 采样 + PRM 评分选择最优答案,必要时触发多路径探索和交叉验证。

    核心权衡:预训练投入确保了能力基础,后训练投入确保了推理格式的规范性,推理投入确保了潜力的充分发挥。这个方案的特点是推理优先,相信中等模型配合充足推理计算和精细的策略设计,可以在特定任务上获得高性价比的表现。

文章字数:10,503
更新于 2026-08-10
Last Updated:
Contributors: icyfenix, Claude, Claude Opus 4.7
Prev
思维链与推理模型
Next
推理效率优化