ubeee.cn
锐评随想··16 min

创业后,我非常尊重造benchmark的人

在 autoresearch 时代,"哪里是罗马"比"怎么去罗马"更重要——一个干净的 benchmark 有多必要,以及我为何愈发尊重那些造 benchmark 的人。

by Ube_e#Benchmark#创业#AI#数据

本文AI含量10%,主要用作图片处理/制作,以及将obsidian的内容转成富文本复制粘贴到公众号后台。阅读时间约为3分钟

这里的benchmark是广义的:既指狭义上LLM领域的各种benchmark,也包括各种带标签的数据集、数据竞赛。

AI圈子里已经很恨benchmark了,毕竟围绕这东西的乱象太多:写paper的找一个非常边缘的场景,造几个没有来源的指标即可水出一篇b会甚至a会论文,甚至自己都不管自己benchmark的准确性。

工业界的每次都号称自己的模型SOTA了,结果一看其实只是刷榜特化型模型。

不过这也没办法,如果要构造一个很好的benchmark,都需要大量的人工标注,而这东西成本又高,而且,很不体面。

在整个LLM就业鄙视链里,标注、数据、Eval...这一条线上的工作都属于最底端,似乎只有搞不了infra、post train、rl之类更“高端”一点工作的才会屈尊去做这块的内容。

但最近开始创业之后,才发现一个干净的bench有多必要。

条条大路通罗马

现在各种autoresearch的框架层出不穷,可以肯定的是能够不断自我调适以获得最佳算法的Agent已经不远了。只要一个数据集、一个bench存在,那么只要时间和算力足够,能在这个数据集上刷到最高分的算法/模型就必然会出现。曾几何时,HumanEval之类的benchmark还可以算作高难度bench,两年不到已经趋近饱和。

现在类似的工作真的可以被形容为“条条大路通罗马”,在LLM的辅助下,找到那条通往罗马的路变得越来越简单,路途也变得越来越短。

在这样的情况下,“哪里是罗马”才至关重要。

模型刷榜为什么被人厌恶?因为榜单和真实场景任务存在距离,榜单刷得再高对于真实任务也没什么用。你走上了一条通往罗马的路,结果发现其实是某个城市的“罗马花园”,这也不怪所有人都会急眼。

一个bench、一个数据集放在那里就应该被刷,或者说这些东西被制造出来就是应该被刷的。如果刷这个bench对真实世界无益,那这个bench有问题。

罗马在哪里?

很多人会把 Benchmark 想象成一个天然正确、天然存在的东西:输入、输出、标签、指标......什么都已经摆在那里,研究者和工程师只需要往上面跑模型就行。

实则不然。

在探索通往罗马的条条大道之前,你得先知道罗马是什么。

构造 Benchmark 的第一步应该是定义问题。到底什么样的数据算有效数据?什么样的数据应该被视为噪音?标签能否来自LLM?还是说必须专家标注?如果不同方面打的标签之间不一致,应该相信谁?如果一个样本现在看起来没有信息量,但未来可能和某种长期趋势有关,应该删掉还是保留?

我目前创业的领域是一个公开数据集存在,但数量不大的领域。这些数据集很干净,一看就是实验室环境中得到的数据:没有噪声、标签清晰......这个领域围绕这个数据集做了很多探索,用各种方法在这个数据集上获得高分,准确率一度达到九成以上。模型结构换一换,特征组合调一调,指标小数点后提升一点,看起来进展颇多。

刚进入这个领域时我内心狂喜,心想过往的科研实践那么多,效果那么好,岂不是我们只需要把这些算法落地即可。但现实问题是,这样过于干净的数据集得到的方法在真实世界中效果一般。

真实世界里数据没那么干净,各种没有标签的、格式不一致的、存在大量噪声的数据让那些科研界的方法很难起作用。

我们最终还是只能一条条地收集数据,一条条地去清洗、标注数据,然后摸索出一条自动处理数据的pipeline。至于算法更是困难,连一个合格的测试集都没有,谈何算法?训练集和测试集都需要自己手搓,而因为数据涉及物理世界,手搓的过程格外枯燥,还需要身体在场地去做一些“很苦”“很累”的活。

