争用之下

同行评审是乐观协议的验证阶段——而这个协议正在抖动

今年我在好几个主要的系统会议里担任程序委员,而在我手上那一摞 AI 系统方向的稿子里,大约有一半,我没法诚实地说自己评得像几年前那样好。顺着”为什么”想下去,我到了一个自己没有料到的地方:论文评审这件事,有某种根本性的东西已经变了,而且可能是永久地变了。下面是我为这个机制命名的一次尝试。

科研跑的是乐观并发控制

把人类的全部知识看成一个数据库。一个科研项目就是一个事务:读取文献的某个快照,在私有工作区里计算上几个月、甚至几年,然后把结果提交去验证。同行评审就是那个验证步骤——这份工作与已经提交的内容有没有冲突?它当初读到的东西,如今是否还新鲜?通过,结果便提交:发表、可见,成为后来每一个事务都能安心搭建于其上的东西。而一次错误的评审,就是一次糟糕的提交:写进错误的数据,为过期的数字盖章,或者悄悄污染了别人原本正确的数据。

这不是一个松散的比喻。它就是乐观并发控制,一个阶段对一个阶段——那个在 1981 年被写下来的协议:一个读取阶段,一个验证阶段,以及,若验证通过,一个写入阶段。它之所以叫”乐观”,是因为没有人加锁。所有人并行地算,”‘指望’事务之间不会发生冲突”——”指望”二字上的引号,是原论文自己加的。而当验证失败,事务”将被回退,并作为一个新的事务重新开始”——这件事,每一位被拒稿的作者都知道它的另一个名字:下一个截稿日。

科学能够承受这份乐观三百年,是因为科学曾是一个低争用的负载。很少有事务碰到同一行;它们一跑就是数年;它们极少相撞。提交阶段慢、靠人,而且够用。我职业生涯里有相当一部分时间花在造检查器上,判断并发事务能否串行化;这回轮到我自己了:事务就是我们。

负载变了

数据库领域在这个协议提出后没几年,就把接下来会发生的事量了出来:负载过了某个点,乐观方案便”开始抖动”——工作被浪费,事务不断重启,而重启本身又追加了负载。这就是我们的会议日程表。每一篇被拒的论文都会在下一个截稿日重新进入队列,而队列还在变长:OSDI ‘26 收到的投稿量是此前任何一年的两倍以上,并且第一次开成了多轨。

争用之所以上升,是因为事务变短了,而热点行变热了。多重独立发现从来都是常态,只是过去它们相隔数年,可以从容厘清。如今执行已经变得廉价,这些”多重”相隔数月落地,落在同一个评审周期之内——而且其中不少就挂在 arXiv 上,在任何委员会验证它们之前,就已被其他所有在途事务读到。对于读取从未提交的数据,数据库有一个专门的名字:脏读。

更糟的是,验证器本身已经给不出可靠的答案。即便在风平浪静的年月,它也是带噪的:机器学习社区把那个实验做过两次,2014 年与 2021 年,两次的结论都是——被一个委员会接收的论文里,大约有一半会被另一个独立委员会拒掉。而如今,验证器有一部分已经是机器:据一项估计,近期机器学习会议的评审意见中,有 6.5% 到 16.9% 被大语言模型实质性地改写过。一个靠猜的验证器会提交出损坏的数据,而损坏的数据不会安静地躺着:一个错误的数字一旦提交,就成了后面一百个诚实事务必须超越的基线。

论文发表将变成什么

乐观从来不是一种策略;它是一个关于负载的假设。 这个假设成立了三百年,如今不再成立。当这种事情发生在数据库身上,你不会把数据库扔掉。你会重新思考协议。

数据库花了四十年,发展出应对争用的种种答案。有意思的地方在于:我们这个领域已经在一条一条地采用它们了——不曾为它们命名,也从未真正决定过要用。

  • 加锁:想法一出现就去 arXiv 上插旗,赶在产物之前。
  • 分区:把领域切成一个个微型社区,二十位专家互相验证,每一片分区慢慢长出自己的真理。
  • 读未提交:引用预印本,因为引用图谱如今比验证早跑了好几个月。
  • 最终一致性:让社交媒体去承担那个八卦协议,让会议沦为一场追认仪式,追认这个领域上个春天就已消化完的结果。

这里的每一条,单独看都是理性的。而每一条,都交出了提交阶段之所以存在的那个保证——已提交的知识,可以直接拿来往上搭,不必自己再验一遍。

这就是那个取舍,而数据库从来没能绕过它:更弱的一致性,换来更高的吞吐。我们可以提交得更快,也可以提交得更有保证,但不能两者兼得。而这个领域眼下正在选择速度——一次一个变通地选。

如果这就是我们的选择,至少应当睁着眼睛去做,因为账单早已列好。血脉分叉:同一个结果的两个版本,都公开,谁也没跟谁对过账。重复提交:并行的论文实现着同一个想法,每一篇都诚实,谁也不算错。一份快速、新鲜、却不再可串行化的文献。

我不知道科学应该跑在哪一个隔离级别上。我只知道,这已经成了一个系统问题——而我们默认漂移过去的那个级别,很少会是我们本来会选的那一个。

参考文献