Bendi新闻
>
大Batch训练大语言模型的探索与实践

大Batch训练大语言模型的探索与实践

11月前

©作者 | 牛信尧

研究方向 | 大语言模型



写在前面

最近在训练 language model 的时候发现了一个问题,在有很多卡的情况下,最有效提高训练效率的办法就是提高数据并行不论是提高 batch size 本身,还是通过梯度累计的方法)。在一些公开的训练方案中,可以找到了一些相关信息,如下:

GPT-3

larger models can typically use a larger batch size, but require a smaller learning rate. We measure the gradient noise scale during training and use it to guide our choice of batch size.

PaLM

For all models, we increase the batch size during training. For the largest model, we use batch size 512 (1M tokens) until step 50k, then double it to 1024 (2M tokens) until step 115k, and finally double again it to 2048 (4M tokens) until training is complete at step 255k. The smaller models followed similar schedules. The reason for using such batch size schedule is twofold: (1) smaller batch sizes are more sample efficient (i.e., better loss as a function of tokens seen) earlier in training, while larger batch sizes are beneficial later in training due to better gradient estimates (Smith et al., 2018; McCandlish et al., 2018), and (2) larger batch sizes result in larger matrix multiplication dimensions, which increases TPU efficiency. 


If the smaller model were trained using fewer TPU chips than the larger model, this would proportionally increase the wall-clock time of training, since the total training FLOP count is the same. If it were trained using the same number of TPU chips, it would be very difficult to maintain TPU compute efficiency without a drastic increase in batch size. The batch size of PaLM 540B is already 4M tokens, and it is unclear if even larger batch sizes would maintain sample efficiency.

MT-NLG

A large batch size can be an effective way of increasing compute efficiency, because it increases the arithmetic intensity of a kernel and helps amortize the time spent stalled on communication and synchronization. However, the batch size that a model can be trained with has an upper bound; using too large of a batch size can have negative effects on the model quality. Over the first 12 billion tokens, we started at a batch size of 32 and gradually increased the batch size in increments of 32, until we reach the final batch size of 1920.

GLM 130B

We warm-up the batch size from 192 to 4224 over the first 2.5% samples. The memory per processor is too small => Require too many pipeline stages => Batch size is too large (up to 12,000) => Harm the model’s convergency.

根据公开信息来看大家设定 batch size 的时候都是比较经验主义。然而,我们的实验结果发现显著增加 batch size 可能会引发一些问题。考虑到当前大模型超参调节成本极高,其中一个比较重点的问题是 batch size 应该如何与 learning rate(LR)一起变化。


一个常用的 heuristic 是 LR 应该与 batch size 的增长倍数的开方成正比,从而保证 variance 与梯度成比例的增长,但是我们实验中发现并非完全如此。因此,本文希望通过两篇早期的工作的分析和结论来探讨一下是否我们永远可以使用提高数据并行度来提高训练效率,以及 batch size 和 LR 的关系。


TL;DR


OpenAI 找到了一个 function 用来指导设置模型的 batch size。代表了在不同 loss 情况下,最优的 batch size 大小。这里,最优代表平衡了训练速度和 total compute,在设置小于这个值的 batch size 时,提升 batch size 可以获得更好的训练速度,在大于这个值的时候,继续提升并不会对(达到相应的 performance)需要的训练时间带来提升。


注意,这个结论与模型大小、任务种类(CV/NLP/RL)相关性较弱,但是和 learning rate schedule 非常相关。



增大数据并行度总能提高整体的训练速度吗?

当 batch size 较小时,更新方向(即对真实梯度的近似)会具有很高的方差,导致的梯度更新主要是噪声。经过一些更新后,方差会相互抵消,总体上推动模型朝着正确的方向前进,但个别更新可能不太有用,可以一次性应用(使用更大 batch size 进行更新)。


相反,当 batch size 非常大时,我们从训练数据中抽样的任何两组数据都会非常相似(因为它们几乎完全匹配真实梯度)。因此,在这种情况下,增加 batch size 几乎不会改善性能,因为你无法改进真实的梯度预测。换句话说,你需要在每一步中处理更多的数据,但并不能减少整个训练过程中的步数,这表明总体训练时间几乎没有改善。但是更糟糕的是你增加了总体的 FLOPS。

通过观察这些线性图,我们可以发现使用更大的 batch size 通常需要较少的训练 step。然而,这将相应地增加需要处理的数据。当 batch size 从 2048 翻倍时,达到同样性能所需要的 step 几乎没有任何改善,但你需要花费两倍的计算资源。Google 的经验研究也有类似的观察,即在在固定的 epoch budget 下,当 batch size 达到临界值时,模型的性能会 batch size 的增加而降低。可以如下说明:

这张图的结果也同样展示了,随着 Batch size 的增大,最优的超参数的范围也会变得更窄。


因此,各种结果表明似乎存在着一个关于数据并行程度的临界点,通过找到这个临界点,我们可以有效的平衡训练的效率和模型的最终效果。



Gradients, Batches, and the Gradient Noise Scale

OpenAI 发现最优步长 可能与 batch size 和噪声尺度 之间存在密切关系,其遵循以下形式:

在采用最优 step size 时,从含有噪声的梯度中获得的损失的最优改进现在变为:

从这些公式中我们可以得出两个结论:


  1. 无论我们如何准确地估计真实梯度,总存在一个最大步长

  2. 批处理大小越大,我们优化模型的步长就越大(有一个上限)

