AI summary
type
status
date
slug
summary
category
tags
icon
password
💡
预训练模型表现影响因素?
  • 模型表现强依赖于模型规模(模型参数量N(Embedding除外)、训练Token数D、训练总计算量C);
  • 平滑幂定律:模型表现与三个因子均遵循幂定律,不受另外两个因子限制;
  • 在给定计算量预算下,模型参数量以及训练Token数应该同比提升
总体来说,这些结果表明,随着适当地提高模型大小、数据和计算能力,语言建模性能会平稳、可预测地提高。
💡
预训练数据 token 重复是否影响模型性能?
  • 多轮epoch的训练会降低模型性能;
  • 更大规模的数据集会缓解重复epochs对模型性能下降的影响;
  • 提高数据集的质量也无法挽救重复训练带来的过拟合;
  • 小计算量模型的过拟合趋势与大计算量的差不多;
  • 多样的训练目标不一定减轻多Epoch的性能下降;
  • Dropout是一个被大语言模型忽视的正则技术,虽然慢,但是可以降低多epochs的影响;
  • 在训练过程中逐渐使用dropout是有效的策略;
💡
SFT 需要训练 token 数?
少量高质量、多样性的数据,也可以训练出效果优秀的SFT模型。
💡
为什么要考虑在重复的数据集上做多次训练?
在此前的研究中,大家发现大语言模型的规模和训练数据集中tokens的数量对模型的性能有很大的影响。大模型扩展定律都认为模型的规模与训练数据的规模必须同时扩大才能让模型产生更好的性能。但是,tokens数量似乎并不是很足够。
高质量文本中tokens数量每年增长只有4%-5%,与世界经济增长率差不多,但是显著慢于模型规模的增长。
这就很自然的让大家想到,我们是否可以通过增加训练的epochs来做重复的训练,以提高模型的效果? 在如Vision Transformers这样的模型中,模型训练的epochs高达300次,而大语言模型的训练epochs通常都是1-2次,多的也都是个位数。2022年,Hoffmann的论文中提出用重复的tokens训练大语言模型会让模型降低性能,而Taylor在训练Galactica模型时候发现epochs次数达到4次也可以提升模型效果。显然,在重复数据集上训练多次对模型的影响目前还没有一个相对完善的研究,但是这个问题很重要!
因此,新加坡国立大学的研究人员做了这项研究,系统性分析了大语言模型epochs的设置影响,从3个方面得出了11个结论!本文将主要总结一下这些结论。
作者使用了开源的数据集和模型做了很多测试,对于实验设置我们不再描述。
💡
预训练数据集重复的影响是什么?
  • 模型参数规模与tokens数量需要匹配
首先是模型参数规模的增长与模型需要的tokens数量基本是呈线性的。这意味如果你要充分训练一个LLM,需要根据它的参数数量来收集足够的tokens
  • 多轮epoch的训练会降低模型性能
数据集重复的次数越多,模型的性能越差。此外,如果tokens数量不够,模型参数规模越大,越容易出现过拟合的现象。
💡
影响多次epochs训练效果下降的原因是什么?
  • 更大规模的数据集会缓解性能下降
  • 提高数据集的质量也无法挽救重复训练带来的过拟合
  • 参数数量和FLOPs在重复训练上的影响
模型规模的增长其实表现在2个方面,一个是模型参数,一个是模型所需要的计算量。模型参数相同的情况下,采用不同的模型架构所需要的FLOPs是不同的。作者对比了MoE架构,并采用ParamShare方法降低相同参数模型的FLOPs。
经过测试发现,FLOPs较大的模型性能会更好一点,但是依然无法有效降低重复训练带来的模型损失
  • 小计算量模型的过拟合趋势与大计算量的差不多
这是一个有趣的发现,尽管在前面的实验中,相同参数规模不同计算量的模型都会受到重复数据集训练的影响。但是二者在模型性能表现的趋势上类似。
这意味着我们可以利用较低计算量的模型预估大模型的训练结果。在大语言模型的训练中,训练成本很高。采用类似的模型,但是更低的计算量来预估模型的表现将十分有价值!
  • 多样的训练目标可以减轻多Epoch下降吗?
目前大语言模型的训练目标有很多,例如预测下一个单词是神什么的生成式目标,也有把单词masked之后用来判断是什么单词的判别式目标。如果语言模型的训练目标多样化,那么实际上更加可能受到多epoch带来的性能损失
例如,UL2这种模型就不适合多Epoch的训练,MLM这种模型受到的影响反而更小。
UL2(Unified Language Learning)是一种 统一的预训练框架,由 Google 提出,旨在 同时支持多种不同的语言建模任务。UL2 主要用于 大规模预训练,并在 生成式(Generative)、填空式(Cloze)、判别式(Discriminative) 任务上都表现良好。
UL2 采用 三种不同的预训练目标,并通过 混合策略 进行训练:
  1. R-denoising(Regular Denoising)
      • 类似于 BERT 的 MLM(Masked Language Model),即 随机掩码部分 token,然后让模型预测被掩码的 token。
      • 适用于 判别式任务(如文本分类)。
  1. X-denoising(Extreme Denoising)
      • 类似于 T5 的 Span Corruption,即 随机掩码较长的文本片段,然后让模型填补缺失部分。
      • 适用于 填空式任务(如填空问答)。
  1. S-denoising(Sequential Denoising)
      • 类似于 GPT 的自回归(Autoregressive, AR)目标,模型接收前缀上下文后,自回归生成后续内容。
      • 适用于 生成式任务(如文本生成、对话)。
UL2 通过 Mixture-of-Denoisers(MoD) 训练策略,在训练过程中 随机选择不同的目标,使模型能够适应不同的任务类型。
为什么 UL2 不适合多 Epoch 训练?
  • 生成式任务(S-denoising)对多 Epoch 训练更敏感
  • 训练目标的混合可能导致不稳定
    • UL2 需要在不同的任务之间进行平衡,如果训练时间过长,某些任务(如 S-denoising)可能会主导训练,导致模型在其他任务上的表现下降。
    • 多 Epoch 训练可能会破坏这种平衡,使得模型在某些任务上表现更好,但在其他任务上退化。
💡
正则化可以降低多 epochs 的影响吗?
正则技术,如dropout、droppath、weight decay等都是常用的防止过拟合的技术。而多Epochs的负面影响也都是过拟合。因此,作者研究了这些正则技术是否可以降低多epochs的影响。
  • Dropout是一个被大语言模型忽视的正则技术,虽然慢,但是可以降低多epochs的影响
在目前超过100亿参数规模的大语言模型中,如GPT-3、PaLM、LLaMA等,都没有使用dropout(可能是因为太慢了)。而前面说的Galactica训练使用了,这是Galactica能够训练4Epochs提升性能的最重要的原因。
  • 在训练过程中逐渐使用dropout是有效的策略
在前面的讨论中,作者已经发现dropout可以降低多epochs的影响,但是dropout会降低模型的性能。因此,作者考虑不在全部训练中使用dropout,而是逐渐引入。
最终发现,如果前期训练不用dropout,在后续的迭代中使用dropout也是有效的
  • dropout对不同规模模型的影响不同
尽管前面已经证明dropout使用可以降低多epochs的影响,但是在不同规模模型下是不同的。对于规模较大的模型,dropout不能有效降低多epochs带来的坏处!