0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何更好地继续预训练(Continue PreTraining)

深度学习自然语言处理 来源:NLP工作站 2023-09-11 16:28 次阅读

写在前面

预训练(Pretraining)是一个非常消耗资源的工作,尤其在 LLM 时代。随着LLama2的开源,越来越多人都开始尝试在这个强大的英文基座模型上进行中文增强。但,我们如何才能保证模型在既学到「中文知识」的情况下,又不丢掉原有的「英文知识」呢?

今天给大家带来一篇 Continue Pretraining 的论文(来自何枝大佬,知乎@何枝),Continual Pre-Training of Large Language Models: How to (re)warm your model?

知乎:https://zhuanlan.zhihu.com/p/654463331
paper//arxiv.org/pdf/2308.04014.pdf

1.实验设定

作者使用一个 410M 大小的模型 Pythia,已经在 Pile数据上进行过预训练,然后在下游数据集 SlimPajama 上进行微调。

论文中直接使用 Loss 作为评估指标,即 Loss 越小,说明在上游(或下游)任务中的效果越强。

Pythia:https://huggingface.co/EleutherAI/pythia-410m-v0
Pile:https://huggingface.co/datasets/EleutherAI/pile
SlimPajama:https://www.cerebras.net/blog/slimpajama-a-627b-token-cleaned-and-deduplicated-version-of-redpajama

2. 关键结论

2.1 warmup 的步数不会影响最终性能

warmup 是一种 finetune 中常用的策略,指学习率从一个很小的值慢慢上升到最大值。那么,这个「慢慢上升」的阶段持续多久是最好的呢?

作者分别使用训练步数的:0%, 0.5%, 1%, 2% 这 4 种不同预热步数来进行实验:9f4c7e86-5079-11ee-a25d-92fbcf53809c.png

从上图中可以看到:当模型经过「充分」训练后,不管多长的预热步数最后的性能都差不多。

但,这种前提是「充分训练」,如果只看训练前期的话,使用更长的预热步数(黄色的线)。无论是「上游任务」还是「下游任务」,模型的 Loss 都要比其他预热步数要低(下游学的快,上游忘的慢)。

2.2 学习率越大,下游任务越好,上游任务越差

为了探究学习率对学习效果的影响,作者使用了 4 种不同的最大学习率进行对比实验,

此外,还比对了和从头训练(from scratch)模型的效果:9f759a78-5079-11ee-a25d-92fbcf53809c.png

9f8cd580-5079-11ee-a25d-92fbcf53809c.png

从图中可以看到:经过充分训练后,学习率越大(紫色),下游性能最好,上游性能最差(忘得最多)。同样,我们看前期训练,尽管紫色线条在最后的 loss 是最低的,但在前期 loss 会增加的非常大,随后下降。

PS:解释一下这里为什么这么关注训练前期,是因为在真实训练中,我们可能不一定会增强图中所示的 250B 这么多的 tokens,尤其是在模型参数很大的情况中。所以,当资源不允许充分训练的情况下,较小的学习率和较长的 warmup 步数可能是一个不错的选择。

此外,图中还能看出:未经过预训练的模型(蓝色)无论是上游任务还是下游任务,都不如预训练过的模型效果。

这鼓励我们今天在进行训练任务时,最好选择一个已经过预训练的模型上继续训练(以利用其中的先验知识)。

2.3 在初始预训练中使用 Rewarmup 会损伤性能

尽管 warmup 策略在 Finetune 和 Continue Pretraining 中都起到了更好的效果(相较于常量学习率),但是,这建立在「切换了训练数据集(数据分布)」的前提下。

作者做了一个实验,不切换数据集,而是继续在之前的「预训练数据集(The Pile)」上继续训练:9f9f60e2-5079-11ee-a25d-92fbcf53809c.png

从图中结果可以发现:无论使用多大学习率的 warmup 策略,效果都不如使用常量学习率。

这进一步证明,在原数据集上使用 warmup 接着训练会造成性能损伤,学习率越大则损伤越大,且这种损伤是无法在后续的训练中被找回的。

PS:这里提示我们,当预训练中遇到了训练中断需要继续训练时,我们应该在重新开始训练时将学习率恢复到中断之前的状态(无论是数值还是衰减率)。

3. 实验限制

作者在论文的最后贴出了得出上述结论的一些局限性。

3.1 上下游数据分布类似

因为实验中选用的上游数据集 [Pile] 和下游数据集 [SlimPajama] 中存在一部分的数据重叠,

所以导致上下游数据的分布是比较相似的,但在我们真实的训练任务中,上下游数据的差异可能会比这大的多。

3.2 模型规模较小

论文中所使用的模型规模为 410M,这和今天人们 7B 起步的 LLM 规模相差甚远。

不过该团队打算在接下来的工作中继续在 3B 和 7B 的规模下进行尝试,期待他们最后的实验结论。



声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 模型
    +关注

    关注

    1

    文章

    3112

    浏览量

    48648
  • 数据集
    +关注

    关注

    4

    文章

    1200

    浏览量

    24618
  • LLM
    LLM
    +关注

    关注

    0

    文章

    263

    浏览量

    297

