[AI辅助创作] 探究多模型协作(二):简单粗暴的协作机制
结论
同样的任务,使用5.6 sol max花费$4.516,在本文的协作模式下花费:$1.123(文末有Pi Session的分享,你可以看到两个任务的整体细节)
前言
我在使用本地模型的时候,其实遇到了一个非常尴尬的问题。
我一开始的思维也是想着,用一个模型来解决所有的问题。
比如说我尝试过千问 27B,也尝试过千问 3.8 Flash Next。
但是后来,随着我对本地模型的使用,我逐渐发现了一件事情。
当智能程度差不多的情况下,那速度一定是优先考虑的。
原因很简单。
即使再智能的模型,它对于当前问题的假设都不一定成立,因此它就错失了快速验证的机会。
尤其当两个模型的智能度差不多的时候。
这个事情有点类似于人类。
60 的智商和 90 的智商差距很大,但是 90 智商和 100 智商的人则差距不大。
现在我的体验是,本地的模型,以千问 3.8 27B 和千问 3.8 Flash Next 为例,它们之间相差的可能就是 90 分到 100 分的差距,甚至于可能就是 90 分到 95 分的差距。
换句话说,
它们的智力层面其实没有断代优势。
但是执行力方面来说,MoE 模型,也就是千问 3.8 Flash Next,明显速度要快于千问 27B。
这就是为什么我在尝试了多个模型之后,我最终选择使用一个快的模型。
所以到这里,我得出了第一个结论。
本地模型优先考虑的就是速度。在智能程度差不多的情况下,优先考虑速度。这个是我实践得出来的结论。
但这个时候,问题又来了
我本地部署的千问 3.8 Flash Next,平均速度能达到 40 token/s。
而这个时候,我发现了一个更快的模型。
千问 3.6 35B-A3B,被 Splash 优化过之后,token 的吞吐率能达到 100 多 token/s。
但是它的智能程度比较低。
所以这时候就很难去平衡。
我日常到底是使用千问 3.8 Flash Next,还是说我就用 A3B?
而造成我很难去决策的原因,恰恰就在这里。
我并不了解 Flash Next,它的智能度能达到一个怎样的水平,A3B 能够很好地完成哪些事情,哪些事情不能够完成。
所以最近这两天,我就在疯狂使用 A3B。
我让它去处理各种各样的问题,然后实时盯着它去处理。
我想找出来的,其实就是它的能力边界(capability boundary)。
当然这里面还有另外一种办法。
用一个聪明的模型,也就是云端模型,去监督它完成,就不需要我人工盯着。
但是这部分内容目前我还没有体系化的操作,只是零散地在使用,并没有形成一个系统的操作办法。
直到后来,我突然灵光一现。
为什么一定要二选一?
我突然在考虑这个问题。
能不能利用 Flash Next 的思考链?它负责判断,然后快的模型 A3B,它去负责执行。
那在这个过程中,其实就有很大的操作空间。
因为我们明确地知道,A3B 一定是比 Flash Next 要笨的,智能程度要低。
所以 Flash Next 到底应该分配什么样的任务给 A3B,这其实又是一个值得权衡的事情。
但我一开始并没有搞得很复杂。
我用了一个最简单、最粗暴的分配方式。
我写了一个 Pi extension。
在 Pi 的主 Session 里面,我去掉了默认的 read、write 等四个简单工具。
唯一的工具只有一个。
Splash。
主模型想做事情,只能通过 Splash。
而当它通过 Splash 去下发任务的时候,底层实际上是由速度很快的 A3B 来完成。
也就是说,
Flash Next 负责判断,A3B 负责执行。
这套东西做出来之后,我马上又开始担心另外一个问题。
小模型会不会把大模型带沟里?
A3B 的智能程度比 Flash Next 低。
那它会不会因为智能程度有限,导致它分析出来的原因并不是真实的原因?
如果它给出了一个错误的结论,而且这个错误结论又非常像真的,那么它是不是有可能误导智能度更高的模型?
基于这个话题,我还专门和 ChatGPT 做了讨论。
我甚至想过这个问题。
能不能给我举出更多的反例,告诉我这种模式不行?
但实际上最终,我觉得这种模式是可以的。
为什么?
因为我日常在使用这些模型的过程中,可以理解为我是一个满分的模型。
不管是前沿模型或者怎么样的模型也好,它们都是智能度档次比我要低一级的模型。
而当这些模型,即使是前沿模型,它也会出现一些错误的推论,或者说它给出的并不是最优方案。
但这个时候,我会根据我的直觉,根据我的经验直觉,直接指出它可能存在误导性的做法。
所以我当时得出了这个判断。
只要模型的智能程度足够高,那么小模型、快模型给出的错误结论,并不一定能够误导高智能模型。
后来把这套方式推广到云端模型之后,一次实际案例真正让我确认了这一点。
随着越来越聪明的云端模型出现,比如 GPT-6,它消耗额度是非常快的。
并且根据网友的实测发现,GPT-6 对于订阅用户来说,它本身的额度消耗就要比 5.6 快,并且额度更少。
因此即使我是 20 倍的订阅用户,我只使用 GPT-6 的话,其实也是很快就能够把整个 token 花完。
额度就是这么花完的。
GPT-6 做了大量的调研工作,大量的分析工作,它自己去读各种各样的文件。
但这些事情,真的都需要最聪明的模型自己来做吗?
所以我又做了一个尝试。
我用 Pi,把主模型变成了 5.6 Sol,然后执行模型依然由 A3B 去做。
这一次,A3B 确实给出了一个错误结论。
但是 5.6 Sol 很敏锐地发现这个结论存在问题,没有直接接受,而是再次让 A3B 去验证。
最终 A3B 重新检查之后,接受了自己的错误,纠正了之前的结论。
这个案例真正让我确认了一件事情。
当两个模型的智能程度存在断代优势的时候,小模型给出的错误结论,根本没有那么容易误导高智能模型。
高智能模型可以发现这个结论有问题,然后继续让快模型去验证。
到这里,我越来越觉得,这已经不仅仅是 Flash Next 和 A3B 怎么搭配的问题了。
一个简单粗暴的协作机制
以上就是我最近发现的一个东西:
一个简单粗暴的协作机制,但很有效。
判断由聪明的模型负责。
快的模型负责执行。
快模型可以犯错。
高智能模型负责判断这个结果到底可不可信。
如果不可信,就继续让快模型验证。
它可以加速本地模型的运行。
同时也能够有效地降低云端模型的消耗。
我一开始一直在纠结。
千问 27B 和 Flash Next 到底选哪个?
Flash Next 和 A3B 到底选哪个?
但现在我开始觉得,也许这个问题本身就问错了。
因为可能根本不需要只选一个模型。
真正值得研究的问题,开始变了。
不同智能程度、不同速度、不同成本的模型,到底应该怎么组织起来。
实例
5.6 sol负责思考,本地A3B负责执行,花费$1.123
https://gist.github.com/gaoxiaodiao/be14aab8d0119c329043e5577aed7741
5.6 sol负责一切,花费$4.516
https://gist.github.com/gaoxiaodiao/7ac76740f1e461a8a699e1ea98916454