技术上,如何复现 o1?

科技   2024-09-17 00:01   北京  

知乎:周舒畅
链接:https://zhuanlan.zhihu.com/p/720127190

基础模型

搞 o1 首先需要一个基模,这个基模必须是:

  1. 能进行“长”生成。注意这和“长 context”不是一回事。模型生成的结果,经常会有自激的噪声存在,或分布逐渐变得非常 sharp,从而导致模型生成内容的后半段质量下降。比如写小说时会“烂尾”,用大团圆草草收场。在多模生成模型上也很容易观察到这一现象,表现为生成的音频和视频在结尾处要么糊掉要么变成静音静止。
  2. 有较强的抗噪能力。目前看来,这一点刚需大模型,比如万亿的 step2 就是比千亿的 step1 好。小模型容易被 context 里的一点点错误带偏。考虑到 CoT 就是个 trial-and-error 的过程,要能从鱼龙混杂的 context 里筛出有用信息往下走,需要一个充分训练的大模型。

数据

数据上,如果起手式是模仿学习(SFT),需要至少是起动量的规划数据:

  • 比如一个看起来能分解成步骤的题,可以由人类演示如何拆成哪几步。
  • 或者由模型按类似 ReAct / Reflection / RePlan 的方式 CoT,然后人类给过程打分。一个可能的捷径是构造 CoT 的 DPO 数据。

这里说是起动量,是因为这些数据生产困难,后面还是要靠 Self-Play 来起量。(现在有了 O1,有 GPT 帐号的厂又可以用 O1 来生成这个“起动量”的数据了)。

接下来 RL 部分需要大量的 Reward Model 数据(评论区说可能 O1 只用 RL)。考虑到 CoT 数据非常长,很难一上来就全对,所以大概率是个 PRM,相当于人类标出 CoT (可能是树型)的第一个出错点。

这里能从自动定理证明器(ATP)如 LEAN/Coq 借鉴的一招是“tactics”。比如 O1 会有意识地做简化(simpl)操作,也会设变量(intros)。如果实锤 O1 会数学归纳法(induction),那就真的很可能有一个把 ATP 产生的证明,按自然语言翻译成 CoT 数据的造数据路径。

算法

算法上,需要一个有数据效率(Data Efficient)的算法。应该是某种 MCTS(因为 o1 解得好的都是 verifier 容易的题)。这个在去年以来的各种 Q*-clone 探索中都有覆盖。这里麻烦的应该是系统和算法的配合,因为大规模推理造数据看来少不了。

o1-mini 的存在值得玩味。据说 o1-mini 数学甚至更强,但是推理会更“无理”。顺序上,是先有 o1-mini 还是先有 o1-preview?如果先有 o1-mini,那么可以用 o1-mini 大量的 roll 数据;如果先有 o1-preview,那么可以从 o1-preview 造大量数据去喂饱 o1-mini。或者是两者交替成为共轭师徒。

还有个简单的可能是 o1 训得慢,而 o1-mini 模型小训得快,先过完了数据放出来。。。

FAQ

Q:目前 o1 似乎主要展示了在解题时的强大能力。那么在其他方面,比如在多模态理解生成一体中,有什么应用?

A:o1 非常深刻地改变了 LLM,所有目前的 LLM 应用,只要存在一个基于或不基于 LLM 的 verifier,或者有约束要满足,都会受到断代式的影响。比如以前多模生成里,指令跟随一直是困难的问题,具体例子有生成 3D 资产需要的高一致性的多视角图,之前只能靠后挑生成。o1 则打开了模型反复修改“sketch”,来达到约束生成的可能。可以想象 o1 自言自语,然后在画布上这里一笔那里一笔涂涂抹抹的场面。

Q:对 AI 搜索和角色扮演有什么影响呢?

A:AI 搜索中,复杂的二次搜索(如读一篇论文时还参考参考文献)等,都是需要均衡每个动作成本收益,以及顾及当前时间预算的行为。o1 展现了这个潜力,并且箭在弦上(“o1-preview doesn't use tools yet, but support for function calling, code interpreter, and browsing is planned”)。

对于角色扮演来说,o1 提供了一个框架,让不烂尾,不无聊的生成成为可能。这几天多个测试表明,o1 是诗歌之类“戴着镣铐跳舞”式创作的大师。那么 AI 角色扮演需要的“乐而不淫”、“文似看山不喜平”、“草蛇灰线”对于 o1 来说,无非是一条条约束而已。“两句三年得,一吟双泪流。” 以后流的是电费的心痛的泪。

深度学习与NLP
专注深度学习、NLP相关技术、资讯,追求纯粹的技术,享受学习、分享的快乐。
 最新文章