1. 背景
根据 Scaling Law,模型越大,高质量数据越多,效果越好。但还有一个很直观的情况,随着预训练样本的质量不断提升,训练手段的优化,新的模型往往能轻松反超参数量两倍于它的模型。
例如,最新出的 MiniCPM,在微信内部评测中效果非常出色。跟规模相对接近的 2B、7B 模型相比,得分比 Qwen2B 高,和 Qwen7B 比有的高有的低。这说明,在现有参数量情况下,哪怕是 2B 尺度,也并没有得到充分训练。
近期基于公开信息进行了关于大模型预训练的讨论,参与人员包括国内多个大模型团队的成员,基本上都是预训练为主。虽然部分细节涉及保密协议,但基于公开信息的沟通结论值得分享。
2. 样本
2.1 样本构成
大家已经达成一些基础的共识。如中英混合比例大家都大差不差。逻辑推理比较强的样本,像代码、数学,这种就是模型越大,混合的比例反而可以越高。
跟 SFT(Supervised Fine-Tuning)是类似的,越大的模型,越聪明的模型,需要的 SFT 数据就越少。同理,越大的模型,越聪明,复杂样本混合比例就可以越高。
2.2 样本质量
2.2.1 基本清洗
导致 PPL(Perplexity)崩掉的都要清洗掉,政治敏感数据清洗、去重等,肯定是一个很长的 Pipeline。大家比较一致的结论是,天工开源的那份预训练数据,是一个比较好的满足基础清洗要求的数据。
2.2.2 进阶清洗
跟 SFT 一样,产出各种各样的 Label 来刻画数据,有的公司实习生就优化几个 Label。不过随着优化的往后拓展,这些 Label 的投入产出比越来越难以评估。
2.2.3 PHI 式的生成 (Synthetic) 数据
预训练清洗的 Pipeline 搭建,对于开源团队、小公司来讲,成本其实还是蛮高的。所以,基于开源数据,做一些聚类的 Topic,然后基于这些 Topic,丢到更大的模型,来构建一批高质量的数据,是一个反而比较低成本的方案。
2.2.4 买数据
这次大模型除了李一舟卖课,卖数据的公司也是真的赚到钱了。
2.3 不同训练阶段的训练样本
经过讨论,发现有三种方案。
2.3.1 末期高质量样本(MiniCPM)
快速收敛阶段和平稳阶段,都采用普通样本。退火阶段,混入高质量样本来做教科书式的学习。
2.3.2 初期高质量样本
快速收敛阶段,以高质量样本为主,让模型快速收敛。平稳阶段,逐步调整比例,增加更多的普通样本。退火阶段,跟平稳阶段一致。
2.3.3 全程高质量样本(PHIL 方式)
全程都是高质量样本。
这里大家讨论得蛮激烈的,有这么几点:
- 初期就加入高质量样本,初期收敛的更快。但高质量样本少,不断的重复学习高质量样本,会不会导致过拟合?反方认为,人类的本质上就是复读机,特别对于小模型,不断的重复学习,好像也没太大问题。
- 初期学习高质量样本,会不会导致初期模型的初始化,局限在特定的区域,后面的普通样本学了之后,也不一定能很好的跳出来,会不会影响泛化?反方认为,末期加入高质量样本,反而会不会因为最后加入高质量样本,导致泛化能力受损,集中在高质量样本的领域?
- PHIL 方式,大家很快达成一致,PHIL 就是探索小模型能不能在特定领域达到 SOTA。好处,特定榜单/领域效果会特别好。坏处,模型泛化能力会很差(但 PHIL 从来没说要做世界模型)。
2.4 小模型样本的极限在哪?
到底喂了多少 Tokens,小模型参数才算是充分得到训练?当天讨论,并没有一个很好的结论。
最近 YI-9B 的公开技术文档,做了一个有趣的尝试。把每层的输入和输出算 Cosine Similarity,来评估模型是否训练的非常充分。但内部讨论后,发现这种尝试有一个巨大的遗漏点。
前段时间,我们做 Long Context 调研,也是把每层也都单独做了一个分析。结论是,如果模型深度足够的话,有些层其实区分度是在降低的,相当于几层做了一层做的事情。以及,另外一个可能,小模型每一层 Cos 都小,有可能每一层在干不同的事,或者每一层都会注意到新的东西。大模型某些层 Cos 大,有可能是因为句子太简单,大模型对结果更加肯定,靠后的层的功能没有被激活。
感觉这种评估方式,仍旧有一定的优化空间,也期待业内能公开更多好用的评估方式。
3. 训练
3.1 Tokenizer
小模型过大的 Tokenizer 的确是一种浪费。很多小模型有大 Tokenizer,一个潜在的可能性,作者人力不足,直接是把大模型的 Tokenizer 拿来复用了。