我们得先自己连滚带爬、灰头土脸地前往罗马看看,判断下这个是不是我们想去的罗马,非常狼狈。

不过如此劳累的好处是存在的。在一个垂类的场景中,我们收集数据的过程越累、越辛苦、越需要和大量的人打交道,那么先发者的优势越明显。创业被后来者居之的例子不少见,数据越容易收集、越没有门槛、和模型能力越接近的行业越常见。Cursor、Windsurf之类的公司就是例子,就算在Coding领域建立了足够先发优势,因为相关数据太容易被收集并且和模型能力过于重合,于是被模型厂商快速取而代之。Finance、Law、AI PPT等行业类似被吃掉的公司数不胜数。

甚至不用大厂,Vibe Coding已经成为一种创作的新范式,一旦不涉及数据,很多时候甚至可能直接被大量的个人开发者和同行迅速模仿蚕食。

当前的共识是垂直行业不会被巨头、同行给吃掉,确实如此,但“垂直”这件事其实很多人想得还是太宽了。“AI+Health”“AI+Medicine”“AI+Coding”都不是垂直行业,必须要涉及到不可重复收集的、依靠线下渠道的的数据,并且可以依靠这些数据建立明确benchmark的行业,才可以算作垂直,才有一线生机。

哪里是你应该去的罗马?

每个人、每家公司的标准、目标各异,那么benchmark也应该是不同的。

就像你想去意大利罗马,或许我就想去合肥市的罗马小区,那里附近有家好吃的正宗石家庄牛肉板面。二者都能实现你我的目标,很难说谁好谁坏。

但常识告诉我们,benchmark肯定有好有坏,那么决定其好坏的到底是什么?

我觉得有三点。

第一是可外推性。尽管benchmark的出现是为了衡量某一具体类型任务的表现,但其应该具有某种可外推性。一群人刷ImageNet,刷出来了AlexNet等一系列划时代的新范式,不只是推动了图像识别的发展。而为了达到这一点,bench的规模一定应该非常大,越大代表着能从这些数据中挖到的规律越多,越能够长出新一代的架构。

第二是抗刷性。一个好的benchmark,应该让针对它本身的优化和针对真实问题的优化尽可能地一致。听起来像是废话,但确实做到很难。ImageNet后来受到的批评之一就是模型开始学会利用背景纹理和标注噪声来提分,准确率数字好看,泛化能力却没有同步提升。一个好的benchmark,其数据分布、标签质量和评价指标应该让捷径无处可走,让模型只能老老实实地解决真实问题才能得高分。这在实验室环境里很难做到,但在真实世界数据前往往自然成立,因为现实的复杂性本身就是最好的防刷机制。

第三是与目标的对齐性。benchmark衡量的东西,应该和你真正在乎的东西是同一件事,这要求你在构造benchmark之前就已经想清楚建这个数据集到底要解决什么问题,成功的标准是什么。拿一个现成的数据集跑模型比定义问题容易太多了,因此很多人都会走思维捷径不去考虑这些。

又到了我最喜欢的比喻环节:一个好的罗马应该能让你在路途中有所收获、并且每次去都有新发现,同时有你所想要的东西。

尊重那些造benchmark的人

回到标题,我愈发尊重那些造benchmark的人,包括设置eval体系、打标、清洗数据、造pipeline……

本质上是在做一种熵减,在真实世界里强行划出一块秩序,告诉所有人"这里才是罗马"。没有这块秩序,后面所有的算法、模型、优化都是在黑暗里奔跑,跑得越快越危险。

我们自己的创业现在还在连滚带爬的阶段,bench还没造好,罗马还没找到,离成功很远。但那些脏活累活目前来看没有白费,知道那个"实验室九成准确率"没任何用。能把错误的罗马从地图上划掉,也算是一种进展。

而且我越来越觉得,随着autoresearch能力不断提升,通往任何一个罗马的路都会越来越短、越来越宽。到那时候,"罗马在哪里"将是那个值得争夺的问题。

让我们期待。