两个人,三周做出开源模型新王Reflection 70B?靠谱吗?

文章正文
发布时间:2024-09-10 01:32

技术报告下周公布。

昨天,开源模型领域迎来一匹黑马 —— 一个名为 Reflection 70B 的模型横扫 MMLU、MATH、IFEval、GSM8K,在每项基准测试上都超过了 GPT-4o,还击败了 405B 的 Llama 3.1,成为开源模型新王。

模型发布后,社区反应强烈。官宣推文目前已经有了超过 270 万浏览量。

另外,该项目也是目前 HuggingFace 上最热门的项目:

Hugging Face:https://huggingface.co/mattshumer/Reflection-70B

试用网址:https://reflection-playground-production.up.railway.app/

出人意料的是,该模型仅由两位开发者在 3 周的时间内完成,一位是发帖的 HyperWrite CEO Matt Shumer,另一位是 AI 创业公司 Glaive AI 的创始人 Sahil Chaudhary。他们表示,Reflection 70B 的底层模型建立在 Meta 的 Llama 3.1 70B Instruct 上,并使用原始的 Llama Chat 格式,确保了与现有工具和 pipeline 的兼容性。

在通用能力之外,Reflection 70B 的亮点还包括「错误识别」和「错误纠正」。他们用到了一种名为「Reflection-Tuning(反思微调)」的技术,使得模型能够在最终确定回复之前,先检测自身推理的错误并纠正。关于该技术,有网友翻出了 2023 年的一篇同名论文:

论文链接:https://arxiv.org/pdf/2310.11716

这篇论文背后的团队还在今年 6 月发布了另一篇新论文。不过,我们目前还无法确定这些论文与 Reflection 70B 的相关性。

论文链接:https://arxiv.org/pdf/2402.10110

此外,Reflection 70B 的优秀表现还离不开高质量的数据。这些数据由 Glaive 提供。该公司去年获得了一轮 350 万美元的种子轮融资,曾以高质量、任务特定数据帮助一些小型模型取得过成功。

目前,不少网友已经开始测试 Reflection 70B,并反馈了一些积极结果。比如面对一个关于杯子和硬币的问题(先把硬币放入杯子,再把杯子放到床上,然后把杯子翻转过来,硬币会在哪里?),模型会反复反思自己的答案,并给出一个考虑到各种特殊情况的最终答案。

不过,也有人测试后表示模型能力被夸大了。

当要求模型思考 strawberry 中有多少个 r 时:

不过,Reflection 70B 的发布只是 Reflection 系列的开端,405B 版本也已经在训练了。

在经过了一天的发酵后,两位作者也首次露面,在一档访谈节目中披露了关于该模型的更多详细信息,并表示将在下周发布 Reflection 70B 的技术报告。

视频地址:https://www.youtube.com/live/5_m-kN64Exc

机器之心对视频中的信息进行了整理报道。

Reflection 70B 热潮和它的开发者

首先,Shumer 和 Chaudhary 分别做了自我介绍。

Shumer 表示自己在 12 岁时就在创业了,但遗憾的是他并未分享有关这段有趣经历的更多细节。几年前,他上大学时创立了 OthersideAI(HyperWrite 的前身),该公司目前依然很活跃。

Chaudhary 则说俺也一样,在 AI 创业上工作好几年了。在此之前,他曾在一家名为 Banana 的公司工作,该公司的业务包括构建服务器等。那时候他意识到人们难以托管自定义模型,因为要拥有特定于用例的高性能自定义模型,就需要高质量的数据。于是他决定创立 Glaive AI 。

Chaudhary 说该公司本质上是一家平台公司,可让用户使用他们的合成数据模拟管道流程构建自己的特定数据集并持续进行迭代。

对于 HyperWrite,Shumer 说:「最初关于 HyperWrite 的想法是,我们能不能创造一个能为你写邮件的 AI?」他说实际上 HyperWrite 是第一家使用开放生成式 AI 模型来开展业务并获得 VC 支持的公司。

目前,该公司已经积累了数百万用户并且已经有了上百万收入(因此这是一个已盈利的可持续业务)。

他说,最初这个想法是在一次度假时产生的。他那时想着做一些有利于生产力的事情 —— 实际上这个想法已经持续了相当长时间。但那时候他下定了决心,联系了 Chaudhary 并开始合作。

而这件事其实仅仅发生在大概三周之前!

听到是三周之前,让主持人深感震惊。他不得不再次提问:「我们明确一下,所以你产生了这个想法,然后联系 Sahil,整编数据集,微调模型并完成了发布,仅仅用了三周?」

Shumer 说:「是的,我知道这听起来很疯狂。」他认为现在很多人低估了现有资源所能达成的成就。人们都把目光放在大型 AI 实验室身上 —— 他们有数十亿美元的预算。少预算、少时间的小团队看起来似乎没有希望。「但 Sahil 和我还是做出了这个,而这甚至不算是我们的重点项目。」

他表示这其实一种思考问题的不同方式。而 Reflection 70B 成功的关键是数据集,Glaive AI 使这一切成为了可能。他说:「只要我们知道自己在追求什么,一旦想法成立,就很容易付诸实践。」