左侧的图表说明了为什么使用更大的批次模型可以取得更多提升。但是当 batch size 太大时,我们会遇到收益递减的问题(因为分母中的 1 开始占主导地位)。但是需要注意的事,这仅在学习率调整良好的情况下有效。因此,OpenAI 建议将学习率调整到一个相对接近最优值的数值是理论能有效的前提。

▲ Note that this image only represent a greedy process. But when the optimizing objective is ill-conditioned, the critical batch size would then be reduced as the noise is beneficial in this case.


在进行一些其他数学计算后,OpenAI 发现噪声尺度可以通过以下方式估计:

是相对于梯度的每个示例的协方差矩阵, 是真实梯度。为了进一步简化这个方程,OpenAI 作出了一个(不切实际的)假设,即优化是完全 well-conditioned 的。在这种情况下,Hessian 矩阵只是单位矩阵的倍数,噪声尺度简化就可以简化为以下形式:

他们经验上发现结果相当接近。该方程表明噪声尺度等于个别梯度分量的方差之和,除以梯度的 norm。OpenAI 使用以上结论在后续的 scaling law 工作中预测了模型的最优 batch size 大小。



Learning rate as temperature

前面的结论有提到一个前提,就是模型的 LR 是调的比较好的。这是因为 OpenAI 发现噪声尺度基本符合以下规律

在使用 SGD 和小 batch 进行更新时,可以大概近似为 这表明

以上内容,我们可以得知:


  1. 高温度导致较小的噪声尺度。其中的直觉是在高温度下,相对于方差,梯度幅度较大。
  2. 当学习率以一个常数因子衰减时,噪声尺度大致以相同的因子增长。因此,如果学习率太小,噪声尺度将被放大。



Batch size v.s. LR 的实验结论

Google 在实验中发现,几乎任何关于 batch size 和 LR 的 heuristic 都只能在某个范围内有效。同时,任何只为一个 batch size 调整 LR,然后使用 heuristic 选择其他 batch size 的 LR 的研究都会使被调整的 batch size(以及附近的 batch size)获得系统性优势。



写在最后

本文只是非常简略的总结了一下上面提到的两篇工作,当做自己前段时间一些工作的总结,对于追求细节的读者还是非常推荐去阅读一下论文本身。在做相关工作的同时,出现了一篇非常有意思的文章叫做 Chinchilla's Death, 其中通过对比不同模型的等效 GPU-Hours 提供了一个非常有意思的视角来看 scaling up 这件事情。


但是,结合这篇文章,同时考虑到小模型仅能通过数据并行来 scale up,该文中的诸多结论将不再成立。并且,随着获取算力的成本不断地降低,同时,可以用来训练模型的优质数据逐渐消耗殆尽,我们可能会观察到新的 paradim shifting.


参考文献

[1] Measuring the Effects of Data Parallelism on Neural Network Training

[2] An Empirical Model of Large-Batch Training



更多阅读



#投 稿 通 道#

 让你的文字被更多人看到 



如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。


总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 


PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。


📝 稿件基本要求:

• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注 

• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题

• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算


📬 投稿通道:

• 投稿邮箱:[email protected] 

• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者

• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿


△长按添加PaperWeekly小编



🔍


现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧


·
·
·

微信扫码关注该文公众号作者

来源:PaperWeekly

相关新闻

6月AI探索:深圳百位产品人集结,与实战专家共探AI大模型的行业落地实践从 CLM 启航:中国大模型的探索与未来​ACL 2024 | 新一代艺术媒介:探索基于大语言模型的互动戏剧国产算力训练大模型的经验与教训探讨大模型预训练与微调之间的相互作用万字干货!手把手教你如何训练超大规模集群下的大语言模型上海AI lab开源LLaMAX,用3.5万小时的A100训练让大模型掌握上百种语言翻译Reasoning3D:用大语言模型开启3D世界理解与交互的新篇章奥特曼谈AI的机遇、挑战与人类自我反思:中国将拥有独特的大语言模型ACL 2024 | 大语言模型的安全对齐会适得其反?无需训练便能逆转安全对齐大模型场景下智算平台的设计与优化实践大模型在金融支付 ToC 场景的应用探索:在技术创新与政策监管之间取得平衡大模型时代的工业质检:技术革新与实践探讨文末送书!大语言模型应用指南:以ChatGPT为起点,从入门到精通的实践教程大模型增强下的图智能在金融场景的应用与实践从头设计抗体,腾讯、北大团队预训练大语言模型登Nature子刊小模型狂飙!6家巨头争相发布小模型,Andrej Karpathy:大语言模型的尺寸竞争正在倒退...谷歌重磅:告别RAG,长上下文的大语言模型无需检索增强ACL2024主会:无需训练的大模型推荐系统!ICML 2024 | 探究知识编辑对大语言模型的近邻扰动大咖云集!首届大模型安全研讨会开启注册,共同探索大模型的安全边界大语言模型的创意"魔法":召唤隐藏的联想思维ACL 2024 | 多目标直接偏好优化MODPO:大语言模型的多目标对齐今日arXiv最热NLP大模型论文:清华大学:大语言模型的常见词僻意理解能力竟不如中学生
logo
联系我们隐私协议©2024 bendi.news
Bendi新闻
Bendi.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Bendi.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。