AI的“预制菜”难题:揭秘回答不稳定的真凶

引子

今天看到Thinking Machines(没错,就是那个天使轮就融了20亿美金的公司…)发布了一篇深度长文,主题是AI领域一个长期存在的“玄学”问题:为什么我问AI同一个问题,它每次给的答案都可能不一样?

由于原文写的还是很技术的,所以我尝试用厨房和菜品稳定性来做类比将其中的核心思想做个总结。正好其中部分比喻也能匹配一下今天罗永浩与西贝创始人贾国龙因“预制菜”问题在社交媒体上制造的热点。


如果我们将AI大模型类比为一个拥有超级厨师(强大的计算芯片)的未来厨房。

问题:为什么每次点的“菜”味道都略有不同?

当你点同一道菜时:例如“给我介绍一下理查德·费曼的生平”,并且特别告诉厨师:“不要即兴发挥,严格按照菜谱来”(也就是把AI的temperature参数设为0)。

但奇怪的是,你今天尝到的这道菜和昨天尝到的,味道总有那么一丁点的差别。明明是同一个厨师,同一个菜谱啊?

普遍的误解:是厨具的问题吗?

很多人会猜:“哦,可能是因为厨房用的高科技锅具(GPU芯片)太复杂了,每次加热的分子运动都不同,所以导致味道有细微差别。”

Thinking Machines的这篇文章告诉我们,这个猜测不完全对。真正的“真凶”在于厨房如何批量处理订单

这个超级厨房为了效率,不会一张订单一张订单地做菜。它会把收到的订单攒成一波,然后一起处理。这一波订单,就叫一个“批次”(batch)。

  •  情况一:厨房不忙。 你的订单来了,厨房里没别的单子,厨师就单独为你开了一个小锅来做这道菜。
  •  情况二:厨房很忙。 你的订单和另外几十张订单一起来了。厨师为了快,就用一个超大的锅,把几十份菜一起烹饪了。

关键就在这里:用小锅单独炒出来的菜,和用大锅一起炒出来的菜,哪怕菜谱完全一样,最终的味道也会有极其微小的差异。

你作为点菜的人,根本不知道你的订单被送进厨房时,厨房是忙还是闲。所以你也不知道你的菜是“小锅单炒”的还是“大锅合烩”的。正是这种处理订单数量的随机性,导致了你每次尝到的味道都不一样

解决方案:给“厨房”定下铁律

研究人员做的事情,就是给这个厨房定下了一条铁律:

“从现在开始,不管忙不忙,哪怕只有一份订单,也必须用那个最大的锅、按照完全相同的流程来做菜。”

这样一来,虽然在只做一份菜时会显得有点浪费和低效,但这保证了每一份出锅的菜,味道都绝对一模一样

效果与代价

  •  完全一致:新规矩实施后,在测试中对同一个问题提问1000次,每次都得到了分毫不差的答案。
  •  效率稍降:当然,这种“铁律”是有代价的,会让厨房的整体出菜速度稍微慢一点。
  •  意外的好处:这个方法还能帮助AI研究员更好地训练其他AI。因为保证了“食材”(数据)在处理过程中的味道(计算结果)绝对一致,训练过程就更稳定、更可靠了。

总结

AI回答不稳定的“玄学”问题,根源其实很“接地气”。不是AI本身在胡思乱想,而是它在处理我们这些用户的请求时,为了效率而采用的“批量处理”方式所带来的一个小小副作用。

而现在,Thinking Machines通过这篇文章,不仅给我们科普了背后的原理,也证明了他们有能力去实现这种“味道绝对一致”的最高标准 - 这或许就是他们值120亿美金的原因之一吧。

原文:Defeating Nondeterminism in LLM Inference