跳到主要内容

本周小抄:训练数据砍掉 95%,效果没掉

阿简
阿简

· 阅读约 5 分钟

10 月 8 号挂上 arXiv 的一篇论文,编号 2610.11727,做的是代码检索器的微调。

数据剪枝方面的论文,我一般直接跳过。一年几十篇,标题都长得差不多。这次让我停下来的是摘要里那个数:只用 5% 的训练数据,效果和全量微调持平,有些地方还更好。

简单说,就是这么一件事。

代码检索器可以理解成 RAG 里那个负责“找”的角色。模型本身不动,动的是它。它找得准不准,很大程度上取决于你拿什么语料喂它。常规做法是把仓库里的代码全量丢进去微调。

作者说这么干有问题。大规模代码语料本身带噪声和冗余,全量微调算力开销高,低质量样本还会把效果往下拉。论文用的词是负迁移。

那随机抽 5% 行不行。不行。随机保证不了代表性。

这句是整篇里最不显眼的一句,也是我认为最值钱的一句。后面再说。

他们做出来的框架叫 MAP4CS,全称 Multi-dimensional Awareness Pruning for Code Search。三个维度一起看:代码的句法结构、语义多样性、分布表示。先筛出一个规模不大但质量高的核心子集,再过一道基于规则的严格过滤。

作者七个人,第一作者 Yuxuan Chen,后面的名字我没去查。

声明一下,这篇我只读了论文本身,没跑它的代码,也没翻它的实现。下面讲的都是它自己报出来的数。数字对不对,得等有人复现,我先按它说的讲。

还有个细节。这篇在 arXiv 上同时挂在软件工程和人工智能两个分类下。AI 写代码这件事吵了这么久,学术分类自己先承认了这是个交界地带,两边都得算。跑题了,拉回来。

下面五条,是这期真正想让你看见的。

5% 的数据打赢随机采样,追平甚至超过全量

点评:这个结论的分量不在“省算力”。省算力是顺带的。分量在于它把“少即是多”从一句口号变成了一个能对打的数。数据为中心这条线喊了几年,拿得出来的硬数字一直不多。

随机采样被比下去,比 5% 这个数字更值得记

点评:大部分人做“精简”的时候,用的就是随机。删一半,跑一遍,还行就这么定了。这篇的意思是,随机选不出有代表性的子集,你得看着数据的结构去选。我的理解是,在语料上随机抽,抽出来的是主流写法的浓缩版,那些写得少见、但恰好是这个仓库特有的东西,先被抹掉。它那套三维度的方法你未必抄得走,这个判断可以直接拿走。

它是 v1,还没改过

点评:初稿,2700 KB 上下,8 号上午提交。初稿的意思是数字后面可能还会动。5% 我先记成“5% 上下”,不建议当定论去引用。

论文最后那段语言学分析,我只看懂一半

老实说,“冗余语料去重、混乱语料降噪、最后得到词汇多样信息密度更高的语料”这几句,我读了两遍还是只能抓住大意。它怎么判断该去重还是该降噪,我没吃透。先放在这里,等我搞明白再补。

别把 5% 到处套

点评:这篇做的是代码检索器的微调,两个数据集,任务很窄。你要是拿它去讲“通用大模型的训练数据砍掉 95% 也一样”,那是另一件事。论文没这么说,我也没这个意思。这条特意写出来,是因为我猜这两天会有人这么转。

写到这里得说清楚我为什么收这条。

微调这一步,看这份小抄的人里绝大多数碰不到。你自己搭不出代码检索器,也不需要搭。

但你每天都在做一个缩小版的决定:往 context window 里塞什么。

塞一整个仓库进去,和塞三个最相关的文件进去,出来的东西不一样。这个不用我讲,用过的人都有体感。

而且“减”这个方向,本来就比“加”难。加数据、加参数、加窗口,方向清楚,出了问题也知道往哪边推。减难,减错了没人告诉你错在哪,你只看到一个平平的效果,然后以为是自己别的地方调得不对。删这件事没有即时反馈,所以更吃判断。

这篇论文没教你怎么塞。它给的是一点点支撑:不是“少塞一点也许也行”,是“少很多,一样好,有时候更好”。

我一直觉得,AI 编程这几年真正对普通人有用的变化,不在模型那一侧。模型那一侧你看得见,插不上手。数据这一侧你天天在做,只是没人管它叫数据。

你写的 README,你的目录结构,你复制进对话框的那几段代码,你留下的注释。都算。都归你管。

这篇讲的是怎么给机器挑训练数据。换个尺子,讲的是同一件事。

本周就这些。

上面有任何一条你试过、或者觉得我讲错了,欢迎告诉我。讲错的我补,没讲清的我改。

下周见。

阿简
阿简

每周替你把 vibe-coding 圈的大事筛成一张小抄,被讲玄的概念一句话搞懂。

查看主页 →