原文标题:如何更好地继续预训练(Continue PreTraining)

文章出处:【微信号:zenRRan,微信公众号:深度学习自然语言处理】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    【大语言模型:原理与工程实践】大语言模型的训练

    如此卓越的性能,就是通过其核心能力对海量数据进行训练,再进行微调或对其什么型更好的根据人类的指令和偏好,发挥这些性能。随着语言模型参数的不断增加,模型完成各个任务的效果也得到了不同程度的提升原模型
    发表于 05-07 17:10

    新的训练方法——MASS!MASS训练几大优势!

    专门针对序列到序列的自然语言生成任务,微软亚洲研究院提出了新的训练方法:屏蔽序列到序列训练(MASS: Masked Sequence to Sequence Pre-traini
    的头像 发表于 05-11 09:34 7051次阅读
    新的<b class='flag-5'>预</b><b class='flag-5'>训练</b>方法——MASS!MASS<b class='flag-5'>预</b><b class='flag-5'>训练</b>几大优势!

    训练语言模型设计的理论化认识

    Language Model)统一到一个框架中,并且基于它们的优势和缺点,取长补短,提出了一个新的训练语言模型----MPNet,其混合了MLM和PLM各自的优势,达到了比两者更好的效果,在Natural
    的头像 发表于 11-02 15:09 2650次阅读

    小米在训练模型的探索与优化

    导读:训练模型在NLP大放异彩,并开启了训练-微调的NLP范式时代。由于工业领域相关业务的复杂性,以及工业应用对推理性能的要求,大规模
    的头像 发表于 12-31 10:17 2541次阅读
    小米在<b class='flag-5'>预</b><b class='flag-5'>训练</b>模型的探索与优化

    Multilingual多语言训练语言模型的套路

    Facebook在Crosslingual language model pretraining(NIPS 2019)一文中提出XLM训练多语言模型,整体思路基于BERT,并提出了针对多语言
    的头像 发表于 05-05 15:23 2905次阅读

    利用视觉语言模型对检测器进行训练

    训练通常被用于自然语言处理以及计算机视觉领域,以增强主干网络的特征提取能力,达到加速训练和提高模型泛化性能的目的。该方法亦可以用于场景文本检测当中,如最早的使用ImageNet
    的头像 发表于 08-08 15:33 1335次阅读

    什么是训练 AI 模型?

    训练 AI 模型是为了完成特定任务而在大型数据集上训练的深度学习模型。这些模型既可以直接使用,也可以根据不同行业的应用需求进行自定义。 如果要教一个刚学会走路的孩子什么是独角兽,那么我们首先应
    的头像 发表于 04-04 01:45 1389次阅读

    什么是训练AI模型?

    训练 AI 模型是为了完成特定任务而在大型数据集上训练的深度学习模型。这些模型既可以直接使用,也可以根据不同行业的应用需求进行自定义。
    的头像 发表于 05-25 17:10 968次阅读

    PyTorch教程-15.9。训练 BERT 的数据集

    15.9。训练 BERT 的数据集¶ Colab [火炬]在 Colab 中打开笔记本 Colab [mxnet] Open the notebook in Colab Colab
    的头像 发表于 06-05 15:44 760次阅读

    基于一个完整的 LLM 训练流程

    进群,作者答疑、不错过直播 1.训练阶段(Pretraining Stage) 工欲善其事,必先利其器。 当前,不少工作选择在一个较强的基座模型上进行微调,且通常效果不错(如:[alpaca
    的头像 发表于 06-29 10:08 1873次阅读
    基于一个完整的 LLM <b class='flag-5'>训练</b>流程

    KUKA机器人CONTINUE指令介绍

    CONTINUE 可防止将在下面的程序行中出现的进停止。
    发表于 07-31 17:32 2379次阅读

    基于生成模型的训练方法

    with Deep Generative Models,我认为是个挺强挺有趣的自监督方面的工作。DreamTeacher 用于从训练的生成网络向目标图像 Backbone 进行知识蒸馏,作为一种通用的
    的头像 发表于 08-11 09:38 1186次阅读
    基于生成模型的<b class='flag-5'>预</b><b class='flag-5'>训练</b>方法

    训练模型的基本原理和应用

    训练模型(Pre-trained Model)是深度学习和机器学习领域中的一个重要概念,尤其是在自然语言处理(NLP)和计算机视觉(CV)等领域中得到了广泛应用。训练模型指的是在大
    的头像 发表于 07-03 18:20 2054次阅读

    大语言模型的训练

    能力,逐渐成为NLP领域的研究热点。大语言模型的训练是这一技术发展的关键步骤,它通过在海量无标签数据上进行训练,使模型学习到语言的通用知识,为后续的任务微调奠定基础。本文将深入探讨大语言模型
    的头像 发表于 07-11 10:11 364次阅读

    训练和迁移学习的区别和联系

    训练和迁移学习是深度学习和机器学习领域中的两个重要概念,它们在提高模型性能、减少训练时间和降低对数据量的需求方面发挥着关键作用。本文将从定义、原理、应用、区别和联系等方面详细探讨
    的头像 发表于 07-11 10:12 694次阅读