谷歌某个数据中心里,有一台机器同时是满的,也是空的。内存已经用光,处理器却还有富余。新任务落不到它上面,因为每个任务两样都要。谷歌的研究者管这种闲着用不上的容量叫「搁浅」的资源。
哪些机器会落到这一步,一部分取决于几行代码。任务进来时,谷歌的集群管理系统 Borg 先列出能跑它的机器,再让一个打分函数给这些机器排序。
DeepMind 的 AlphaEvolve 团队就从谷歌线上正在用的那个函数起步。Gemini 模型读一读目前找到的最好几版,提出改法。每改出一版,就放进一个模拟谷歌数据中心的程序里跑一遍,用过去某些时刻的真实任务和机器容量回放,得出一个分数。得分最高的几版再交回给 Gemini,当作要超越的样本,循环接着转。
一个写,一个挑
做 AI 系统的工程师给这种安排起过名字。Anthropic 在 2024 年一份搭建 AI 系统的指南里,把它叫作评估者-优化者工作流:「一次模型调用负责生成回答,另一次负责评估和反馈,循环往复。」指南说,它适合「评估标准清楚、反复修改能带来可衡量的提升」的时候,就像作者一稿稿打磨一篇文章。
办公室里,这个循环早就在转。作者写初稿,编辑批改,作者再改;程序员提交代码,同事审阅后提修改意见。指南列的适用条件里藏着要害:循环好不好用,要看挑错的一方分不分得出好坏。
说不动的裁判
在 Borg 这件事上,挑错的既不是人,也不是另一个 AI 模型,而是那个模拟器。AlphaEvolve 团队写道,用代码打分,能让他们「在很大程度上避开大模型的幻觉」。模型可以为一个坏主意说出一套漂亮的道理,模拟器只报告这个主意跑出来是什么结果。
胜出的那版只有几行:把任务要的 CPU 和内存,分别除以每台机器剩下的量,再把两个比值合成一个分数。上线前,团队先用循环从没见过的近期任务数据检验了一遍。推到谷歌全部机群之后,按他们的说法,实测结果和模拟器一致:这个函数平均找回了谷歌全球约 0.7% 的计算资源。这是谷歌自己报的数。
长处也划出了边界。团队自己写道:「AlphaEvolve 的主要局限,是它只能处理能设计出自动评估器的问题。」系统也能让语言模型来提反馈,但他们说,「这不是我们优化过的用法」。
自动的裁判,也只量它被设计来量的东西。AlphaEvolve 最出名的成果,是用 48 次乘法算出两个 4×4 矩阵的乘积,比原来少一次。可这 48 次是复数乘法。纽约大学的计算机科学家欧内斯特·戴维斯(Ernest Davis)指出,一次复数乘法要花三次实数乘法,所以换成普通的实数矩阵,这个方法可能要 50 到 144 次。循环只会把给它的分数往上推;这个分数是不是你真正在乎的东西,循环回答不了。这是古德哈特定律换了个样子。
自己批自己的作业
如果挑错的和写稿的是同一个模型呢?2023 年,阿曼·马丹(Aman Madaan)带领的团队测试了一种叫 Self-Refine 的做法:同一个模型先写,再批评自己的稿子,然后修改。在从对话到数学推理的七类任务上,改过的结果比一次写成的平均高出约 20 个百分点。
同年稍晚,黄杰(Jie Huang)和同事专门看了推理题。他们发现,没有外部反馈时,模型「很难自我纠正回答」,而且「有时自我纠正之后,表现反而下降」。挑错的一方如果只知道写稿的一方知道的东西,可能把对的答案改成错的。
两项研究的任务和设置都不一样,合起来也说明不了自我修改什么时候管用;放到自己的活上,得实际试过、量过才知道。这里的建议是,给挑错的一方多一些依据:一个能跑的测试,一份可以比对的资料,一个模拟器,顾客真实的反应。每一样都带来写稿一方没有的信息。
一句口号改了六轮
设想一位市场主管,请文案写一句产品口号,再请同事帮忙把关。意见回来:再有劲一点。下一轮:太冲了,暖一点。六轮之后,口号和第一版差不多,谁也说不清哪一版更好。
几个人都尽了力,这个循环缺的是标准。动笔之前,她可以先写下这句口号要做到什么,比如八个字以内点出最大的好处,再请同事照这个来评。更好的办法,是拿两版放到一小部分真实流量上试一试,让数据来定。
不管是人还是 AI,几个习惯都有用。动笔前先写好标准。给挑错的一方一样写稿的人没法靠嘴辩赢的东西去核对。给轮数设个上限,让循环停得下来,别一直打转。定稿上线前,再拿循环从没见过的情况测一次,就像谷歌用近期的任务数据做的那样。
这个循环转得快,靠的是 Gemini 能一版接一版地提改法;结果能不能信,靠的是那个模拟器。