Callback LIMA
原文讲了啥
LIMA- Less Is More for Alignment 这篇文章的主要观点是:如果预训练模型已经习得了回答问题的基本能力(文章里的场景是 一般场景下的指令跟随的能力),1000个高质量数据也能激发模型获得比较好的指令跟随的能力
文章中指出的高质量主要是两个方面:
其一、多样性足够高,这不仅包括数据覆盖的领域广泛,还要求提问的方式多样化。例如,如果所有问题都采用“如何制作XX”这样的句式,就不符合多样性的要求。
其二、质量足够好,作者除了对数据的格式进行了处理和筛选以外,也选用了高赞答案等方法作为好的标准。
一些评价
- 首先这个结论是站得住脚的,同期的其他文章也基本复现了1000-1500个样本(做了基本的质量和diversity的控制)就能够让模型获得不错的指令跟随能力,我自己在23年中基于LLama1做指令跟随训练时候也得到了类似的认知。
- 其次就是这类文章有个问题,就是对什么是好的数据的这个问题的回答,采取的也是先设靶子再实验的方案。倒不是说这种思路不好,而是没有什么经验外的认知。
- 再者,这个文章的假设——预训练会让模型获得需要的知识和回答问题的大致模式这种能力,其实是个玄学假设。因为他难以简单直观的衡量和评价,所以在实际的领域中很容易造成一个鸡生蛋蛋生鸡的螺旋——我如果没有做到通过少量的数据让我的模型表现变好,那是我的数据质量还是没达标呢?还是我的模型本身能力上有缺陷?
3.1 从LIMO所做的隔代模型比较来看,预训练后的基础能力确实是瓶颈。(这点在比较实验上说)
3.2 但同样的,模型能力有瓶颈也不能证明准备的数据就没问题。 - 作者其实在数据工程上做了不少工作,但是这部分没被讨论太多。比如:
用stackexchage的数据做的所有处理选择都是一拍脑袋都想到的吗?
手工制作的样本的出发点又是什么?
这些工作其实在实际开发中有些是有启发意义的,不过作者没有深入的讨论
回到LIMO
内容总结
这篇文章其实也是从声明一个奇迹开始。817个样本超过o1
整个论文可以被简述为一句话:
我们在训练<数学推理>任务中,在<问题>和<COT答案>上都做了很细致的选择方案,由此得到了一个800多个样本数据集,并在测试指标上打败了高性能模型。
当然这是我的超级简化版,文章在方案层面主要介绍的,是他们在数据工程中的理念。
选择<问题>上的原则:
1. <难问题>优先:这个也是行业共识,多篇论文和多个团队都提到过。
2. 偏离预训练的数据分布更好:这点没有说是推理范式,还是知识范围,而且在对应的章节里其实没有实操上的体现,或者我没理解到作者的点,就很迷。
选择<答案>上的原则:
1. 推理步骤要<详略得当>:针对当前步骤的 难易度 而详略得当-->难的字多,简单的 字少
2. <补全>应有的概念解释: 避免突然冒出个概念(这个作者没写原因的,但实践中主要是这类推理过程容易滋长幻觉)
3. 存在频繁的<自我检查>:这个其实如果你看过GLM的推理过程你就发现,这个玩意儿也不是频繁就是好。
操作过程中怎么<选问题>
选难问题的步骤
1. 拿了个7B模型做题,做对的就不要了
2. 用deepseek-R1(等牛逼模型)当active learning里的不确定检测,找模型答对率不稳定的样本
3. 按数学知识域打散样本
其实个人感觉这里的细节还是少了点,就冲817这个值,就可以猜是通过种种filter做了多种threshold之后的结果。(不然这有零有整的数据怎么来的)
操作过程中怎么<选COT>
首先每个问题都得有那么多带COT的不同答案才有空间选
怎么搞到大量的待选COT
1. 样本集里的原答案
2. 人写的答案
3. 牛逼模型生成的答案:DeepSeek R1, DeepSeek
R1-Distill-Qwen-32B (deepseek文章中提到的用deepseek蒸的Qwen32B), and Qwen2.5-32b-Instruct
4. 自己训的<不同中间版本模型>的答案:相当于在一个模型的众多平行宇宙中采样
最讨厌的就是,到这儿,作者自己由此得证了(就好像什么东西发射完了没有弹药了一样……)
就给了这一句话
Based on these identified characteristics, we developed a hybrid approach combining rule-based filtering and
LLM-assisted curation to select high-quality solutions for each question identified in the previous section.
就我自己想应该是开发了一个比较复杂的Agent来做这个东西,而且可能ranker的方法也在训练中根据结果调整过。
文章的分析实验和其他观点
总共有几个:
- COT的质量对结果影响巨大
- 难问题更能让模型的效果变强
- 基座强则训练结果强
1 和 2 这两个观点其实是在预期之中的,也有其他同行的文章或者工作结论佐证。3这个观点是LIMO和LIMA假设的一种印证,见论文原图
AIME是难的测试集,MATH500相对简单点。这个图就是说Qwen1.5 基座能力比Qwen2.5要差,所以800个样本下去也没有能把模型训练得特别好。
这就是矛盾所在
Qwen2.5的技术报告里提到,人家构造了大量的数学推理数据做预训练。
??那这800个样本算啥??锦上添花?那大可不必吧。
通篇看下来其实数据工程之所以能做,恰恰是因为已经有大量的数学推理类的数据集存在。如果这些推理数据集不存在(比如实践中的特定场域),那数据应该怎么做?
这篇文章BUG的点就在于,既不能直接减轻数据构造过程中的工作量,也无法直接把一个基础能力不好的模型旱地拔葱。那我实际场景中,不行还是不行啊。
这从实践角度看LIMO这篇文章的观点就比较小丑了。(当然,还得套个盾,LIMO本身的思考过程、行文风格、实验分析都是非常不错的,上品文章。只不过这个观点……)
文章还在分析里说deepseek-R1这类方法是精细选择数据的一种特化,那没有人家用大量耗材做出来的特化模型,你这篇文章的内容也出不来啊。
Takeaway
在一个应用场景上,优先选择少量数据用以观察训练结果仍然是必要的。
如果确实结果比较好,反向印证了模型有一定能力完成目标场域上的任务,数据工程的重点就应该放在小而美上。
如果结果不太好,(后面这就是自己的心得了)要先检视模型能力的短板在哪儿——如果是模型本身就没有能力生成的,比如知识不会(缺少知识图谱类的知识是一种,缺少应对手册,对应及场景的思维路径等Action 类的知识也是一种),要先通过Pretrain把知识灌进去。然后再回到post-train的方案上进行小数据量微调。