Reflection 70B 的设计思路

Shumer 表示,人们普遍认为 LLM 已经到了有能力思考的程度。它们能在一定程度上反映人类的思维方式,就像是人在内心与自己对话。当今的 LLM 可以通过思维链(CoT)来做到这一点。

Shumer 提出了一个思路:人会犯错,LLM 也会在思维过程中出错。人在犯错时会反思,然后回头进行修正。那么能不能将这个机制引入 LLM 呢?

但实际上 LLM 很难注意到自己的错误。他举了个例子:他曾让 LLM 计算 2+2 之后再乘以 7,结果 LLM 一开始就计算得出 2+2=5。这时候它就假设自己已经是对的了,然后继续执行后面的操作。

这时候,如果能让 LLM 反思自己每一步的答案,那么就能让模型变得更聪明、更可靠、更准确。

这就是 Reflection 70B 的训练思路,也是其得名 Reflection(反思)的原因。

他们创造了一种名为 spliting 的策略,就是让模型犯错了,就让模型犯更多错(这很容易),然后再去修正它们。这样便能够让模型的性能保持不变乃至提升,毕竟模型就算犯错了,也可以修正回来。不过 Shumer 也表示该策略还依然是首个版本,并不完美。但考虑到这个过程仅有三周时间,也着实让人惊叹了。

数据方面则主要由 Chaudhary 负责,他表示他们使用的数据量并不如人们预期的那样大,并且其中大多是他们生成的合成数据。

他说他们一开始只有 1 万个样本,他们检查了一下效果,然后将其扩增到了 10 万个样本,其中包括一些代码数据和推理数据等。「我们的目标并不是获取大量数据并教会模型如何推理,而本质上是教会模型认识到自己的错误。」

他提到之前已有研究表明,通过让常规的指令模型进行反思,就能提升其性能。他举例说,就算是 Claude 3.5 Sonnet 这样的模型,输出中也经常出现很多偏见,模型总是相信自己的结果是正确的。

在生成合成数据时也会出现这样的问题。具体来说,他们使用了微调过的语言模型来生成合成数据。Chaudhary 说:「当我们第一次尝试生成反思数据时,我们发现就算要求模型真正犯错然后进行反思,模型却又很难做到这一点。」不让模型犯错时它老出错,让它出错时它又做不到。于是微调的主要目标是让模型犯错并反思和纠正错误。

当被问到为什么这一策略优于系统提示词(system prompt)方法时,Shumer 谈到了自己的经历:「我从 2019 年 GPT-2 时代开始就已经在做提示词工程了。我发现如果你只是要求模型这样做,而不针对性地进行训练,那就会出现一些问题。」

一个问题是模型过于自信。

另一个问题很奇怪:模型会故意犯一些本来不会犯的错。由于系统提示词中提到了反思错误,而模型可能又非常想要遵守这些系统提示词。为了进行系统提示词中指示的「反思」,它就得犯错。但实际上,我们只希望在有需要时让模型反思。

事实证明这一策略的效果很好,让 70B 模型的性能超过了 405B 模型。而该团队还在积极筹划打造 405B 参数量的 Reflection 模型。Shumer 说:「我们预计 405B 会很疯狂。」

这个策略的整体思路其实很简单。Shumer 说:「这就是那些看似愚蠢又显而易见的想法之一,没有人真正想过要去做。」他说很多实验室的思维模式过于技术化,但实际上有时候简单的方法也完全可行。就像 2018 年前后那段时间,很多人在忙着开发新架构,但实际上正确的做法是扩展现有的架构。

在实际的执行过程中,这会用到一种名为思考标签(thinking tag)的机制。模型会在这个标签内部进行反思,直到它得到正确答案或认为自己得到了正确答案。不同的用户或服务商在开发应用界面时,可以选择是否向用户展示这个标签的内容 —— 毕竟很多用户并不在意模型的思考过程,只想要最终的输出结果。

Chaudhary 表示他们下周将发布一份技术报告来分享更多技术细节,未来也将发布他们的反思数据集(至少在完成 405B 模型训练之后)。

然后,他们分享了实际部署 Reflection 70B 时可能遇到的问题,其中包括:

token 数量比非反思模型多,Chaudhary 估计会达到原来的 1.5 到 2 倍

如果使用托管 API,则可能会有延迟问题。

至于 Reflection 是否会有支持一般用户本地运行的 8B 版本,Shumer 表示他们其实首先就训练了一个 8B 版本,但其相较于非反思的 8B 模型提升不大。而 70B 模型的提升就非常明显了。Shumer 认为与其去优化一个很快就会过时的 8B 版本,不如专注研究反思和其它可能超越反思的技术,打造一些更卓越的模型。也就是说,短时间内 8B 版无望。

最后,Shumer 表示他正在考虑一些不同的想法,其中一些甚至可能比反思还简单,但也有望与反思结合起来。至于这些新想法又会给我们带来什么惊喜,让我们拭目以待。

参考链接:

https://x.com/MatthewBerman/status/1832096560970395704