14 Nov

当Batch Size增大时,学习率该如何随之变化?

随着算力的飞速进步,有越多越多的场景希望能够实现“算力换时间”,即通过堆砌算力来缩短模型训练时间。理想情况下,我们希望投入$n$倍的算力,那么达到同样效果的时间则缩短为$1/n$,此时总的算力成本是一致的。这个“希望”看上去很合理和自然,但实际上并不平凡,即便我们不考虑通信之类的瓶颈,当算力超过一定规模或者模型小于一定规模时,增加算力往往只能增大Batch Size。然而,增大Batch Size一定可以缩短训练时间并保持效果不变吗?

这就是接下来我们要讨论的话题:当Batch Size增大时,各种超参数尤其是学习率该如何调整,才能保持原本的训练效果并最大化训练效率?我们也可以称之为Batch Size与学习率之间的Scaling Law。

方差视角

直觉上,当Batch Size增大时,每个Batch的梯度将会更准,所以步子就可以迈大一点,也就是增大学习率,以求更快达到终点,缩短训练时间,这一点大体上都能想到。问题就是,增大多少才是最合适的呢?

点击阅读全文...

18 May

基于量子化假设推导模型的尺度定律(Scaling Law)

尺度定律(Scaling Law),指的是模型能力与模型尺度之间的渐近关系。具体来说,模型能力我们可以简单理解为模型的损失函数,模型尺度可以指模型参数量、训练数据量、训练步数等,所谓尺度定律,就是研究损失函数跟参数量、数据量、训练步数等变量的大致关系。《Scaling Laws for Neural Language Models》《Training Compute-Optimal Large Language Models》等工作的实验结果表明,神经网络的尺度定律多数呈现“幂律(Power law)”的形式。

为什么会是幂律呢?能否从理论上解释呢?论文《The Quantization Model of Neural Scaling》基于“量子化”假设给出了一个颇为有趣的推导。本文一同来欣赏一下。

点击阅读全文...