MeCo——给预训练数据增加源信息,就能减少33%的训练量并且提升效果
前言
最近看到一篇预训练的文章,只在每条预训练数据的前面加上一个源信息(即是该信息的URL信息),就能加速训练(+33%)并且提升下游任务的效果,本文进行阅读笔记。 如有谬误请见谅并联系指出,本文遵守CC 4.0 BY-SA版权协议,转载请联系作者并注明出处,谢谢。
- 关键字:大模型预训练、源信息、加速训练、提升效果
∇ \nabla ∇ 联系方式:
- e-mail: FesianXu@gmail.com
- github: https://github.com/FesianXu
- 知乎:https://www.zhihu.com/people/FesianXu
- 微信公众号:机器学习杂货铺3号店
最佳阅读体验见: https://fesianxu.github.io/2025/01/11/MeCo-20250111/
Danqi Chen 在最新提交在Arxiv上的文章 [1] MeCO指出,如Fig 1所示,只需要在预训练数据的起始位置加上一个来源信息(URL),然后在最后10%的预训练中除去这个URL信息进行常规的预训练,这么一个简单的操作,对比常规的预训练过程就能获得下游任务的性能提升,并且训练加速33%。
作者通过实验发现,这个提升能够稳定地在多个尺寸的LLM(600M、1.6B、3B、8B)中保持,有理由相信是一个普适的方法。整个方法也很简单,分为两个阶段:
- 在预训练前面的90%的训练过程中,在所有预训练数据中,在其起始处拼接上
URL:xxxx \n\n
的模板,其中的xxxx
被称之为源信息(source infomation),是具体表示该数据来自于哪个URL的信息,可以是原始的URL,比如en.wikipedia.org
,也可以是URL hash,甚至可以是第三方模型对该数据的分类信息, 后面的消融实验中验证不同源信息方式的效果。注意,在loss计算过程中,只计算原始的文档token的损失,而对新增的源信息进行掩膜。 - 为了让预训练模型能在不带有源信息的情况下使用,在最后训练量的10%中,作者将源信息去掉,然后进行常规的预训练操作,这个过程被称之为『冷却』(cooldown)。
作者做了一些试验验证该方法的有效性,为了充分验证,作者选取了10个下游任务数据集,如Fig 2所示,MeCo表示本文提出的方法,采用了160B的token训练量(比起Standard的240B的训练量,减少了33%),其中Standard表示采用DCLM预训练数据集的常规预训练过程,+Data sel
表示采用了数据筛选方法(采用fastText文本分类器进行文本质量过滤,只选取前70%的样本,保留约160B的token),而+80B tokens
表示对齐Standard的训练量,也就是在做了数据筛选的前提下进行继续训练,补齐训练量(笔者注:我个人的理解,文章里面并没有描述的很清楚)。
从结果来看,如果从预训练本身的维度,观察困惑度(PPL)指标,那么+80B tokens
的效果是最好的,但是有趣的是,困惑度指标和下游任务指标并不是强相关的,这个从采用Standard
和+Data sel
的对比上也能看出来。在下游任务中,表现最好的是本文提出的MeCo方法,平均获得了1个点的提升,而且对比基线采用的240B的训练量,只需要160B的训练量,节省了33%的训练成本。
数据Scaling试验:
我们再看到Fig 3, 具体看到对比标准预训练方式和MeCo方式,训练量和各个数据集下游表现(作者只挑了表现正向的数据集),能看出是随着训练量的提升,下游效果也是持续提升的,且MeCo的性能持续优于标准方法,这个证实了这个方法的稳定性,即是不依赖与特定的训练量后才能发挥效果,而是持续生效。
模型Scaling试验:
作者还对比了不同尺度模型的表现,如Fig 4.所示,从结果中能发现在不同尺度的模型(600M、1.6B、3B、8B)上,MeCo这种训练方式均提供了一致的正收益趋势。
由于以上的试验均采用的是DCLM这个预训练语料,为了探究MeCo是否在其他语料上也能同样生效,如图Fig 5所示,作者在C4、RefinedWeb上补充了这个试验,同样都能发现MeCo带来的下游任务的收益。
有趣的是,采用了MeCo与训练后,模型还具有所谓“条件推理”(conditional inference)的能力,如Fig 6所示,只需要在特定的任务下,添加一个适当的URL前缀(这个URL并不需要是一个真实的URL,只需要在语义上能提供一些问题的分类或者需求信息),就能提升下游任务的效果。如Fig 7所示,一个合适的URL能带来大幅度的下游任务提升,但是一个不合适的url,则会带来大幅度的性能折损,笔者理解,从某种意义上说,这是一种meta prompt,对整个prompt的调性和类别、需求等进行了约束。
作者还做了消融试验去探讨URL前缀的选择方式,如Fig 8所示,最后发现采用URL是最合适的,采用Full URL会带来输入长度的增长,效果没有明显变化,而采用了hash的URL则是性能持平(不过如果采用hash的话,条件推理的能力应该就没有了)。
笔者看下来,整篇文章的方法是很简单的,主要是做了很多试验去证实这个方法的有效性。从方法本身去看,也从某种意义上说明了对预训练数据进行某种标签体系分类的重要性,当然之前很多工作可能会尝试显式地进行数据打标签,并且通过数据配比的方式去影响预训练,而本文是一种隐式的方式去增加数据的类别信息,也即是增加一个来源信息,尝试让模型自己发现某些来源(比如维基百科)的信息可能更为靠谱。这里作者还举了一个例子,这说明了对于同一个主体Tim Cook
,不同来源的数据差别很大,有些可能是非严肃的梗图,有些可能是新闻信息,如果混淆在一起进行预训练,会对下游业务带来困扰(比如下游模型可能会迷惑Tim Cook到底是不是会做饭)。从这个角度去思考,这个方法就是非常合理的,因为来自不同站点的信息调性会有很大差别,作为一种元信息,有必要作为预训练输入的一部分参与训练。
例如,关于苹果公司首席执行官蒂姆·库克的网络文档,从表情包“蒂姆不再做饭了(Tim doesn’t cook anymore )” 到传记“蒂姆·库克是苹果公司的首席执行官”(Tim Cook is the CEO of Apple )都有。
Reference
[1]. Gao, Tianyu, Alexander Wettig, Luxi He, Yihe Dong, Sadhika Malladi, and Danqi Chen. “Metadata Conditioning Accelerates Language Model Pre-training.” arXiv preprint arXiv:2501.01956 (2025). Aka MeCO