对 OpenAI o1 的逆向工程[译]
通过生产化测试时间计算揭示 AI 的未来。探索已经在语言模型训练中应用。
在 The Retort 第 33 集 中,我们讨论了 Reflection 70b 的风波,以及关于模型规格和透明度的更多动机。
OpenAI 发布了他们新的推理系统 o1,这是基于 Q* 早期成功的基础上构建的,最近还流传着关于 Strawberry 的传言。o1 提供了一种在处理复杂任务时与 AI 互动的新模式。o1 是一个通过大量强化学习 🍒 训练新模型来解决长推理链问题的系统,并以大规模部署。与传统的自回归语言模型不同,它为用户进行在线搜索。它在推理上投入更多,这也证实了新的扩展规律的存在——推理规模定律。
这一发布还不是一个成熟的产品。o1 是一个原型。o1 是一个模糊的名称(“o 代表 OpenAI”)。o1 没有像 ChatGPT 那样明确的产品市场契合度。o1 非常强大。o1 与众不同。o1 是 AI 未来的预览。AI 的技术进步仍在继续。它的能力过剩,但同时也降低了市场调整的风险。
OpenAI 发布了大量关于这些系统的信息1。他们发布了一篇关于训练方法的 博客文章,一篇关于 o1 预览模型的 博客文章,以及一篇关于 o1 mini 模型的 博客文章,并提供了一份关于安全性测试的系统卡片,以及关于使用该模型和未来推理模型的 文档。他们还向 AI 社区中的知名成员提供了预览测试,因此有许多关于其优缺点的 透明反馈。
这次发布的最重要信息是 OpenAI 告诉我们,他们尚未完全掌握如何使用这个模型。这是一个带有模糊名称的预览系统,旨在让用户帮助他们定义它。以下是 OpenAI 应用研究负责人 Boris Power 的描述:
这个发布更接近最初的 GPT-3 发布,而不是 ChatGPT 发布。这是一种新范式,一些人会发现它在 OpenAI 也无法预测的领域中非常有价值。
但它不是一个可以轻松为每个人解锁新价值的大众化产品。
我相信我们很快就会迎来另一个 ChatGPT 时刻!
从 Q* 到 Strawberry,再到 o1
我们早就预见了这次发布。去年 11 月,在 OpenAI 领导层的动荡中,第一次泄密 事件发生,称“在拥有大量计算资源的情况下,新模型能够解决某些数学问题。”自那时起,OpenAI 一直在探索如何使其稳定并打包成果。我认为,Q* 是最初的方法,通过某种推理树搜索引导出高价值的路径。研究人员首次从中获得训练线索,激动不已,这也促使了泄密事件的发生。他们看到了其可行性。
这是训练类似 Strawberry 模型过程的一部分——一个通过 Q* 训练的模型,能够在生成文本的同时进行推理。这样的模型是部署完整 o1 系统所必需的。谈及 o1,最好将其称为一个系统。所有操作可能通过一个高级语言模型来处理,但如何将这些计算汇总并循环利用,以生成连贯的用户输出,这个过程非常复杂。这比我们在语言模型领域以往见过的任何东西都更接近闭环控制。
扩展这个系统必定是一项巨大的工程。o1 仍然是一个预览版。如果以前的强化学习(RL)突破,如 AlphaGo 及其后续应用能作为参考,OpenAI 现在有很多方向可以推动 o1。o1 是核心推理引擎,可以被优化、探索,并为未来的大量产品提供基础。
这里强化学习的成功至关重要。虽然这些段落看似普通,容易被忽略,但深入解析其工作原理会让这一成就更加令人印象深刻。
我们的大规模强化学习算法通过高度数据高效的训练过程,教会模型如何利用其思维链进行高效推理。我们发现,随着更多的强化学习(训练时计算)和更多的推理时间(测试时计算)的投入,o1 的性能会持续提升。扩展这种方法的限制与大语言模型(LLM)预训练的限制有很大不同,我们仍在继续研究这些限制。
这一成果将成为 AI 历史上的里程碑。我之前曾公开表示,我们应该在推理上投入更多,现在推理成本是合理的。
发布的模型并不是在已发布的基准测试得分和图表中表现最好的模型——它们位于中间位置。首先,我们来看这张图表,显示了 o1 预览版与完整 o1 模型的位置关系。
这意味着在这些基准测试中,我们使用的模型介于 GPT4o 和 o1 改进版本之间。在其他基准测试中,o1 的表现差异很大,比如在 ARC-AGI 的 Claude 3.5 sonnet 和 aider 编码挑战 中表现相似。对于某些任务,它表现优异,而在其他任务中,它显得无所适从。OpenAI 提供了更多关于完整 o1 系统(而非预览版)的评估。
通过这些 AIME 得分,我们可以将其与早期的训练日志和推理性能图相匹配,显示出 o1 预览版是完整 o1 系统的一个大幅缩小版本。
这些问题归结为 OpenAI 常见的发布考虑,或者是以下几个因素的组合:
- 他们无法负担为用户提供“最强”的配置。
- 他们没有部署最终配置所需的基础设施。
- 最终配置在他们的标准下还不够安全。
以及其他类似的问题。不论这次发布是否因为战略原因而仓促推出,它仍是一个改变范式的 AI 模型。Jim Fan 总结 了下一代 AI 系统的计算支出如何发生变化。这是通向真正语言模型智能体的一个渐进步骤。
这种方法并不适合每一个查询。最终,ChatGPT 将整合 o1 并将查询路由到合适的模型。在这个系统中,简单的查询会消耗大量不必要的 token,比如下面的例子,它用了 225 个 token。一个普通模型应该能在 10 到 12 个 token 内解决,token 数量减少了十倍。
用强化学习训练 o1
OpenAI 的 o1 是首个实现大规模文本搜索部署的产品。这是一个重大突破,将改变 AI 产品的部署架构和预期。o1 是一个有价值的演示,它可以弥合现有语言模型与未来智能体产品之间的差距。
o1 确实是通过基于强化学习(RL)的“搜索”算法训练的,但尚不清楚它是如何提供给用户的——即在测试时是否使用了多个模型。在开发者 AMA 中,一位 OpenAI 代表提到,o1 是一个“模型”,而不是一个“系统”,但这可能并不完全。
语言模型能够处理极其复杂的上下文,现代的服务基础设施非常适合仅向前生成(不进行回溯),因为它能够将输出的先前步骤缓存到上下文中。当你查看 OpenAI 提供的示例时,它们常常是漫无目的地向着答案推进。在大规模服务中,回溯编辑缓存实际上会更加困难。
大多数强化学习的专业知识是在无法回溯操作的领域发展起来的,例如竞争性游戏,因此仅向前的领域更符合智能体 - 环境框架。在这个框架中,状态和动作交织在一起,动作是新生成的 token,并立即附加到长状态上下文中。处理这些复杂轨迹是 o1 的核心要点。
接下来,我们来制定这个强化学习问题的奖励机制。传统基于人类偏好的强化学习存在一个经典问题,即整个轨迹只能获得一个二元偏好的奖励。在这种情况下,模型难以理解过程中哪个步骤出了问题。最近的研究为解决这一问题,通过设计奖励模型对推理的每一步进行评分。
最好的逐步奖励模型(过程奖励模型)示例来自 OpenAI 的 《让我们逐步验证》 论文。下图显示,绿色步骤代表高奖励,红色步骤代表低奖励。
如果将其与基于结果的奖励机制或启发式方法结合起来,系统就能判断自己是否得到了正确答案(可能还会有一个长度惩罚,以避免系统生成无意义的答案以逃避负回报)。这样,系统可以在每一步推理中分配奖励,为最终答案提供贡献。在上面的例子中,第 9 步出现了第一个错误标注,因此可以从第 9 步重新生成推理步骤,之后 RL 智能体可以根据不同的奖励来区分多个类似的轨迹。
在强化学习过程中,轨迹只需要在生成后获得奖励标签。模型的行为最初可能与 GPT-4o 非常相似,但随着它被奖励解决更具挑战性的问题,它逐渐探索新的状态空间。与传统的 RLHF 相比,语言模型上的全状态 RL 更依赖于探索和发现新的推理步骤。如果没有这些,o1 在增加训练时间的情况下也无法持续提高性能。更多的 RL 训练会趋于平稳,甚至出现过拟合和崩溃,除非能在各种状态下进行足够的探索。
在更开放的模型中,没有类似的机制。Reflection 70b 风格的模型看起来和 GPT-4o 几乎一样,只是使用了特殊提示词,而没有进行探索。大多数 RL 专家都认为,探索是在线学习智能体最关键的部分。
拥有多样化奖励分布的多样化轨迹是强化学习领域的经典训练数据。多年来,实际的优化器实现被认为并不像种子数据和环境设置那样重要。对于 o1 衍生出的 RLHF 过程来说,关键在于奖励模型是环境的一部分。RLHF 与经典 RL 相比有很大的不同,因为有许多不同的控制变量,因此将语言模型的环境进行严格约束只是时间问题。在 o1 之后,还会有更多类似的模型出现。
这种状态空间的复杂性超越了以往任何现实世界中的 RL 成功案例。最近的成功案例大多以 AlphaGo 或游戏为基础,这些场景由高保真模拟器或规则集来控制行为。而在这里,模型需要处理长达 10 到 20 万个 token 的推理链(涉及某些高级的层次化强化学习技术,但尚未在任何显著应用中使用)。
在语言模型上,RL 部署最成功的例子是使用了像近端策略优化(Proximal Policy Optimization,PPO)这样的策略梯度算法。这些模型学习一个价值模型,该模型表示与过去状态对应的标量值。我很好奇这些价值模型是否能以某种有意义的方式解释最终的行为。每次系统与世界互动时,它都依赖这些价值模型来学习。这是让系统如期运行的关键细节之一。现在,多家公司和学术界将开始漫长的过程,尝试重现这一训练框架。
o1 在收到提示词时做了什么?
每次调用 o1 模型时,有多少强化学习(RL)训练过程会被触发?回答这个问题需要参考 OpenAI 的大量沟通信息、定价和最近的文献。这个模型在推理时的成本非常高,但这并不是因为它规模更大。首先用强化学习训练更大的模型是个大胆的想法。最多它的规模与 GPT-4o 相当。我怀疑它可能更小,因为它必须生成大量的 tokens。它在每个 token 上的工作量更大(例如自我评分)。
如果模型并没有大得多,那我们就需要解释模型的高推理成本。o1 预览版对每百万输入 token 收费 15 美元,每百万输出 token 收费 60 美元。这与 Claude 3 Opus 的价格相同(至少在 Opus 刚发布时,现在可能有所下降)。这种定价同样适用于未展示给用户的中间推理 token。如果模型不大,且生成的 token 不多,计算资源的消耗在哪里?我猜是某种形式的并行解码,我们可以将其大致称为 强化学习语言模型解码(以区别于通常的自回归模型)。
对于通过模糊总结展示给用户的每个推理步骤,o1 模型会生成多个候选步骤,随后在步骤结束时对这些候选项进行评分。对于用户来说,这个候选步骤的数量是固定的。在进行评估时,OpenAI 可以调整候选步骤的数量(他们也表示未来会向用户提供这种推理强度的控制功能)。
这种并行和分支生成的方式需要一个与普通聊天机器人显著不同的推理架构,这解释了为什么价格如此高昂以及“未来价格会下降”的预期。这些构成了之前提到的强化学习部分中的动作,并且由于环境的灵活性,生成的长度可以有很大的变化。
本质上,o1 是一个模型,但它同时是一个生成模型和过程奖励模型,使用了一种与以往不同的生成策略。这可能是一个带有特殊评分 token 的生成模型,或者是一个带有独立回归头的生成模型,可以在生成过程中交替使用。OpenAI 所说的“只有一个模型”实际上意味着更多的细节。
基于提示词的定价模式似乎更符合 o1 的行为模式和他们对模型的描述,但实际上,OpenAI 对其工作原理的限制还不够严格,无法按提示词定价。新的生成范式解释了为什么揭示它的细节成本如此之高——与现有模型相比,它的流式处理方式完全不同。当每一步都需要并行处理时,流式生成将无法正常工作。
在用户部署中,分支的数量——候选步骤——是固定的。内部他们可以调整这个数量(未来也会允许用户这样做),从而生成上面提到的测试时间扩展图。
并非所有内容都已确定,但作为一名研究基于模型的强化学习和在线规划的学者,我非常兴奋能深入研究这个新的解码过程。以下是我在分析这一新解码过程时考虑的一些问题。
需要考虑的问题以理解 o1 的结构
1. 强化学习训练的语言模型如何表现?
当你阅读这个模型的推理过程时,很明显它与我们最近使用的任何语言模型都不同。它会絮絮叨叨,提出问题,但最终仍能得出聪明的答案。看起来模型在某些时候采取了可变的动作,尤其是在重复出现的短语如“等等,这对吗”或类人表达“嗯”时,这些时刻标志着推理可能会改变方向的关键节点。
如果自回归模型能够产生这样的结果,那会显得很奇怪。我们已经观察到,自回归模型一旦偏离了预设的轨迹,就会坚持其错误。而 RL 智能体可以检测到偏离轨迹的情况,并进入“探索”模式,在这种模式下,它们需要采取更随机的动作来找到状态空间中的高价值区域。
2. 它是一个在线/测试时的搜索吗?
有两个证据支持 o1 是一个部署的语言模型搜索系统(带有多个组件)的假设。通过使用外部验证器,可以实现与生成过程奖励模型类似的效果。具体的实现方式取决于哪种方式的扩展性更强,但将这些模型视为独立组件,是理解需要实现的不同能力的一种有效方式。
-
我之前分享的测试时计算图。语言模型并不会通过自回归生成更多 token 来对数扩展其计算成本。至少从图表来看并非如此。OpenAI 在训练时可以通过增加搜索深度、广度或启发式计算(对搜索节点评分)来开启更多计算资源。
-
OpenAI 博客中展示的推理过程——实际上我们很少看到这些过程,除非泄露,因为 OpenAI 没有向用户公开——显示了一个在推理空间中进行搜索的系统。它在推理中后退并检查其价值。这虽然与在状态空间中的回溯不同,但仍然展现了一个完全不同的生成过程。我建议大家阅读一些详细的推理过程。
什么构成了测试时搜索还存在争议。这可能涉及一个生成模型(语言生成模型)和一个验证器(过程奖励模型)。尽管这种部署很复杂,但我相信 OpenAI 有能力实现。如果它只是自回归生成,通过在循环中引入奖励模型来提高性能,他们可以轻松打造一个更昂贵的产品。
此外,奖励模型还可以实现模型的闭环行为。如果没有评分启发式,语言模型将很难自我纠正——这也是为什么大多数当前模型无法从错误中恢复。通过在继续推理前对多个未来推理步骤进行评分,模型有机会修正其错误。这与许多其他深度强化学习的关键成功案例,如 AlphaGo 的方法,非常相似。
3. 推理时是否是单个模型?
即便我提出了多个假设,我仍无法说服自己 OpenAI 部署了一个模块化系统给数亿用户。o1 项目的负责人甚至表示,这是一个模型,并且他们希望未来能为用户提供更多控制选项。
未来我们希望能让用户更好地控制模型用于思考的时间。
支持“只有一个模型完成所有工作的”论点之一是定价模式——OpenAI 对反思类 token 收费,但这些 token 的数量不可能无限增加。如果有奖励模型和其他组件,定价就会变得复杂,因为每一步推理的长度不同,调用奖励模型的次数也会显著变化。
从研究角度来看,奖励模型逐步被融入生成式语言模型中。最近的研究表明,奖励模型在评分前会“思考”,或者非常强大的生成模型可以用于区分文本。这些实现细节表明,蒙特卡洛树搜索的所有任务都可以由一个最终的语言模型完成,这使得推理过程在推理时变得非常复杂。一个模型生成潜在的想法,自己对其进行评分,然后生成解决方案。至少在训练阶段,几乎可以肯定会使用更多的模型作为启发式方法来评估最优质的推理路径。
开源 o1、o1 的未来及 AI 的未来
创建该系统的开源副本比 ChatGPT 更具挑战性。模块化 AI 系统对组件之间的连接方式极为敏感。此外,全球都在关注这个问题。OpenAI 也意识到了这一点,因此并没有向用户展示推理路径,并且向试图破解模型的用户发送了停止侵权通知。获取正确的种子数据是构建该系统的关键步骤。
一年多以前,OpenAI 可能支付了高技能的注释员来创建复杂的正向推理路径,甚至为单个问题提供了多条路径。这些路径可以被评估,并转化为初始标注的轨迹。很可能也需要对比示例,所以即便我们拥有推理路径的副本,也不足以复制系统。
尽管在语言模型、搜索、强化学习、回溯、推理、过程标注等相关领域已有大量研究,但这些研究仍处于非常早期的阶段。它们是我们的起点,但离最终答案还有很长的路要走。
归根结底,这仍然是训练语言模型,并且主要是在微调现有模型。通常只需数千个样本就能观察到模型行为的显现。我认为 o1 类模型也是如此。这一千个样本会非常昂贵,但这个目标是可以实现的。
在线训练在开源社区中还远未达到可行状态。我们看到后训练阶段的计算资源相对于预训练阶段正在增加,这主要是因为需要生成和筛选更多的模型完成输出。如果按照 OpenAI 的图表来看,像 o1 这样的系统所生成的输出可能比现有语言模型贵 10 倍、100 倍甚至 1000 倍。
当你考虑到“通过强化学习进行学习”需要大量样本时,这些例子很容易达到数十万,就像我们现在为 PPO 提供的人类偏好和提示词一样。只有少数公司可以参与这种大规模的竞争。
在开源领域,我们需要将这个系统的每个部分分解为可行的问题。我们需要为“漫游式推理”制定状态空间公式。我们需要优秀的过程奖励模型来标注推理轨迹。我们需要能够生成多样化推理步骤的模型。我们需要足够的计算资源将这些整合在一起。我们还需要更加复杂的评估标准来进行优化。要构建完整的图景,许多小砖块都是必要的。
讽刺的是,像带有思维 token 的 Reflection 70B 模型可能是一个有效的起点。
将新的研究理念扩展为稳定且可部署的系统一直是 OpenAI 的强项。在开源领域实现这一点将是一场艰难的战斗。除此之外,这个模型还缺乏明确的产品愿景。如果没有清晰的指导方向,人们可能会很快对它失去兴趣,因为反馈过程相对较慢。最终,ChatGPT 将自动调用 o1 执行某些任务,从而使整个 ChatGPT 系统变得更强大。让 o1 独立存在可能行不通。我们拭目以待。
对于以语言模型发展速度为基础的技术来说,这种完全不同的行为模式令人震撼。基于训练计算门槛的账单如今显得更加过时了——例如 SB 1047 法案。看到我们正处于开放的时代门槛前令人感慨。语言的表示方式正在被极为强大的计算系统接管。随着人类监督减少,这些系统的表现将越来越陌生。语言领域的AlphaGo 第 37 手会是什么?只有时间能揭晓答案,但 AI 的发展一直在奖励那些相信不可能很快会变为可能的人。
o1 模型已经在 OpenAI 的代码库中提交了 PR,其新版本将针对数学之外的领域进行训练,工具使用也将成为未来的发展方向,许多无法预见的变化正在到来。我们应该开始思考,ChatGPT 模型更接近 Google 的“手气不错”按钮,而不是我们习惯的来回对话机器人,这意味着什么。
更多阅读内容请参阅 Noam Brown 在 Twitter 上的看法(他是推动语言模型多样推理方式的关键人物),以及 Ross Taylor 的观点(Meta 的前推理负责人,Interconnects 采访嘉宾)。
以下是我在使用 o1 进行推理时的一些
示例:列出不以字母 A 开头的国家(大约 1 分钟),测试 NYTimes 的连接游戏,用 Python 创建完整的训练脚本(几分钟),文字游戏(10 秒),以及更多。