从理论分析入手把握大规模神经网络优化的规律,可以指导实践中的超参数选择。反过来,实践中的超参数选择也可以指导理论分析。本篇文章聚焦于大语言模型,介绍从 GPT 以来大家普遍使用的训练超参数的变化。
规模律研究的是随着神经网络规模的增大,超参数、性能是如何改变的。规模律是对模型、数据、优化器关系的深刻刻画,揭示大模型优化时的普遍规律。通过规模律,我们可以用少量成本在小模型上验证超参数的选择和性能的变化情况,继而外推到大模型上。
在 LLM 中规模性常常变换模型大小和数据规模,进行大量调参而保持优化器不变。故对于大模型优化器而言,规模性是其性能很好的展现(性能上限)。设计更好的优化器(用更少的数据达到相同的性能)就是在挑战现有的规模律。
图片
超参最佳实践
我们首先回顾从 GPT 以来重要文章中使用的超参数,本文将不同模型的超参数列举在下方。首先,除了 Google 的 T5, PaLM 外,其它的模型都是用了 Adam 类的优化器(Adam 或 AdamW)。其次,超参数选择上的更新都是在前人的基础上慢慢变化,并被后续采纳的。这包括使用 dropuout、梯度范数裁剪(Megatron-LM),批量的动态变化(GPT-3),Adam (GPT-3)。
学习率:我们发现随着模型的增大,学习率越来越小。学习率与数据量、批量大小都没有明显的关系,且一般使用 左右的学习率。学习率的变化策略都包括 warmup 和衰减(decay)两阶段。目前普遍使用 GPT-3 中余弦衰减到原学习率的十分之一。谷歌则倾向于使用平方根衰减(优点之一在于不用提前知道训练步数)。
批量大小:训练使用的批量大小随着模型的增大也在不断增大,从 GPT 的 32k、BERT 的 128k,到 GPT-3 的 3.2M、LLaMA 的 4M。值得注意的是,GPT-3 的批量大小是从 32k 开始,在 12B tokens 的训练中逐渐增加到 4M 的,批量大小增加了 125 倍。
OpenAI 在论文中认为随着学习的进行,模型能够承载的批量大小快速增加。而后续很多工作直接使用了更大的批量。这可能是批量增大的过程只占总数据的 2%,即使直接使用最大批量也不会造成太大的问题。
权重衰减 /L2 正则化:在 L2 正则化(或 weight decay)上,GPT 与 BERT 都使用了正则化,后续的模型有些使用而有些没有使用。首先注意到,在 GPT 和 BERT 时代,数据量还是大于模型参数量的(over-parameterized),训练时也是使用多轮训练(multi-epoch)。
而随着人们意识到数据的重要性,数据量已经超越模型的参数量的(GPT3, 680B tokens, 175B params, under-parameterized),训练时也只使用了一轮训练(single-epoch)。根据 [ADV+23] 中的分析,在 over-parameterized 网络中使用 weight decay 相当于对优化器施加了潜在的正则;而在 under-parameterized 网络中,weight decay 只是改变了实际的学习率。随着网络训练权重的变化,相当于施加了自适应的学习率变化策略。
在本文的最后列举了不同模型的超参选择。其中 Adam 括号中的数字代表 ,sch 为学习率调整策略,bs为批量大小,L2 为权重衰减的 权重,init 为初始化方法。
图片
神经网络规模律
神经网络规模律(neural s