为什么要增量预训练(Pretrain)?

预训练学知识,指令微调学格式,强化学习对齐人类偏好;
所以要想大模型有领域知识,得增量预训练。

进行增量预训练需要做哪些工作准备?

1、模型底座选型
2、数据收集
3、数据清洗

增量预训练训练流程是怎样的?

1、数据预处理
2、分词器
3、原始模型
4、训练参数
5、观测训练进展
6、模型转换
7、模型测试

增量预训练一般需要多大的数据量?

首先要确保足够大的数据集,至少有几B的token;
否则几十条数据的情况土建使用模型微调;

增量预训练过程中,lr如何设置?

学习率是一个很重要的参数,因为lr的大小会出现以下问题:

  • 如果lr过大,那loss值收敛会更困难,旧能力损失的会更大;
  • 如果lr过小,那可能难以学到新知识;
    当数据集比较小的时候,建议使用较小的学习率。如果可以使用pre-train阶段最大学习率的10%。通常7B模型pre-train阶段的学习率大概是0.0001,所以我们可以选择0.00001。
    并且需要根据你的Batch size做相应缩放。通常lr缩放倍数为Batch size倍数的开方。比如Batch size增加4倍,学习率对应扩大2倍即可。

增量预训练过程中,warmup_ratio 如何设置?

通常LLM训练的warmup_ratio 是epoch*1%左右。例如pre-train阶段一般只训练一个epoch,则ratio是0.01;SFT通常3个epoch,ratio对应为0.03;
但是如果做CPT,建议warmup_ratio 调大一点。如果你的数据集很大,由几百B,那么warmup其实不影响最终的模型效果。但是通常我们的数据集不会很大,所以更小的ratio可以让模型“过渡”得更平滑。
学习率和warmup_ratio 是两个相辅相成的概念,二者通常是成正比例关系的。或者说如果你正在使用一个较大的学习率,那么你可以同时尝试增肌warmup来访时模型“烂掉”;

增量预训练中样本拼接的方式有哪些?

  • 拼接方式一:Random Concatenate
    将随机短文本拼接成以打满maxlen是pretrain的城建手段,该方法不仅你能够降低padding占比、提高训练效率,还能使LLM具备更好的长文本处理能力。绝大多数情况下构成example的多个examples彼此互不相关,无法提供有效的上下文信息,LLM自然也无法从拓宽的窗口中获得反馈。甚至在语料较少,分布比较集中时,LLM很有可能从多次,偶然的噪音共现中拟合到错误的特征。当然,如果语料足够多,分布足够广,LLM任然能够通过足够的contrastive,逐渐聚焦于example本身而非其他无关examples。此外,也有一些仍使用specialToken对example进行软隔离的方案,但没有额外的正则手段时,使用specialToken进行隔离或许只是鸡生蛋、蛋生鸡的死循环。

  • 拼接方式二:Random Concatenate + NoiseMask
    为了缓解拼接方式一所述的无关example间的噪音共现问题,笔者尝试添加自定义AttentionMask,使LLM在pretrain时仅关注当前example。但这种方式也存在一定的问题,相对位置编码(ALIBI、ROPE)的Token-wise相对位置信息会在AttentionScore矩阵对应位置有所体现,如果施加了attentionMask,这部分相对位置信息经过Softmax会被完全掩盖/误杀,也即LLM无法在BP过程中,从跨example间获得反馈(不论是相对位置的反馈还是语义信息的反馈)。因此在不考虑外推性的前提下,这种pretrain方法仍是在短文本窗口内进行训练,没有真正意义上实现maxLen级别的长文本训练,只能起到提高训练效率的作用。
    另外,尽管方式一没有利用AttentionMask,LLM是否能从无关example构成的窗口中获取对相对位置的正向反馈任然存疑(如果数据构成表现为远的都不相关,即便是灭有mask,LLM也倾向于忽略更远的tokens),或许这也是多数LLM在扩展maxlen之后,长文本支持效果任然很差强人意的原因之一。

  • 拼接方式三:Random Concatenate + Cluster
    鉴于方法二存在的问题,能否即不施加AttentionMask,也不能让LLM不受跨example干扰甚至于还能获益的方法呢?一个直观的想法就是以实体、语义等维度对example进行聚类,使构成同一个example的examples存在真实可靠的信息共享,从而LLM更加不容易从噪音中共现中学偏,也能从pretrain中适应更加广泛全局的Attention、从而具备更好的长文本处理能力。

  • 拼接方式四:IN-CONTEXT PRETRAINING
    基本思想是在拼接时,利用语义相似度,优先将最相似的进行拼接,从而构成语义更加连贯流畅的上下文,基本流程如下所示:
    1、将example Embedding化;
    2、基于余弦距离进行数据去重;
    3、基于旅行商思想,不断串联最相关的example;
    4、基于拼接后的example进行pretrain;

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