我是 Prithviraj,也叫 Raj。我是加州大学圣地亚哥分校的助理教授,也是 Databricks 的研究科学家。之前我在 Mosaic 工作,后来被收购了。所以实际上我有两份工作。我实际上做了两份全职工作。我通常喝黑咖啡,但加糖。
所以通常不加奶油,但会加一些糖。欢迎回到 MLOps 社区播客。我是你的主持人 Demetrios。今天和 Raj 讨论的是微调,但不仅仅是任何一种微调。我们讨论的是 Tao 微调,这是他提出的一种方法,并撰写了一篇令人难以置信的博客文章。我们为什么不直接开始这次谈话呢?如果你正在收听,
让我用我最喜欢的歌曲之一来摇滚。这是 Nick Mulvey 的一首老歌。它也是不插电的,叫做《无条件》。我强烈推荐它。它来自《现在醒来不插电》的专辑。去看看吧。《无条件》维纳斯在我身边《无条件》
♪ 知道你藏在哪里 ♪ ♪ 这是一件值得知道的事 ♪ ♪ 无论你在哪里 ♪ ♪ 维纳斯的灯光照耀着你的星星 ♪ ♪ 它回到了我的心里 ♪ ♪ 说你做到了 ♪ ♪ 里面充满了爱 ♪ ♪ 这没什么好知道的 ♪ ♪ 但知道你就在那里 ♪ ♪ 维纳斯的灯光照耀着你的星星 ♪ ♪ 它就在这里 ♪
你把它叫做 DAO 吗?你把它叫做 DAO 吗?还是你把它叫做 TAO?是的,我们只管叫它 TAO。它在内部经历了多次名称更改。
Tao 实际上是最终版本,这是我们最终坚持使用的版本,我们是在博客文章上线前一天想出来的。所以在内部,它实际上是我的头脑中其他东西的关键,因为在大多数时间里,我们把它想成一个不同的名字。但我们认为这是一个更好的名字。
因为每当我看到这样的拼写时,我总是会想到《道德经》,你知道吗?是的,是的。我认为他们只是,是的,我们只是在想 Tao。是的。Tao 很完美。那么它是什么呢?所以 Tao 从高层次上来说,是一种让人们为自己的领域微调自己模型的方法。好的。
对。所以一直以来都存在这种,是的,
在“你是否拥有一个统治所有模型的模型?”或“你是否拥有,你知道,每个单独领域都有一个单独的模型?”之间的压力。鉴于许多人的数据是私有的,我们似乎正在走向一个世界,在这个世界中,这些并不一定完全是正交的。但是
他们非常处于一个世界中,许多人确实需要为他们的数据和用例定制模型。所以这就是它。这是一种做到这一点的方法。最重要的是,这是一种在人们没有标签的情况下做到这一点的方法。对。所以。
就像每个试图构建自定义模型的机器学习人员的梦魇一样,哦,不,我从哪里获得这些数据的标签?昂贵。是的,这些很昂贵。标注成本将非常昂贵。我们一次又一次地从这么多客户那里听到过这个消息。对。
对。就像我们一样,嗯,这实际上是一些最初动机的来源。嗯,对。所以我们当时想,好吧,那么,要有一个什么样的系统,让人们能够部署他们的模型,以某种形式收集这些模型的反馈,然后用这些反馈来随着时间的推移不断改进它们呢?嗯,
并非每个人都能实时收集这种反馈等等。许多人只是直接地,他们对他们想要执行的任务有一个想法,对吧?他们有一些提示等等,但他们没有一个特别大的数据集来解释如何去做。所以基本的想法是,好吧,你没有一个大的数据集。你也没有一个非常……
标记的数据集,或者你没有任何标签,因为是的,创建这些标签需要大量的时间和精力,那么我们如何在没有任何这些东西的情况下仍然获得有价值的东西呢?
是的。这与所有经典的机器学习,比如监督学习的视角有点违反直觉,对吧?就像,哦,我们被教导说,你知道,要认真思考你的数据,对吧?你需要好的数据。然后如果你考虑一下很多大公司是如何制作他们的模型的,对吧?就像他们确实拥有大量的
像人工标注的数据。对。所以这就是,这就是像,最初的关键挑战,我们花了大量时间来头脑风暴,就像,好吧,如果,
让大家使用这样的东西的方法,对吧?像 RL,像 XF 即服务。所以,我会谈到,我会稍后谈到 RL 的部分,但基本上是这种不断改进的、特定于领域的专业模型的东西,那么我们需要尽可能降低进入门槛。是的,这很有趣。任何上过 Andrew Ng 课程的人
课程的人都会说你不能那样做,这都是关于数据的,你在说什么,没有标签的数据?是的,好吧,事实证明,它仍然是关于数据的,只是我们为你抽象了很多东西,嗯,告诉我更多关于这一点的信息,数据就像,它是人工生成的
在幕后,可以这么说。它是由模型本身人工生成的,对吧?我喜欢这样思考它,对吧?我们这样做的方法是基于强化学习的。我通常教强化学习的方法是,你可以把它想象成模型的个性化监督学习,对吧?而且
如果你进行正常的监督学习,你只需要人类标注的大量标签,你试图学习如何模仿人类,人类的标签或其他什么。而在强化学习的情况下,模型本身正在生成数据,对吧?模型正在进行这些生成。所以你有一个提示,模型就像生成
你知道,对于这个特定的提示,一个或多个响应。然后它会得到反馈。它就像,好吧,这些东西中哪个是好的?哪些东西不好?然后它试图从中学习。对。所以它正在从它自己的错误中学习。对。所以它,
而如果你完全用人类数据来训练它,它将从人类的错误中学习。这其中的关键在于,模型在推理某事时所犯的错误与人类的做法不同。所以实际上,在很多情况下,人类数据不一定是黄金真理。
所以这可能是这种方法真正有效的主要原因之一,能够让这些模型以一种专门针对模型的方式从它们自己的错误中学习。好的。所以具体解释一下这是如何工作的,以及什么,因为它都是,我认为我们一开始就说 Tao,
Tao 代表某些东西,对吧?它不是一万件事的土地。它是测试时间自适应优化。是的。所以我想从更高的层次上来说,对吧?它实际上非常类似于我刚才解释的过程。所以人们会来,他们会有一堆提示,对吧?所以这就是进入门槛。一些公司,
客户会来,他们会说,嘿,我们有这些任务。这些是我们想要给这个模型的提示类型。然后我们所做的是,我们采用这些提示。在内部,我们有这些基础模型,在某种程度上是预训练的 LLMs 或其他什么。我们让他们
从模型中生成一堆响应,对吧?就像有很多技术可以做到这一点,但它们都归结为一点,那就是你试图生成不同的响应,然后我们有另一个模型,叫做奖励模型,嗯
这非常重要。所以我们有这个奖励模型,它将采用这些由你的生成模型生成的响应,对吧?我从这里开始称之为策略,以尝试使用更多强化学习语言。这个奖励模型将采用这个策略输出的响应,然后对它们进行评分,对吧?它会说,
这是,你知道,+1,+0.5,-1,-0.5,对吧?然后……
通过强化学习,我们可以训练这个策略来判断,好吧,其中一些响应非常好,对吧?所以因为这些响应非常好,我们将改变模型的权重以提高这些权重,对吧?使其更有可能产生类似于那些得分高的输出的输出,对吧?
并使模型不太可能产生类似于那些得分低的输出的输出。然后这个过程迭代地重复。直到现在……
是标准的强化学习,对吧?所以这主要是标准的强化学习,对吧?我描述的内容。在这种特定情况下,我们必须做的一些关键事情是,好吧,首先,如果你考虑一下,我们拥有的这个奖励模型正在提供标签,对吧?
它正在完成对这些策略的输入和输出进行排序的大部分工作。它给出了一些分数。所以拥有一个在各种任务中都训练得很好的奖励模型非常重要。
所以这就是我们在博客文章中讨论的内容之一。我们有一个叫做 DB 奖励,DBRM 的奖励模型。所以这是一个非常以企业为中心的奖励模型,能够判断各种可能性中的任务。所以
这样做的原因是,训练模型来判断某事是否正确比实际尝试自己得出正确答案更容易。对。所以这就是这个验证问题。所以验证问题比生成问题更容易,对吧?
通常更便宜。对。所以我们花了大量精力收集数据,以使奖励模型尽可能广泛和通用。然后对于绝大多数用例,至少在我们在博客文章中展示的所有内容中,我们使用相同的奖励模型。
嗯,在文本到 SQL 中,在金融基准测试中,这是一种,嗯,是的,你知道,像金融领域问答之类的东西,嗯,它实际上是相同的奖励模型,事实证明,相同的奖励模型能够判断所有这些任务的输出,奖励模型经过微调
模型,它像一些 llama 基座或其他什么东西经过微调,或者它是一个完全独立的较小模型?
它就像另一个模型,就像一个基座。所以想想,你知道,像 Llama 风格或像开源风格的 Llama、DVRX,任何风格的基座模型,我们都在上面进行了微调。所以训练奖励模型的传统方法是,你通常会从预训练开始,然后
有点像指令调整模型。然后你添加一个额外的头部。所以与其像映射到这个,你知道,给你整个词汇表上的对数几率,一个概率分布来找出下一个要预测的标记,它现在给你一个单一的标量值。是的。好的。现在我不太清楚的另一部分是,你说,
奖励模型基本上给你,如果你眯着眼睛看,一些标注的数据。有点像。它是非常稀疏的标注数据,对吧?它实际上是反馈数据。所以……
这样做的原因是,让我们从信息密度的角度来看待这个问题,对吧?所以如果你有纯的,你知道,像模仿学习数据,对吧,监督微调,像,那种数据,你知道,你必须让人类写下如何完成一项任务,对吧?
对。就像所有关于如何完成特定任务的输出,给定导入提示一样。信息密度非常高。而这个模型提供的信息是,好的,你在整个序列之后或序列之间的断点处生成这个整个序列。我们只是给你一个标量值。
好的。在某种程度上,你知道,预定义的断点处。所以它需要预测的信息要少得多。所以这个问题更容易。那么测试时间标注是什么时候出现的呢?我觉得这个故事还有另一部分。故事的另一部分是,好吧,所以你有了像评分这样的奖励。
东西,对吧?但它实际上在评分什么?对吧?它实际上在评分的是策略方面的内容。所以策略正在生成响应,策略正在生成,你可以生成一个响应并对该响应进行评分,对吧?然后从中学习。你可以生成两个响应,
然后评分,然后你做的方法也很重要,对吧?你可以根据第一个响应来调整你生成的第二个响应,对吧?就像,好的,生成一些与我第一次生成的东西不同的东西,或者其他什么。但如果你考虑一下,那就是,那就是,
正在使用的测试时间计算。你生成的响应类型越多,你生成的响应类型越多,实际上使用的测试时间计算就越多。现在,术语可能会有点混乱。我们之所以使用这个术语,称之为测试时间计算,是因为这个测试时间计算只是模型在训练期间使用额外的推理时间计算。但是一旦整个训练过程完成并且模型实际部署后,它就不会
生成多个响应或其他什么,对吧?嗯,所以实际用户的推理成本是一样的,我们在训练过程中消耗了大量的推理成本,我明白了,额外的自适应测试时间,嗯
在提前的时候被消耗掉了,这样当它实际部署的时候,你知道,你可以预期相同的,你知道,推理延迟等等。是的,它不像一个深度研究或其他什么 R1 推理模型,你会给它一个提示,然后 15 分钟后回来。它在
训练级别进行测试时间计算,是的,所以这个过程会是这样的,对吧?客户来了,他们有一些提示给我们,然后我们会做这种,你知道,推理过程,嗯,在训练时间,所以我们会把它放进去,然后过几天再回来
嗯,对,或者我们想要为此特定任务使用的测试时间计算量,嗯,这些响应都以各种方式进行评分,嗯,事实证明,你如何生成响应也很重要,对吧?所以有一些非常流行的技术,比如最佳 N,你只是像生成
不同的响应,所有都是 IID,对吧?彼此独立采样。事实证明,这可能不是最好的主意,对吧?就像你实际上正在浪费大量的冗余计算。它有效。但就试图至少在某种程度上更有效率而言,它有效。
它变得有点冗余,对吧?所以如果你的底层模型没有很大的多样性和它可以说的事情的范围,那么如果你生成 N 个响应,那么这 N 个响应的 K 个子集将彼此非常相似。你只是浪费了一堆,而且这些的分数都将相同,并且没有额外的学习信号可以获得,只是
一遍又一遍地尝试同样的事情。所以你必须对如何实际进行这种采样有点聪明。这就是我们在内部开发的内容之一,就是对这一点很聪明。因为这不是数量的问题,或者换句话说,你会很快意识到,如果你对相同的东西进行评分,基本上是相同的词,但是
或者它是相同的思想,但不同的词。所以它得到了相同的分数,这并没有为该基础模型增加任何丰富性。是的,你没有提取任何新的信息,对吧?从信息的角度来看,你有点死水了。所以你必须小心……
首先是如何生成这些响应。对。以及你如何从 RO 的角度进行这种探索,以便奖励模型给出的反馈实际上是有用的。我以为你只是会把温度调高到
11,然后看看会发生什么,你知道,我们确实尝试过,这实际上可能是我们尝试的第一件事,嗯,就像,好吧,让我们把温度调高看看,但事实证明,这并不特别有效,这取决于用例,所以如果你把温度调得很高,就像实际上,你知道,如果你正在进行创意写作,对吧,如果你想要像角色 AI 那样的聊天机器人,它可能会起作用
如果你试图做企业的事情,你可能并不真正想要那种超高温度的随机性。所以你必须做一些事情,你必须能够以之前的响应为条件。你必须确保你有一些定义……如果你有一个响应,你还有另一个响应,你必须对这两个响应之间的距离有多近或多远有一个定义……
彼此之间,然后确保你生成的下一个响应与你之前生成的所有响应都足够不同。你是否尝试过一遍又一遍地这样做,并且你是否看到了像
当你做了两三次之后造成的损失,因为我可以想象一个世界,你会说,好吧,让我们建立一个每星期或每几天或每个月启动一次的再训练管道,但随后你开始看到几乎像压缩损失一样的东西,是的,是的,这是一个很好的问题,所以,嗯,像 ML 领域的大多数事情一样,这取决于,嗯
对。所以我会告诉你它有效的情况,以及一些不太好的情况。所以事实证明,我们实际上在 Tao 中所做的事情之一是,我们只是迭代地运行这个过程越来越多次。我们想,
哦,天哪,这个数字只是直线上升,嗯,就像它只是,是的,这是有史以来最好的图表,它只是向上和向右,就像这样持续地,这只是继续起作用,嗯,这是像,一年前,一年半前,嗯,在这一点上,我们想,这太棒了,嗯,你知道,我们的奖励模型有效,所有这些都有效,但事实证明
有两件事可能会出错。一个是这个显而易见的问题,或者事后看来显而易见的问题,即奖励作弊,结果你的奖励模型并非完全 100% 准确。
对。它有一些噪音。所以如果你花费太多的计算量,并且你只是这样循环,在某个时刻,你已经从奖励模型中提取了所有有用的信号。现在你只是在学习剩下的错误噪声。
哦,有趣。这就像,这是,你知道,像,我不再知道过拟合到底是什么意思了。但对于一个经过经典训练的 ML 人员来说,这将是思考它的方式。这将是像 RL 风格的版本,可能,过拟合。
你只是,你非常擅长为特定模型的奖励进行优化。但由于这本身只是客户或其他人最终可能想要的东西的代理,它在后续阶段到底做得有多好?这几乎就像我想象的那样
当你挤压一个酸橙时,一开始你会得到所有果汁,然后后来你就像试图挤压,挤压,挤压,为了得到一滴果汁而付出如此多的努力,实际上会更好。是的,如果你在最后开始挤压,它也会变得苦涩,对吧?而且……
这是众所周知的,但亲身体验一下真的很令人兴奋。这非常像一种艺术,要弄清楚,哦,什么是那个容忍度阈值?对。什么是截止点?你如何以通用的方式获得这个截止点,这样,你知道,多个不同的客户可以使用单个奖励模型?
因为,那么你会怎么做呢?你只是更换基础模型,然后从零开始重新开始吗?或者你怎么……
好吧,我的意思是,你从整个训练过程中都有检查点,对吧?所以你可以回滚到之前的检查点。理想情况下,就像,这种工作方式,对吧,理想的循环是什么,你有一些,像,
像生成模型一样,它会消耗大量的推理计算,同时你还有这个奖励模型正在进行训练。然后在某个时刻你把它切断,你只是部署模型,然后你收集新的反馈,这样你实际上可以,你知道,更新你的奖励模型。因此,现在奖励模型中有更多信号。现在奖励模型中有更多信号,对吧,你现在可以再次对其进行训练。对。
理想的循环是你正在进行这个重新部署的循环。这就是你刚才谈到的,对吧?这种重新部署和跨部署的再训练只有在你能够在每次之间获得新的信号时才能真正有效。
对。所以如果问题相同,对吧,并且你已经优化到一定程度了,那么在某种程度上进行初始训练运行之后,你将不会获得任何更多的东西。因为我们已经为你做了很多这样的优化工作。而且我们正在动态地找出这些阈值等等。
所以,理想情况下,对吧,如果有人来找我们,他们说,好吧,所以,你知道,我们有这些提示,这很酷。然后我们将使用这种,你知道,像 TAL 方法一样,你知道,找出所有这些阈值,针对我们动态拥有的这个奖励模型进行优化。然后我们会给你,而且,你知道,模型会回到他们那里,对吧?是的。
你想要进一步重新训练它的原因实际上是,你知道,我们现在有这些新的任务,我们希望模型能够完成这些任务。这是一堆新的提示。我们有理由相信,这些新的提示实际上与旧提示有所不同。用你自己的话说,它们不是同一件事,但用词不同。
因为我们也在某种程度上考虑到了这一点,就像获取你的提示数据集,然后确保我们涵盖了所有方面,哦,这里有一些方法,人们可能会说或要求这些相同的提示集。
是的。然后,如果你有一堆新的任务,你相当肯定的是与模型已经训练过的能力不同,那么你就会回到我们这里,说,好吧,我们想再次优化,请。然后你这样做。对。这将是重新训练模型的原因。
那么,当你这样做时,你看到了哪些结果?与不同的微调方式相比,我想这将是主要的事情。而且大多数时候,对吧?我相信你已经见过很多次了。这只是尝试优化提示,尽你所能尝试提示微调,因为你会得到如此快速的反馈循环。如果你不能这样做,那么确定你是否需要,你是否需要微调,然后什么,
什么样的微调,有多少 GPU 等等,什么数据,什么标签,所有这些有趣的东西。微调和没有正确进行微调会带来很多麻烦。然后在你微调之后,你意识到模型的性能实际上更差了。发生了什么事?所以在这里,我非常清楚地看到了价值主张。你说,看,
你不需要担心标签数据,你只需要给我们你的提示,我们就会制作一个在这些提示上效果更好的模型。
是的,是的。所以同样,你知道,标准的机器学习格言“没有免费的午餐”非常正确,对吧?所以,你知道,这些提示可以来自多个不同的任务。我们可以让你的模型在这些不同的任务上表现更好。但你在其他地方牺牲了性能。
对。所以就像你一样,你知道,大多数客户都会来找我们。他们会有一堆基于企业的提示。但是,你知道,你可能,你知道,减少模型的创意写作能力。对。他们可能不在乎。是的。他们可能并不真正关心。对。如果他们关心,他们可以带着……
创意写作提示作为其中的一部分回到我们这里。然后我们也可以为此进行优化。以鲍勃·迪伦的风格给我我的财务报表。是的,这实际上很酷。是的,也许我应该想办法用这种方式教学生。但另一件事是,当你这么说的时候,我的脑海里突然冒出来,你是否需要某种……
各种各样的提示数量,还是提供更大的提示集更好?因为你最后说,所有被评分的输出都达到了阈值,所以我在想,如果输入更广泛,是不是意味着输出也会更多?我相信你已经研究过这个问题了。
是的,我们确实研究过这个问题。总的来说,你的提示数据集越大,多样性越高,性能就越好。事实上,很长一段时间以来,我们只发现能够获得良好结果
至少良好的性能意味着,如果我们有一个非常大的提示集,一个非常多样化的提示集,我们可以训练一个参数数量相对较小的模型来匹配某个特定任务上的4.0或类似的性能。而“非常大”是指大约一千个?是的,“非常大”大约是在几千个的量级。好的。但是……
这仍然是一个相当高的进入门槛,对吧?如果我们说不需要标签,但我们说,好的,只需要提示。但实际上,附加条件是,你必须给我们大约10000个提示或其他什么。这是一个相当高的进入门槛。所以我们不需要那样。我们找到了一种解决方法。
基本上,对于最终客户来说,他们只需要给我们提供一个子样本,这些样本代表他们认为模型可以使用的各种情况。然后我们会从那里开始,想办法获得那种多样化的提示集等等,并从中学习。
是的。所以就像我带着我的三个提示来找你,你会说,别担心。希望你不仅仅只有三个,但是……你得努力。
是的。但是,你知道,如果你只给我三个提示,我们会尽力而为,让我们的工作更容易。我只需要它在这三种提示类型上表现良好。我会说,好的,当然。对。但是,你知道,我们会对这个范围感到满意。就像,哦,大约10到50个提示甚至更多。是的。
对,像这样的东西。然后,你知道,我们可以从那里开始,在内部达到这样的阶段:我们看到更多类似的提示,以及更大、更多样化的数据集等等。所以这里令人着迷的一点是,你能够从
小型模型中获得如此高的性能,我想知道,如果你没有任何真正的限制,而我只是告诉你:嘿,在x个任务上,最小的模型,最好的性能,最高的准确率,
你会怎么做?它可以是任何东西,比如,好吧,我要蒸馏这个模型,然后我要微调它,然后我要做任何你想做的。你会如何看待这个问题并尝试解决?或者说,走这些额外的弯路甚至不值得,你只需要说,我要用Tao,它就足够好了。
我实际上认为我会使用Tao,它可能就足够好了,因为我认为我们在弄清楚最佳方案方面做得相当不错,即使考虑到所有这些约束条件,对吧?所以这些约束条件是相当现实的。但在幕后,我们相对来说没有受到约束,对吧?我们没有计算限制等等。
在幕后。所以,我认为我们在尽可能不受约束方面做得很好,同时仍然接受约束,并确保客户没有特别高的进入门槛。是的,所以我实际上不会改变太多,但是
老实说,我认为,如果你说,哦,你受到了完全的约束,你会怎么做?这实际上是我问自己的问题。因为那是理想的情况,对吧?就像,哦,因为我认为最糟糕的感觉是,哦,有人会来找你,他们会说,哦,好的。
我们有这个特定的任务,比如,你知道,我们想在这个任务上训练模型等等。然后我们会说,好的,这是一个有点用的模型,带星号,对吧?但如果我们不受约束,它会做得更好,对吧?这正是我想要避免的情况。是的。是的,我明白你的意思。所以另一个有趣的部分是,好吧,
你能让多小的模型做多伟大的事情,或者你能让这些小型模型做得有多好?是的,是的,这又是一个没有免费午餐的问题,但事实证明,像大约80亿参数规模的模型,你可以让它们做非常令人印象深刻的事情,对吧?而且
同样,这实际上取决于人们试图完成的实际任务的难度。但我们发现,在一个狭窄的范围内,如果你去除它的广泛智能,并将其指定为更狭窄的数据智能,那么
小型模型实际上就足够好了。相对较小的模型。对吧?所以有一个阈值,在这个阈值下,它们就足够好了。现在,很明显,你可能会说,哦,你知道,Raj,这意味着你不相信扩展吗?那是不对的。我确实相信扩展。对。我只是……
扩展就像一个轴,你知道,任务越复杂,你需要更大的模型才能实现它。但并非每个人都需要。就像你看到的新的Llama模型,对吧?庞然大物。
大约有2万亿个参数,你知道,只有一小部分是活跃的,但这仍然对绝大多数人来说是一个巨大的部署难题,是的,人们并不热衷于这个庞然大物的大小,即使是像Scout这样的模型也相对较大,而且性能
是的。所以,你知道,人们有这种成本、质量之类的权衡。而且
每个客户,我想,都在成本质量的帕累托边界上的不同位置。所以,当你考虑建立任何一种产品,试图让人们创建他们自己的定制模型时,像自适应计算之类的东西就非常棒,因为它们基本上允许他们控制他们在成本质量方面的
边界上的位置。就像,哦,花费更多成本,在训练期间消耗更多计算资源,最终获得更好的质量。是的。是的,这是一个很好的观点,就是说,好吧,你可能需要优化某个
生命周期中的特定位置,你愿意在微调训练上多花一点钱,因为之后你就可以拥有这个小型模型了。我想知道你是否尝试过压缩这些模型或进一步蒸馏这些模型以使它们更小?而且
我们没有……是的,在内部,我们尝试过将80亿参数规模的模型进一步蒸馏。而且你可以……
在某些任务上仍然做得相当不错。但是,如果你使用的是30亿参数规模、10亿参数规模或30亿参数规模的模型,即使对于我们在博客文章中考虑过或展示过的一些基准测试,例如文本、SQL、BirdSQL等等,你也会开始看到相当大的下降。下降幅度相当大,但对于其他一些基准测试,效果还可以。是的。
对。所以我想这又取决于任务的难度。但我的印象是,就性能而言,30亿参数规模和80亿参数规模之间的差异与成本差异相比不成比例地高。哦,好的。是的。
是的。这就是为什么我们在80亿参数规模上展示了很多结果的原因,对吧?所以就像,哦,这不是线性关系。性能下降幅度比计算资源的三分之八或其他什么要大得多。是的。成本并没有因为30亿参数规模和80亿参数规模而产生巨大的差异。就像……
对。当然,你可以进行各种推理时间、推理操作。你可以进行多租户服务,所有这些爵士乐。但我们认为这是一个合理的权衡,80亿参数规模是一个合理的权衡,它仍然足够快速和轻量级,可以在很多场景中部署,但它仍然能够
表现良好,对吧?Tao的美妙之处在于,它只是,它只是有效。它与大小无关,对吧?我们有700亿参数规模的结果。我们在内部有4050亿参数规模的结果。它只会越来越好。你有没有注意到……
在用于微调的模型之间是否存在任何巨大的差异或显著差异,也许不是巨大的差异,有些模型比其他模型更适合这种方法?
是的,有点。所以这实际上归结于模型能够生成不同的响应。有些模型已经经过了过度RLHF训练。
嗯,对。嗯,所以,所以,好的。所以,呃,像我的,我的,我的主要研究领域是强化学习。所以强化学习在这里到底做了什么?所以那种底层的东西,对吧。如果你有某种分布,那么预训练让你学习整个互联网语言分布上的所有这些标记分布,
监督微调使该分布变小,对吧?就像,好吧,我要让你偏向于我认为模型最有可能听到人们对它说和与之交互的指令范围。现在,像RLHF,有很多当代公开的工作表明它使这些概率分布变得非常尖锐。
对。它就像,现在不再能够生成各种各样的响应,你现在的限制非常大。对。你只能说一件事。这就是为什么你会得到所有这些安全类型的响应,比如我不能为你做这件事。是的。对。就像它已经被从模型中剔除了一样。这对
使用强化学习进行进一步优化来说不是很好,所以如果你有一个奖励,就像我说的那样,很大程度上取决于能够从我们拥有的这个非常好的奖励模型中提取良好的训练信号,这意味着
我们使用的底层基础模型能够生成的响应越多样化,就越好。对。所以诀窍的一部分是,你知道,
不要使用已经经过RLHF训练的东西。它们不会特别适合这种方法,因为它们已经被强化学习训练用于不同的任务。现在它们不再特别擅长这个了。你还记得几年前,Mistral第一个Mistral模型发布的时候,它几乎没有
RLHF训练,我认为这就是人们如此喜欢它的原因,因为它就像哇,我们可以自己做,太棒了。
是的。嗯,你知道,发布一个没有RLHF训练的模型有优点和缺点,但我认为它肯定在开源社区的某些子集中变得非常流行,这些社区想要将它用于各种各样的用例,而像Llama这样的模型由于RLHF训练过度而无法很好地完成这些用例。对。嗯,
但是是的,这就是这里需要考虑的事情,对吧?但是,我想这是从研究的角度来看的。从客户的角度来看,他们实际上不必考虑这个问题,因为我们已经为他们考虑过了。是的,你们已经测试了很多不同的模型。是的,我们已经对分布以及哪些模型是尖锐的,哪些不是有了很好的了解。如果它们是尖锐的,如何消除分布中的一些尖锐性,以便它更有用,可以生成各种各样的东西。我们已经通过内部研究解决了这个问题。好的,我们一直在围绕这个问题打转,并且一直在讨论香肠是如何制作的,但是……
我们没有讨论的是实际的结果。所以也许你可以快速地给我们一个TLDR,比如,它在哪些方面更好?我想这是我现在脑海中浮现的一个大问题。是的。是的。所以,很明显的一点,对吧。非常明显的基线就是监督微调。对。嗯,如果你有监督微调,比如标签,
事实证明,它比带有标签的监督微调好得多,即使它没有标签。对。嗯,这很清楚。我们在文本到SQL上进行了测试。嗯,然后是我们团队中的其他人之前开发的一些其他基准测试,这些基准测试属于企业领域。嗯,我们有自己版本的金融基准测试等等。嗯,
它测试了各种各样的开放式和封闭式问答场景,这些场景都以非常企业化的方式进行。我永远不会回到监督微调。对。我认为,对。我认为这是,这是,这比监督微调好得多,除非你有一个非常庞大的
标签数据集,这个数据集非常丰富等等,而实际上没有人这样做,即使那样,Tao也不是与之正交的,你仍然可以在此基础上运行Tao,哦,不错,对,因为如果你有一个带有提示和响应的标签数据集,你还有什么?你还有提示,而这正是Tao所需要的。嗯,
所以你仍然可以在前面的监督微调步骤之后运行Tao。另一件有趣的事情是,你知道,
这些模型实际上,我正在回顾具体的数字。但事实证明,即使是80亿参数规模的模型最终也能与4.0或类似的模型在特定任务上达到相当的水平,对吧?对于特定范围的任务,在某些任务上,对吧?
对。所以,AP模型,比如,你知道,如果你有一个像金融基准测试这样的任务,它会和4.0或O3 mini之类的模型一样好,这些模型的参数数量至少大一个到两个数量级。现在,
对于稍微复杂一点的任务,你会看到,比如BirdSQL之类的任务,是的,这是一个更复杂的任务。你会看到AP模型的性能仍然略低于4.0或O3 mini,但是当达到700亿参数规模时,差距就会缩小并基本消失。哦,不错。是的。
这就是我所说的,你处于成本质量权衡率的哪个位置?什么对你来说足够好?所以,如果你是一个在金融基准测试方面进行金融问答的人。
AP可能对你来说足够好了,嗯,对,如果你正在做一些更复杂的事情,嗯,对,你可能需要一些稍微大一点的模型,以便能够,而且如果你正在做一些更复杂的事情,并且你想要达到O3 mini的水平,那么你将需要
我想说的一件有趣的事情是,我们进行的比较并没有显示实际推理时间比较成本的结果。我们只是将它们呈现为相等。但是O3 mini实际上是在测试时进行推理。是的。对。他们正在进行大量的额外计算,而我们已经在训练时间本身就完成了许多额外的计算。所以真正的正确分数
可以说是4.0,就模型部署后的测试时间延迟而言。是的。所以就像,你的阈值是多少?你正在做的任务有多复杂?但是结果非常有希望,因为即使是700亿参数规模的模型,它仍然比4.0和O3 mini之类的模型要小,而且你可以消除它们,并且基本上可以达到接近相同的水平,然后你就可以控制你的命运了。
对吧?就像你拥有这个精确的模型,没有人会在幕后做任何改变模型行为的事情。模型不会在API幕后进行切换。如果像,如果你有一天给出一个特定的提示,并且模型以某种方式运行,你可以围绕它建立保证。
对,模型将继续以相同的方式运行,因为你知道,在六个月后弃用模型,不会弃用模型,是的,4.5已经开始弃用了,这太疯狂了,伙计,这太棒了。
对。所以总而言之,对吧?就像你拥有这个精确的模型,没有人会在幕后做任何改变模型行为的事情。模型不会在API幕后进行切换。如果像,如果你有一天给出一个特定的提示,并且模型以某种方式运行,你可以围绕它建立保证。
对,模型将继续以相同的方式运行,因为你知道,在六个月后弃用模型,不会弃用模型,是的,4.5已经开始弃用了,这太疯狂了,伙计,这太棒了。