数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 MCMC 采样
- 机器学习方法概论
统计学习
深度学习
- 深度学习简介
- 深度前馈网络
- 反向传播算法
- 正则化
- 深度学习中的最优化问题
- 卷积神经网络
- CNN:图像分类
- 循环神经网络 RNN
- Transformer
- 一、Transformer [2017]
- 二、Universal Transformer [2018]
- 三、Transformer-XL [2019]
- 四、GPT1 [2018]
- 五、GPT2 [2019]
- 六、GPT3 [2020]
- 七、OPT [2022]
- 八、BERT [2018]
- 九、XLNet [2019]
- 十、RoBERTa [2019]
- 十一、ERNIE 1.0 [2019]
- 十二、ERNIE 2.0 [2019]
- 十三、ERNIE 3.0 [2021]
- 十四、ERNIE-Huawei [2019]
- 十五、MT-DNN [2019]
- 十六、BART [2019]
- 十七、mBART [2020]
- 十八、SpanBERT [2019]
- 十九、ALBERT [2019]
- 二十、UniLM [2019]
- 二十一、MASS [2019]
- 二十二、MacBERT [2019]
- 二十三、Fine-Tuning Language Models from Human Preferences [2019]
- 二十四 Learning to summarize from human feedback [2020]
- 二十五、InstructGPT [2022]
- 二十六、T5 [2020]
- 二十七、mT5 [2020]
- 二十八、ExT5 [2021]
- 二十九、Muppet [2021]
- 三十、Self-Attention with Relative Position Representations [2018]
- 三十一、USE [2018]
- 三十二、Sentence-BERT [2019]
- 三十三、SimCSE [2021]
- 三十四、BERT-Flow [2020]
- 三十五、BERT-Whitening [2021]
- 三十六、Comparing the Geometry of BERT, ELMo, and GPT-2 Embeddings [2019]
- 三十七、CERT [2020]
- 三十八、DeCLUTR [2020]
- 三十九、CLEAR [2020]
- 四十、ConSERT [2021]
- 四十一、Sentence-T5 [2021]
- 四十二、ULMFiT [2018]
- 四十三、Scaling Laws for Neural Language Models [2020]
- 四十四、Chinchilla [2022]
- 四十七、GLM-130B [2022]
- 四十八、GPT-NeoX-20B [2022]
- 四十九、Bloom [2022]
- 五十、PaLM [2022] (粗读)
- 五十一、PaLM2 [2023](粗读)
- 五十二、Self-Instruct [2022]
- 句子向量
- 词向量
- 传统CTR 预估模型
- CTR 预估模型
- 一、DSSM [2013]
- 二、FNN [2016]
- 三、PNN [2016]
- 四、DeepCrossing [2016]
- 五、Wide 和 Deep [2016]
- 六、DCN [2017]
- 七、DeepFM [2017]
- 八、NFM [2017]
- 九、AFM [2017]
- 十、xDeepFM [2018]
- 十一、ESMM [2018]
- 十二、DIN [2017]
- 十三、DIEN [2019]
- 十四、DSIN [2019]
- 十五、DICM [2017]
- 十六、DeepMCP [2019]
- 十七、MIMN [2019]
- 十八、DMR [2020]
- 十九、MiNet [2020]
- 二十、DSTN [2019]
- 二十一、BST [2019]
- 二十二、SIM [2020]
- 二十三、ESM2 [2019]
- 二十四、MV-DNN [2015]
- 二十五、CAN [2020]
- 二十六、AutoInt [2018]
- 二十七、Fi-GNN [2019]
- 二十八、FwFM [2018]
- 二十九、FM2 [2021]
- 三十、FiBiNET [2019]
- 三十一、AutoFIS [2020]
- 三十三、AFN [2020]
- 三十四、FGCNN [2019]
- 三十五、AutoCross [2019]
- 三十六、InterHAt [2020]
- 三十七、xDeepInt [2023]
- 三十九、AutoDis [2021]
- 四十、MDE [2020]
- 四十一、NIS [2020]
- 四十二、AutoEmb [2020]
- 四十三、AutoDim [2021]
- 四十四、PEP [2021]
- 四十五、DeepLight [2021]
- 图的表达
- 一、DeepWalk [2014]
- 二、LINE [2015]
- 三、GraRep [2015]
- 四、TADW [2015]
- 五、DNGR [2016]
- 六、Node2Vec [2016]
- 七、WALKLETS [2016]
- 八、SDNE [2016]
- 九、CANE [2017]
- 十、EOE [2017]
- 十一、metapath2vec [2017]
- 十二、GraphGAN [2018]
- 十三、struc2vec [2017]
- 十四、GraphWave [2018]
- 十五、NetMF [2017]
- 十六、NetSMF [2019]
- 十七、PTE [2015]
- 十八、HNE [2015]
- 十九、AANE [2017]
- 二十、LANE [2017]
- 二十一、MVE [2017]
- 二十二、PMNE [2017]
- 二十三、ANRL [2018]
- 二十四、DANE [2018]
- 二十五、HERec [2018]
- 二十六、GATNE [2019]
- 二十七、MNE [2018]
- 二十八、MVN2VEC [2018]
- 二十九、SNE [2018]
- 三十、ProNE [2019]
- Graph Embedding 综述
- 图神经网络
- 一、GNN [2009]
- 二、Spectral Networks 和 Deep Locally Connected Networks [2013]
- 三、Fast Localized Spectral Filtering On Graph [2016]
- 四、GCN [2016]
- 五、神经图指纹 [2015]
- 六、GGS-NN [2016]
- 七、PATCHY-SAN [2016]
- 八、GraphSAGE [2017]
- 九、GAT [2017]
- 十、R-GCN [2017]
- 十一、 AGCN [2018]
- 十二、FastGCN [2018]
- 十三、PinSage [2018]
- 十四、GCMC [2017]
- 十五、JK-Net [2018]
- 十六、PPNP [2018]
- 十七、VRGCN [2017]
- 十八、ClusterGCN [2019]
- 十九、LDS-GNN [2019]
- 二十、DIAL-GNN [2019]
- 二十一、HAN [2019]
- 二十二、HetGNN [2019]
- 二十三、HGT [2020]
- 二十四、GPT-GNN [2020]
- 二十五、Geom-GCN [2020]
- 二十六、Graph Network [2018]
- 二十七、GIN [2019]
- 二十八、MPNN [2017]
- 二十九、UniMP [2020]
- 三十、Correct and Smooth [2020]
- 三十一、LGCN [2018]
- 三十二、DGCNN [2018]
- 三十三、AS-GCN
- 三十四、DGI [2018]
- 三十五、DIFFPOLL [2018]
- 三十六、DCNN [2016]
- 三十七、IN [2016]
- 图神经网络 2
- 图神经网络 3
- 推荐算法(传统方法)
- 一、Tapestry [1992]
- 二、GroupLens [1994]
- 三、ItemBased CF [2001]
- 四、Amazon I-2-I CF [2003]
- 五、Slope One Rating-Based CF [2005]
- 六、Bipartite Network Projection [2007]
- 七、Implicit Feedback CF [2008]
- 八、PMF [2008]
- 九、SVD++ [2008]
- 十、MMMF 扩展 [2008]
- 十一、OCCF [2008]
- 十二、BPR [2009]
- 十三、MF for RS [2009]
- 十四、 Netflix BellKor Solution [2009]
- 推荐算法(神经网络方法 1)
- 一、MIND [2019](用于召回)
- 二、DNN For YouTube [2016]
- 三、Recommending What Video to Watch Next [2019]
- 四、ESAM [2020]
- 五、Facebook Embedding Based Retrieval [2020](用于检索)
- 六、Airbnb Search Ranking [2018]
- 七、MOBIUS [2019](用于召回)
- 八、TDM [2018](用于检索)
- 九、DR [2020](用于检索)
- 十、JTM [2019](用于检索)
- 十一、Pinterest Recommender System [2017]
- 十二、DLRM [2019]
- 十三、Applying Deep Learning To Airbnb Search [2018]
- 十四、Improving Deep Learning For Airbnb Search [2020]
- 十五、HOP-Rec [2018]
- 十六、NCF [2017]
- 十七、NGCF [2019]
- 十八、LightGCN [2020]
- 十九、Sampling-Bias-Corrected Neural Modeling [2019](检索)
- 二十、EGES [2018](Matching 阶段)
- 二十一、SDM [2019](Matching 阶段)
- 二十二、COLD [2020 ] (Pre-Ranking 模型)
- 二十三、ComiRec [2020](https://www.wenjiangs.com/doc/0b4e1736-ac78)
- 二十四、EdgeRec [2020]
- 二十五、DPSR [2020](检索)
- 二十六、PDN [2021](mathcing)
- 二十七、时空周期兴趣学习网络ST-PIL [2021]
- 推荐算法之序列推荐
- 一、FPMC [2010]
- 二、GRU4Rec [2015]
- 三、HRM [2015]
- 四、DREAM [2016]
- 五、Improved GRU4Rec [2016]
- 六、NARM [2017]
- 七、HRNN [2017]
- 八、RRN [2017]
- 九、Caser [2018]
- 十、p-RNN [2016]
- 十一、GRU4Rec Top-k Gains [2018]
- 十二、SASRec [2018]
- 十三、RUM [2018]
- 十四、SHAN [2018]
- 十五、Phased LSTM [2016]
- 十六、Time-LSTM [2017]
- 十七、STAMP [2018]
- 十八、Latent Cross [2018]
- 十九、CSRM [2019]
- 二十、SR-GNN [2019]
- 二十一、GC-SAN [2019]
- 二十二、BERT4Rec [2019]
- 二十三、MCPRN [2019]
- 二十四、RepeatNet [2019]
- 二十五、LINet(2019)
- 二十六、NextItNet [2019]
- 二十七、GCE-GNN [2020]
- 二十八、LESSR [2020]
- 二十九、HyperRec [2020]
- 三十、DHCN [2021]
- 三十一、TiSASRec [2020]
- 推荐算法(综述)
- 多任务学习
- 系统架构
- 实践方法论
- 深度强化学习 1
- 自动代码生成
工具
- CRF
- lightgbm
- xgboost
- scikit-learn
- spark
- numpy
- matplotlib
- pandas
- huggingface_transformer
- 一、Tokenizer
- 二、Datasets
- 三、Model
- 四、Trainer
- 五、Evaluator
- 六、Pipeline
- 七、Accelerate
- 八、Autoclass
- 九、应用
- 十、Gradio
Scala
- 环境搭建
- 基础知识
- 函数
- 类
- 样例类和模式匹配
- 测试和注解
- 集合 collection(一)
- 集合collection(二)
- 集成 Java
- 并发
四十三、Scaling Laws for Neural Language Models [2020]
language
为人工智能的研究提供了一个天然的领域,因为绝大多数的reasoning task
都可以用语言有效地表达和评估,而且世界上的文本通过generative modeling
为无监督学习提供了大量的数据。最近,深度学习在language modeling
方面取得了快速进展,SOTA
模型在许多特定任务上的表现接近人类水平。人们可能预期语言建模的性能取决于模型结构、神经模型的规模、用于训练模型的算力、以及用于训练模型的数据。在论文
《Scaling Laws for Neural Language Models》
中,作者将实证研究language modeling loss
对所有这些因素的依赖性,重点是Transformer
架构。通过在语言任务上的性能的上限和下限,使作者能够研究scale
中超过七个数量级的趋势。在整个过程中,作者将观察到性能的精确的
power-law scaling
,其中性能作为训练时间、上下文长度、数据集大小、模型大小、compute budget
的函数。相关工作:
幂律(
power-law
)可以从各种来源产生。在密度估计(density estimation
) 模型和随机森林模型中,随模型规模和数据集大小有关的power-law scaling
可能与我们的结果有关。这些模型表明,幂律指数可能有一个非常粗糙的解释,即数据中相关特征数量的倒数。最近的工作
《Deep learning scaling is predictable,empirically》
、《Beyond human-level accuracy: Computational challenges in deep learning》
也研究了模型大小和数据大小之间的scaling
;他们的工作可能是文献中最接近我们的工作。然而,请注意,《Deep learning scaling is predictable,empirically》
发现数据集大小与模型大小的超线性scaling
,而我们发现的是亚线性scaling
。我们关于计算量的
optimal allocation
的发现和《One epoch is all you need》
之间有一些相似之处,包括power-law learning curve
。EfficientNet
似乎也服从于准确率和模型大小之间的近似的幂律关系。最近的工作
《A constructive prediction of the generalization error across scales》
研究了各种数据集的数据集大小和模型大小的scaling
,并符合与我们类似的分析方法。
EfficientNet
主张以指数方式scale
模型的深度和宽度,以获得图像模型的最佳性能,导致宽度作为深度的函数出现power-law scaling
。我们发现,对于语言模型来说,这个幂律在scaling up
时应该是大致为1
(即,width/depth
的比例应该保持固定)。但更重要的是,我们发现,与语言模型的overall scale
相比,精确的架构超参数并不重要。在
《Residual networks behave like ensembles of relatively shallow networks》
中,有人认为deep
的模型可以作为较浅的模型的ensemble
,这有可能解释这一发现。早期的工作
《Wide residual networks》
比较了宽度和深度,发现wide ResNet
在图像分类上可以胜过deep ResNet
。一些研究固定了每个数据样本的计算量(计算量往往与模型参数的数量成正比,固定这个值意味着固定模型大小),而我们研究的是与模型大小和
training computation
的scaling
。
许多研究(
《High-dimensional dynamics of generalization error inneural networks》
、《Reconciling modern machine learning and the bias-variance trade-off》
对高度过参数化的模型(highly overparameterized model
)的泛化进行了研究,发现当模型规模达到数据集规模时,会出现"jamming transition"
(《Scaling description of generalization with number of parameters in deep learning》
)(这可能需要超出典型实践许多数量级的training
,尤其是不使用早停)。我们没有观察到这样的transition
,并发现所需的训练数据在模型大小上呈亚线性scaling
。模型规模的扩展,特别是在large width
上的扩展,可能为思考我们的一些scaling
关系提供了一个有用的框架。我们关于
optimization
的结果(如学习曲线的形状),很可能可以用一个noisy
的二次模型来解释,它可以在现实环境中提供相当准确的预测(《Which algorithmic choices matter at which batch sizes? insights from a noisy quadratic model》
)。定量评估这种联系将需要海森谱(Hessian spectrum
) 的特性。
这篇论文直接看结论部分即可,剩余的大多数都是实验报告。
43.1 背景和模型
符号:
$ L $ :交叉熵损失。通常情况下,它将是一个上下文中所有token
的交叉熵损失的平均值,但在某些情况下,我们会报告上下文中特定位置处的token
的损失。 $ N $ :模型参数的数量,不包括所有vocabulary embedding
和positional embedding
。 $ C\simeq 6NBS $ :是对non-embedding
的training
总计算量的估计,其中 $ B $ 是batch size
, $ S $ 是training steps
数量(即parameter updates
)。我们引入PF-days
为单位,其中一个PF-days
表示 $ 10^{15}\times 24 \times 3600 = 8.64\times 10^{19} $ 次浮点运算。 $ D $ :数据集的大小,单位为token
。 $ B_\text{crit} $ :critical batch size
,在后续内容中定义和讨论。使用critical batch size
的训练提供了训练时间和计算效率之间的大致上的最佳trade-off
。 $ C_\min $ :对达到给定loss
的最小non-embedding compute
的估计。这是在模型以远小于critical batch size
的batch size
进行训练时将使用的training compute
。较小的
batch size
可以实现较小的计算量、但是需要较大的训练时间。 $ S_\min $ :达到给定loss
所需的最小training steps
数的估计。这也是如果模型在batch size
远大于critical batch size
的情况下所使用的training steps
数量。较大的
batch size
可以实现较小的训练时间、但是需要较大的计算量。 $ \alpha_X $ :对loss
缩放的幂率函数的指数,其中 $ L(X)\propto \left(1/X\right)^{\alpha_X} $ , $ X $ 可以为 $ N,D,C,S, B,C_\min $ 中的任意一种。
注,这里的
loss
函数是test loss
,而不是train loss
。我们在
WebText2
上训练语言模型,这是WebText
数据集的扩展版本,使用byte-pair encoding: BPE
进行tokenize
,vocabulary size
为 $ n_\text{vocab} = 50257 $ 。我们优化autoregressive log-likelihood
(即交叉熵损失),在1024-token
的上下文中取平均,这也是我们的主要性能指标。我们在WebText2
测试集、以及其它一些测试集上记录loss
。我们主要训练decoder-only Transformer
模型,尽管我们也训练LSTM
模型和Universal Transformer
以进行比较。模型的性能评估指标是测试集上的交叉熵损失。
a. Transformer 的参数 scaling 和计算量 scaling
我们使用超参数
$ n_\text{layer} $ (层数)、 $ d_\text{model} $ (residual stream
的维度)、 $ d_\text{ff} $ (中间feed-forward layer
的维度)、 $ d_\text{attn} $ (attention output
的维度)和 $ n_\text{heads} $ (每层attention head
的数量)对Transformer
架构进行参数化。我们在输入上下文中包括 $ n_\text{ctx} $ 个token
,除另有说明外否则默认采用 $ n_\text{ctx}=1024 $ 。我们用
$ N $ 来表示模型大小,我们把它定义为non-embedding parameters
的数量(推导过程参考Table 1
):其中,我们排除了
bias
项和其他次要的项。我们的模型在embedding
矩阵中也有 $ n_\text{vocab}\times d_\text{model} $ 个参数,并使用 $ n_\text{ctx}\times d_\text{model} $ 个参数进行positional embedding
,但我们在讨论 "模型大小" $ N $ 时不包括这些参数。我们将看到,这产生了明显更干净的scaling law
。评估
Transformer
的前向传播大致上包括 $ C_\text{forward}\simeq 2N + 2n_\text{layer}\times n_\text{ctx}\times d_\text{model} $ 个乘加操作(add-multiply operation
),其中系数2
来自于矩阵乘法中使用的multiply-accumulate operation
。下表中包含了更详细的每个操作的参数数量和计算次数。对于
$ d_\text{model} > n_\text{ctx}/12 $ 的上下文和模型,每个token
的context-dependent
的计算成本是总计算量的一个相对较小的部分。由于我们主要研究 $ d_\text{model} \gg n_\text{ctx}/12 $ 的模型,我们的training compute
的估计中不包括context-dependent
项。考虑到反向传播(大约是前向传播计算量的两倍),我们为每个training token
将估计的non-embedding compute
定义 $ C\simeq 6N $ 个浮点运算。对于
GPT-3 175B
, $ d_\text{model} = 12288 $ , $ n_\text{layer} = 96 $ , $ d_\text{attn} = d_\text{model} $ , $ d_\text{ff} = 4\times d_\text{model} $ 。因此只需要 $ n_\text{ctx} \lt 147456 $ 即可满足上述条件。
b. 训练过程
除非另有说明,我们用
Adam
优化器训练模型,其中训练了固定的 $ 2.5\times 10^5 $ 步,batch size
为512
个序列,每个序列包含1024 tokens
。由于内存限制,我们最大的模型(超过
1B
个参数)是用Adafactor
训练的。我们试验了各种学习率和
schedules
。我们发现,收敛的结果在很大程度上与learning rate schedule
无关。除非另有说明,我们的数据中包括的所有training runs
都使用了同一个learning rate schedule
,即:3000
步的线性预热,然后是余弦衰减学习率到零。
我们用各种学习率和
schedule
进行了实验。下图显示了一个小型语言模型的一系列schedules
和测试结果。我们的结论是,只要total summed learning rate
足够大,而且schedule
包括一个预热期、以及最后衰减到接近零的学习率,那么learning rate schedule
的选择基本上是不重要的。schedules
之间的方差似乎是统计学上的噪音,并为不同training runs
之间的方差的scale
提供一个粗略的衡量标准。在较大的模型上的实验表明,对于不同的模型大小,不同的随机种子之间的final test loss
的方差的幅度是大致不变的。我们发现,较大的模型需要一个较小的学习率来防止发散,而较小的模型可以容忍较大的学习率。为了实现这一点,在大多数
runs
中使用了以下经验法则:我们期望这个公式可以被改进。
可能存在对
network width
的依赖性,可能是由initialization scale
设定的。对于 $ N>10^{10} $ 个参数,该公式也会被打破。尽管如此,我们发现它对我们所考虑的模型有足够的作用。
c. 数据集
我们在
GPT2
中描述的WebText
数据集的扩展版本上训练我们的模型。最初的WebText
数据集是对Reddit
在2017
年12
月的外链(包含Reddit
用户的至少三个点赞)的网络爬取。在第二个版本中(即,WebText2
),我们增加了2018
年1
月至10
月期间的Reddit
外链,也是至少有3
个点赞的。karma
阈值(即,点赞的数量阈值)作为一种启发式方法,用于判断人们是否认为该链接有趣或有用。新链接的文本是用Newspaper3k python library
提取的。总的来说,该数据集由
20.3M
篇文档组成,包含96GB
的文本和 $ 1.62\times 10^{10} $ 个单词。然后我们应用GPT2
中描述的可逆的tokenizer
,产生 $ 2.29\times 10^{10} $ 个token
。我们保留了其中的 $ 6.6\times 10^8 $ 个token
作为测试集,并且我们还在类似的Books Corpus
、Common Crawl
、English Wikipedia
、以及公开的Internet Books
集合中进行测试。
43.2 实验结果和 Basic Power Laws
为了刻画
language model scaling
,我们训练了各种各样的模型,其中改变了一些因子,包括:模型大小:从
768
到1.5B
个non-embedding
参数。数据集大小:从
22M
到230B
个token
。模型
shape
:包括depth
、width
、attention head
、以及feed-forward dimension
。上下文长度:大多数
runs
设置为1024
,但我们也尝试使用较短的上下文。batch size
: 大多数runs
设置为 $ 2^{19} $ ,但我们也改变batch size
从而测量critical batch size
。
43.2.1 Transformer Shape
当我们固定
non-embedding
参数总数 $ N $ 时,Transformer
的性能对shape
参数 $ n_\text{layer}, n_\text{heads}, d_\text{ff} $ 的依赖非常弱。为了确定这些结果,我们用固定的模型大小来训练模型,同时改变一个超参数。
这对于
$ n_\text{heads} $ 的情况是最简单的:改变 $ n_\text{heads} $ 同时改变每个head
的维度,使得 $ d_\text{model} $ 保持不变。右图中,每条曲线对应于固定的
$ d_\text{model} $ 同时改变 $ n_\text{heads} $ 。当改变
$ n_\text{layer} $ 时,我们同时改变 $ d_\text{model} $ ,同时保持 $ N\simeq 12n_\text{layer} d_\text{model}^2 $ 固定。中间图中,每条曲线对应于固定的参数量同时改变
$ n_\text{layer} $ 和 $ d_\text{model} $ 。同样地,为了在固定的模型大小下改变
$ d_\text{ff} $ ,我们也同时改变 $ d_\text{model} $ 参数,这是由Table 1
中的参数数量所要求的。左图中,每条曲线对应于固定的参数量同时改变
$ d_\text{ff} $ 和 $ d_\text{model} $ 。
如果
deeper Transformer
有效地表现为shallower model
的ensembles
,那么就会导致 $ n_\text{layer} $ 的独立性,正如对ResNet
的建议(《Residual networks behave like ensembles of relatively shallow networks》
)。结果显示在下图中。下图中,不同的模型形状,得到的
test loss
差异很小,差异基本上都在10%
以内。
43.2.2 non-embedding 参数数量 N
a. 实验结果
在下图中,我们展示了各种模型的性能,从
shape
$ (n_\text{layer}, d_\text{model}) = (2, 128) $ 的小模型、到十亿参数的大模型,其中大模型的shape
从 $ (6,4288) $ 到 $ (207, 768) $ 不等。在这里,我们已经在完整的WebText2
数据集上训练到接近收敛,并且观察到没有过拟合(除了非常大的模型,因为对于非常大的模型则可能过拟合)。如
Figure 1
右图所示,我们发现关于non-embedding
参数数量 $ N $ 的一个稳定的趋势,即:要观察这些趋势,关键是要研究模型性能与
$ N $ 的关系。如果我们改用总的参数数量(包括embedding
参数),趋势就有些模糊了(如下左图所示)。这表明,embedding matrix
可以做得更小而不影响性能,这在最近的工作中已经看到了(《Albert: A lite bert for self-supervised learning of language representations》
)。ALBert
将embedding matrix
分解为两个低维矩阵的乘积,这等价于降低了embedding matrix
的大小。尽管这些模型是在
WebText2
数据集上训练的,但它们在其他各种数据集上的test loss
也是 $ N $ 的幂律,指数几乎相同,如下左图所示。左图、右图的详细说明参考 “数据分布之间的泛化” 章节。
b. 与 LSTM 和 Universal Transformer的比较
在下图中,我们比较了
LSTM
和Transformer
的性能与non-embedding
参数数量 $ N $ 的关系。LSTM
是用与Transformer
相同的数据集和上下文长度来训练的。从右图中我们可以看出,LSTM
对于上下文位置中头部出现的token
表现得和Transformer
一样好,但是对于上下文位置中尾部出现的token
则无法与Transformer
的表现相媲美。红色曲线为
LSTM
,蓝色曲线为Transformer
。下图中给出了模型性能与上下文位置之间的幂律关系,其中,除了第一个
token
之外(最上面的一条曲线),都显示了随着模型大小的增加而稳定地改善,表明快速识别模式的能力有所提高。我们还包括用很小的
$ n_\text{ctx}=8 $ 上下文来训练的模型,以便与我们的更长的上下文模型进行比较(即, $ n_\text{ctx} = 1024 $ )。即使是在 $ n_\text{ctx}=8 $ 的情况下训练的规模不大的模型也能在非常早期的token
上超越我们最大的 $ n_\text{ctx}=1024 $ 模型。这也表明,在大的上下文下训练的更大的模型应该可以有进一步的改进。因为对于
$ n_\text{ctr} = 1024 $ 的模型,它看到的上下文信息更多,理论上应该表现更好。在固定模型大小的情况下,
loss scale
似乎与上下文中的位置 $ T $ 成幂律关系,如下图所示。这可能是语言中潜在的power-law correlation
的结果,或者是模型结构和optimization
的一个更普遍的特征。它为在更大的上下文中训练的潜在好处(或潜在不足)提供了一些建议。不仅较大的模型在 $ T=1024 $ 时收敛到较好的性能,而且在early tokens
时也改善得更快,这表明较大的模型在检测less contextual information
的模式时更有效率。在右边的图中,我们显示了对于一个固定的模型,
per-token
性能是如何作为training steps
的函数而变化的。early tokens
在训练过程中更快地被学好,而末尾的tokens
在训练的后期才能训练好。左图:每条曲线对应一个模型(不同模型大小)的
per-token test loss
,在模型训练结束后。右图:每条曲线对应一个
token index
的学习曲线,在模型训练过程中,固定的模型。我们还在下图中比较了标准
Transformer
和recurrent Transformer
(《Universal transformers》
)的性能。recurrent Transformer
模型复用参数,因此表现得略好(右图),但代价是每个参数的额外计算量。左图把
reuse
的参数也认为是全新的,因此参数规模会变大。
c. 数据分布之间的泛化
我们还在一组额外的文本数据分布上测试了我们的模型。下图显示了这些数据集上的
test loss
与模型大小的关系。在所有情况下,模型都只在WebText2
数据集上训练过。从左图中我们看到,在这些其他数据分布上的
loss
随着模型规模的增加而平滑地改善,直接地平行于WebText2
的test loss
曲线。从右图中我们发现,泛化性几乎完全取决于
in-distribution validation loss
,而不取决于训练的持续时间、或接近于收敛的程度。虚线表示单个大型模型在它训练过程中,所得到的
test loss
;圆点表示很多收敛的模型对应的test loss
。
我们还观察到对模型深度没有依赖性(在固定模型大小的条件下)。
d. 性能与数据集大小和计算量的关系
我们在下图中显示了
test loss
作为数据集大小 $ D $ (以token
数量为单位)和训练计算量 $ C $ 的函数的经验趋势。对于
$ D $ 上的趋势,我们在WebText2
数据集的固定子集上训练了一个 $ (n_\text{layer},n_\text{embd}) = (36, 1280) $ 的模型。一旦test loss
不再减少,我们就停止训练。我们看到,所产生的test loss
可以用数据集大小 $ D $ 的简单的幂律来拟合:如
Figure 1
中间的图所示。训练过程中使用的
non-embedding
计算总量可以估计为 $ C = 6NBS $ ,其中 $ B $ 是batch size
, $ S $ 是parameter updates
的数量,系数6
代表了同时包含前向传播和反向传播。因此,对于一个给定的 $ C $ 值,我们可以扫描所有具有不同 $ N $ 的模型,找到在step
数量 $ S = \frac{C}{6BS} $ 上具有最佳性能的模型。请注意,在这些结果中,
batch size
$ B $ 对所有模型都是固定的,这意味着这些经验结果不是真正的最优。我们将在后面的章节中使用调整后的 $ C_{\min} $ 来说明这一点,以产生更清晰的趋势。这个结果如
Figure 1
左图的加粗黑线所示。它可以用如下的方程来拟合:此外,在左图中还包括每个模型的学习曲线,从而展示每个模型何时达到最优。
我们将在后面更仔细地研究计算量的最佳分配问题。数据强烈表明,
sample efficiency
随着模型的大小增加而提高,如右图所示,对于给定的test loss
,模型越大所需要的样本数越少。左图:每条曲线表示在给定的
test loss
(不同曲线采用不同的值)的条件下,最短的训练时间(由minimum steps
衡量)和模型大小的关系。通常而言,模型参数越大,训练时间越短。右图:每条曲线表示在给定的
test loss
(不同曲线采用不同的值)的条件下,最少的训练过程中看过的样本( $ E = B\times S $ )和模型大小的关系。通常而言,模型参数越大,所需要的样本数越少。
43.3 Infinite Data Limit 和过拟合
在前面的内容中,我们发现了针对语言建模性能的一些
basic scaling laws
。这里,我们将研究在具有 $ D $ 个tokens
的数据集上训练的大小为 $ N $ 的模型,并同时改变 $ N $ 和 $ D $ 时模型的性能。我们将从经验上证明最佳的test loss
符合公式 $ L(N,D) $ 的scaling law
。这为我们需要多少数据来训练规模不断扩大的模型、并同时控制过拟合提供了指导。
43.3.1 L(N, D) 公式
我们选择参数化
$ L(N,D) $ 为:其中,这个公式基于三个原则:
词表大小或
tokenization
的变化有望通过一个整体因子来rescale
损失函数。 $ L(N,D) $ 的参数化(以及所有loss
的建模)自然必须考虑到这种rescaling
。固定
$ D $ 并选择 $ N\rightarrow \infty $ ,那么overall loss
应该接近 $ L(D) $ 。相反地,固定 $ N $ 并选择 $ D\rightarrow \infty $ ,那么overall loss
应该接近 $ L(N) $ 。 $ L(N,D) $ 应该在 $ D=\infty $ 处是analytic
的,因此它在 $ 1/D $ 处具有整数幂次的级数展开(series expansion
)。对这一原则的理论支持明显弱于前两者。即,对于无限的训练数据,模型应该能够收敛。
我们选择的
$ L(N, D) $ 满足第一个要求,因为我们可以通过改变词表来rescale
$ N_c, D_c $ 。这也暗示了 $ N_c, D_c $ 的具体取值没有根本意义。因为当
test loss
停止改善时我们提前结束训练,并且我们以相同方式优化所有模型,所以我们期望较大的模型应该总是比较小的模型表现得更好。但是对于固定的、有限的 $ D $ ,我们也不期望任何模型能够接近最佳的possible loss
。类似地,具有固定大小的模型将是容量有限的。这些考虑激发了我们的第二个原则。注意,关于在 $ D $ 无穷大时的 $ L(N) $ 、以及在 $ N $ 无穷大时的 $ L(D) $ 的知识,完全决定了 $ L(N,D) $ 中的参数。第三个原则更加是推测性的。一个简单而普遍的原因是,在非常大的
$ D $ 时,人们可能会过拟合到 $ \text{scale }\propto 1/D $ 。过拟合应该与数据集的方差或信噪比有关(《High-dimensional dynamics of generalization error in neural networks》
),这与 $ 1/D $ 成比例。这一预期应该适用于任何平滑的损失函数,因为我们希望能够将loss
扩展到 $ D\rightarrow \infty $ 的极限。然而,这种观点假设 $ 1/D $correction
在其他方差来源中占主导地位,例如有限的batch size
、efficacy of optimization
的其他限制。没有经验的证实,我们对它的适用性没有信心。我们的第三个原则解释了公式
$ L(N,D) $ 中 $ N $ 和 $ D $ 的作用之间的不对称。非常相似的对称表达式也是可能的,但是它们不会有 $ 1/D $ 的整数幂次展开式,并且需要引入一个额外的参数。在任何情况下,我们都会看到,我们对于
$ L(N,D) $ 的公式很好地拟合了数据,这是我们的 $ L(N,D) $ 假设方程的最重要的理由。
43.3.2 拟合结果
我们以
10%
的dropout rate
来正则化我们的所有模型,然后跟踪test loss
,一旦test loss
不再下降时我们就停止训练。实验结果如Figure 9
左图所示,它包含了针对公式 $ L(N,D) $ 中的四个参数 $ \alpha_N,\alpha_D,N_c,D_d $ 的拟合。拟合的参数如下表所示:Figure 9
左图:每条曲线代表一个data size
,给出了在该data size
的条件下,test loss
和 $ N $ 的关系。Figure 9
右图: $ \frac{L(N,D)}{L(N,D=\infty)} -1 $ 和 $ N^{\frac{\alpha_N}{\alpha_D}}/D $ 之间的拟合曲线。我们获得了极好的拟合,除了如下的
runs
:数据集已经减少了1024
倍到大约 $ 2\times 10^7 $tokens
。对于如此小的数据集,一个epoch
仅包含40
次参数更新。也许这样一个微小的数据集代表了语言建模的一个不同的区域,因为过拟合在训练的早期就发生了 (Figure 16
右图的第一条Test Loss
曲线)。还要注意,这些参数与basic power laws
中获得的参数略有不同,因为这里我们拟合的是完整的 $ L(N,D) $ 而不仅仅是 $ L(N,\infty) $ 或 $ L(\infty,D) $ 。
43.3.3 D 和 N 之间的亚线性关系
为了绘制
infinite data limit
的边界,我们可以直接研究过拟合的程度。对于除了最大的模型之外的所有模型,当用完整的22B token
的WebText2
数据集训练时,我们没有看到过拟合的迹象,因此我们可以将其作为 $ D = \infty $ 的代表。因此,我们可以通过如下定义来比较有限的 $ D $ 和infinite data limit
:并把它作为
$ N, D $ 的函数来研究。事实上,我们从经验上看到, $ \delta L $ 仅依赖于 $ N $ 和 $ D $ 的特定组合,如Figure 9
右图所示。这是根据等式 $ L(N,D) $ 的scaling law
得出的,即:根据
$ L(N) \simeq \left(\frac{N_c}{N}\right)^{\alpha_N} $ ,我们可以得到:注意,在大的
$ D $ 时,该公式也有 $ 1/D $ 的幂级数展开。 $ L(N,\infty) $ 表示数据集无限大时的test loss
,它是 $ L(N,D) $ 的下限,代表没有过拟合时的test loss
。因此: $ \delta L $ 一定大于等于0
。如Figure 9
右图所示。 $ \delta L $ 代表了由于数据量不足导致的过拟合。
对于不同的随机数种子,我们估计
loss
的方差大约为0.02
,这意味着,为了避免过拟合,我们需要:推导过程:
$ \delta L \le 0.02 $ ,即可得到该方程。利用这种关系,小于
$ 10^9 $ 个参数的模型可以在22B token
的WebText2
数据集上被训练从而具有最小的过拟合,但是我们最大的模型将会遇到一些轻微的过拟合。更一般地,这种关系表明数据集大小可以关于模型大小成亚线性增长,同时避免过拟合。然而,请注意,这通常并不代表compute-efficient training
。我们还应该强调,在改变数据集和模型大小时,我们没有
optimized regularization
(例如,dropout rate
)。
43.4 关于模型大小和训练时间的 scaling laws
在本节中,我们将证明一个简单的
scaling law
可以很好地描述loss
作为模型大小 $ N $ 和训练时间的函数。首先,我们将解释如何使用
《An empirical model of large-batch training》
的结果来定义universal training step
$ S_\min $ ,这说明了我们的大多数模型尚未在最佳batch size
下训练的事实。然后,我们将证明我们可以使用公式
$ L(N,S) $ 拟合loss
与模型大小和训练时间。稍后,我们将使用这些结果来预测模型大小和训练时间之间关于训练计算量的最佳分配,然后确认该预测。
43.4.1 临界 Batch size
在
《An empirical model of large-batch training》
中提出了一个关于训练的batch size
依赖性的简单的经验理论。该论文认为,对于training
,有一个临界batch size
$ B_\text{crit} $ :对于
$ B\lt B_\text{crit} $ ,batch size
$ B $ 可以增加,而compute-efficiency
的下降非常小。而对于
$ B \gt B_\text{crit} $ , $ B $ 的增加导致收益递减。
该论文还认为,
gradient noise scale
为 $ B_\text{crit} $ 提供了一个简单的预测,并且gradient noise scale
也不直接依赖于模型大小,而是依赖于已经获得的loss value
。这些结果可用于预测训练时间和计算量将如何随batch size
而变化。为了尽可能有效地平衡训练时间和计算量,最好使用batch size
为 $ B\simeq B_\text{crit} $ 进行训练。在 $ B\gg B_\text{crit} $ 的训练最小化了training steps
数量,而在 $ B\ll B_\text{crit} $ 的训练最小化了计算量的使用。即:大的
batch size
可以节省训练时间、但是浪费了计算量;小的batch size
可以节省计算量、但是浪费了计算时间。更具体地,可以证明对于各种各样的神经网络任务, 当训练到
loss
$ L $ 的任何固定值时,training steps
数量 $ S $ 和processed
数据样本数量 $ E=BS $ 满足简单的关系:其中:
$ S_\min $ 为达到 $ L $ 所需的最小training steps
数量,而 $ E_\min $ 是必须处理的数据样本的最小数量。注意:
$ S_\min $ 并不是在 $ E_\min $ 处取得的,即: $ E_\min \ne B S_\min $ ,除了在 $ B=B_\text{crit} $ 。我们在下图中展示了针对
Transformer
的这种关系(即, $ \left(\frac{S}{S_\min} - 1\right)\times \left(\frac{E}{E_\min} - 1\right) = 1 $ )。左图、右图分别给出了两种不同参数规模下的曲线,横轴为 $ S $ 、纵轴为 $ E $ 。每条曲线代表一个固定的test loss
。这个关系定义了临界的
batch size
:它是目标损失值的函数。在临界
batch size
的训练可以实现大致最优的time/compute tradeoff
,需要 $ S=2S_\min $ 的training steps
、以及处理 $ E=2E_\min $ 的数据样本。在下图中,我们绘制了两个不同模型的临界
batch size
和gradient noise scale
,作为training loss
的函数。我们看到, $ B_\text{crit}(L) $ 与模型大小无关,仅取决于loss
$ L $ 。因此,《An empirical model of large-batch training》
的prediction
继续适用于Transformer
语言模型。临界batch size
在loss
上符合幂律:其中:
$ B_*\simeq 2\times 10^8 $ , $ \alpha_B\simeq 0.21 $ 。为什么选择这样的拟合公式?因为随着
loss
接近其最小值 $ L_\min $ ,gradient noise scale
预计会发散,并且我们期望 $ B_\text{crit} $ 跟踪该noise scale
。因此随着 $ L $ 越来越小(接近 $ L_\min $ ),我们希望 $ B_\text{crit} $ 越来越大。即, $ L\rightarrow 0 $ 时 $ B_\text{crit} $ 趋向于正无穷。注意:下图中,横轴的右侧为零。
如果我们在
$ B\gg B_\text{crit}(L) $ 处训练,则大小为 $ N $ 的模型训练到loss
$ L $ 所需的training steps
数量的临界值定义为:推导过程:根据定义
$ B_\text{crit}(L) = \frac{E_\min}{S_\min} $ 、 $ E=BS $ ,以及拟合公式 $ \left(\frac{S}{S_\min} - 1\right)\times \left(\frac{E}{E_\min} - 1\right) = 1 $ ,有:推导过程中并未要求
$ B\gg B_\text{crit}(L) $ ,这个约束条件从何而来?论文并未说明。读者猜测可能是由于 $ \left(\frac{S}{S_\min} - 1\right)\times \left(\frac{E}{E_\min} - 1\right) = 1 $ 需要满足的条件而引起的。该式子的物理意义:
根据
$ S = S_\min\times (1 + B_\text{crit}/B) $ ,则给定batch size
$ B \gg B_\text{crit} $ ,我们可以预测需要多少个training step
$ S $ 模型能够收敛。另一方面,任意选择一个
batch size
$ B \gg B_\text{crit} $ ,根据它的收敛时的training step
$ S $ ,我们能够统计得到 $ S_\min $ 。
如果我们在
$ B\ll B_\text{crit}(L) $ 处训练,这也定义了用大小为 $ N $ 的模型训练到loss
$ L $ 所需的计算量的临界值:其中:
$ C = 6NBS $ 估计了batch size
$ B $ 处的non-embedding
计算量。推导过程:根据定义
$ B_\text{crit}(L) = \frac{E_\min}{S_\min} $ 、 $ E=BS $ ,以及拟合公式 $ \left(\frac{S}{S_\min} - 1\right)\times \left(\frac{E}{E_\min} - 1\right) = 1 $ ,有:根据
$ C=6NBS $ ,则可以得到上述公式。推导过程中并未要求
$ B\ll B_\text{crit}(L) $ ,这个约束条件从何而来?论文也未说明。读者猜测可能是由于 $ \left(\frac{S}{S_\min} - 1\right)\times \left(\frac{E}{E_\min} - 1\right) = 1 $ 需要满足的条件而引起的。
43.4.2 关于模型大小和计算量的性能
现在,我们将使用定义的
$ S_\min $ 来获得在infinite data limit
下,loss
对模型大小和训练时间的依赖性的简单且通用的拟合。对于loss
,我们将使用公式 $ L(N,S) $ 来拟合稳定的、Adam
优化的training runs
,即:我们纳入了
learning rate schedule
的warmup
阶段后的所有training steps
,并找到了拟合数据的参数:有了这些参数,我们获得了右图中的学习曲线的拟合。尽管拟合并不完美,但我们相信,鉴于方程
$ L(N,S_\min) $ 的简单性,它们是相当令人信服的。右图中,每条曲线对应固定模型大小条件下不同
$ S_\min $ 的test loss
。loss
对 $ S_\min $ 的power-law dependence
反映了optimizer dynamics
和loss landscape
的相互作用。由于拟合曲线在训练后期是最好的,此时loss
可能近似为二次方程,power-law
应该提供关于loss
的Hessian
谱的信息。它的普遍性表明,Hessian eigenvalue density
大致独立于模型大小。数据和拟合可以以不同的、更有趣的方式可视化,如下图所示。在此,我们研究了作为模型大小的函数的
test loss
,同时固定了训练中使用的总的non-embedding compute
$ C $ 、或training steps
数量 $ S $ 。对于拟合,我们使用方程 $ C_\min $ 、 $ S_\min $ 、上述参数、以及方程 $ L(N,S_\min) $ 。左图:每条曲线给出了固定计算预算条件下
test loss
和模型大小的关系;右图:每条曲线给出了固定
steps
条件下test loss
和模型大小的关系;
43.4.3 Early Stopping Step 的下限
$ L(N,S_\min) $ 的结果可用于导出training step
数量的下限(粗略的估计),其中在data limited
训练中出现了早停。它的动机是这样的思想,对于给定的模型,有限的 $ D $ 和无限的 $ D $ 对应的学习曲线将会非常相似,直到我们达到 $ S_\min\simeq S_\text{stop} $ 。因此,过拟合应该与简单地在 $ S_\text{stop} $ 结束训练所对应的correction
成比例。这将低估 $ S_\text{stop} $ ,因为在现实中,当我们有一个有限的 $ D $ 时,test loss
将下降得更慢,因此我们将需要更多的training steps
数量来达到在有限的 $ D $ 时的最佳test loss
。这个推理方向导致了不等式:其中:
$ L(N,\infty) $ 为用无限可用数据评估的收敛后的损失。分母代表过拟合的程度,其中
$ L(N,\infty) $ 表示无限数据条件下的test loss
(代表没有过拟合)。过拟合程度越少,那么 $ S_\text{stop} $ 越大(早停发生的时刻越晚)。这个公式似乎不是推导而来,而是经验公式。
左图显示了这个不等式及其与经验数据的比较。在该图中,
$ S_\text{stop} $ 和 $ L(N,D) $ 是经验性的(尽管 $ S_\text{stop} $ 被调整以模拟 $ B\gg B_\text{crit} $ 时的训练),而 $ L(N,\infty) $ 是对 $ L(N,D) $ 在 $ D=\infty $ 时评估而来。
43.5 计算量预算的最优分配
我们在
Figure 1
的右上角显示了性能的经验趋势作为训练计算量的函数。然而,这一结果涉及固定batch size
$ B $ 的训练,但是我们知道,事实上我们可以通过前面讨论的batch size
$ B_\text{crit} $ 来更有效地训练。在本节中,我们将针对这一疏忽进行调整。更重要的是,我们将使用前面的结果来确定模型大小
$ N $ 、以及训练期间处理的数据量 $ E $ 之间的计算量的最优分配。使用公式 $ L(N,S_\min) $ ,我们将从经验和理论两方面来确定这种分配, 我们将证明这些方法是一致的。
43.5.1 最优性能和分配
从公式
$ C_\min $ 中,让我们首先研究loss
作为最优分配计算量 $ C_\min $ 的函数。结果如下图所示,并符合幂律曲线。我们看到,与Figure 1
的计算量图相比,新的关于 $ C_\min $ 的拟合有所改善。橙色曲线为
$ L(C) $ ,而蓝色曲线为 $ L(C_\min) $ ,可以看到蓝色曲线的拟合更好。Figure 1
的左图也是 $ L(C_\min) $ 。给定
$ L(C_\min) $ ,很自然地会要求最佳模型大小 $ N(C_\min ) $ ,以便在给定数量的训练计算量的情况下提供最小的loss
。最佳模型尺寸如下左图所示。我们观察到 $ N(C_\min) $ 可以很好地拟合幂律:在下图中,我们展示了次优
model size
来训练模型的效果。左图,次优
model size
导致更多的计算量(相对于最佳计算量)。右图,更大
model size
导致更少的计算时间(相对于最佳计算时间)。通过定义
$ C_\min = 6NB_\text{crit}S_\min $ ,因此我们可以使用 $ N(C_\min) $ 来提取进一步的结果。具体而言,由于之前的拟合曲线显示 $ B\propto L^{-4.8} $ 和 $ L\propto C_\min^{-0.05} $ ,我们可以得出结论: $ B_\text{crit}\propto C_\min^{0.24} $ 。 $ 0.24 = (-4.8)\times (-0.05) $ 。这使我们得出结论,随着计算量的增加,最佳
training steps
数量只会非常缓慢地增长,因为 $ S_\min\propto C_\min^{0.03} $ 与Figure 14
中右图的经验结果相匹配。事实上,measured exponent
足够小,我们的结果甚至可能与指数为零相一致。由于
$ N(C_\min)\propto (C_\min)^{0.73} $ 、 $ B_\text{crit}\propto C_\min^{0.24} $ ,此外根据 $ C_\min = 6NB_\text{crit}S_\min $ ,则 $ S_\min\propto C_\min^{0.03} $ ,其中 $ 0.03 = 1-0.73-0.24 $ 。因此,我们的结论是:当我们以最佳计算量分配来
scale up
语言模型时,我们应该主要增加模型大小 $ N $ ,同时scale up
batch size
为 $ B\propto B_\text{crit} $ ,而serial steps
数量增加可以忽略不计。由于compute-efficient training
使用相对较少的optimization steps
,因此可能需要进行额外的工作来加速早期的training dynamics
。
43.5.2 $ L (N, S_\min) $ 的预测
$ L(C_\min) $ 和allocation
的结果可以从方程 $ L(N,S_\min) $ 中预测出来。给定我们的 $ L(N,S_\min) $ 方程,我们可以用 $ S_\min = \frac{C_\min}{6NB} $ 来代替,然后找到最小的loss
作为 $ N $ 的函数,同时固定训练计算量。对于
loss
作为训练计算量的函数,我们预测:其中:
与下图中的指数非常一致。
下图中的指数是
-0.050
,而这里的指数是-0.054
,存在一定的gap
。因为它们是用不同的公式来预测的。我们还预测到:
这也和下图中的
scaling
相匹配,在几个百分点之内。前面已经得到
$ N(C_\min)\propto (C_\min)^{0.73} $ ,但是这里得到的是 $ N(C_\min)\propto (C_\min)^{0.71} $ ,存在一定的gap
。因为它们是用不同的公式来预测的。我们的
scaling laws
为语言建模的性能提供了一个预测性的框架。
43.5.3 矛盾和猜想
我们观察到,在计算量、数据量或模型大小的大数值下,没有偏离直接的
power-law
趋势的迹象。不过,我们的趋势最终必须趋于平稳,因为自然语言具有非零的熵(即,test loss
不可能降低到零)。事实上,本节中描述的
compute-efficient training
的趋势已经包含了一个明显的矛盾。在比这里记录的规模高几个数量级的时候, $ L(C_\min) $scaling law
所预测的性能会下降到低于应该有的水平。这意味着我们的scaling laws
必须在这一点之前崩溃,但是我们猜测这个交点有更深的含义:它提供了Transformer
语言模型达到最大性能的一个估计值。由于
compute-efficient training
所使用的数据量随着计算预算的增加而缓慢增长, $ L(C_\min) $ 预测的性能最终会达到 $ L(D) $ 幂律设定的下限(如下图所示)。让我们更详细地研究一下这个问题。为了控制过拟合,前面的结果意味着我们应该将数据集的规模扩大为:
其中,我们使用了
Figure 14
中的compute-efficient
$ N(C_\min) $ 。让我们将其与
compute-efficient training
的数据要求进行比较。如果我们以临界batch size
(即 $ C=2C_\min $ )进行训练,并且在训练过程中不重复使用数据,我们会发现数据用量随着计算量的增长而增长,即:这是数据集大小能够随着计算量而有效增长的最大速度,因为它意味着我们只训练一个
epoch
。但它比方程 $ D\propto N^{0.74} \propto C_\min^{0.54} $ 中的数据集增长得更慢。这似乎意味着,compute-efficient training
最终会遇到过拟合的问题,即使训练过程中从未重复使用任何数据。根据
Figure 1
,我们期望当我们受到数据集大小的瓶颈时(即过拟合),loss
的scale
应该是 $ L(D)\propto D^{-0.095} $ 。这意味着,loss
将随着计算量的进行而scale
为 $ L(D(C_\min))\propto C_\min^{-0.03} $ ,一旦我们受到数据限制。再一次,我们有一个矛盾,因为这将最终与我们在Figure 13
中对 $ L(C_\min) $ 的预测相交,其中我们发现scaling
$ L(C_\min)\propto C_\min^{-0.050} $ 。 $ L(D(C_\min)) $ 和 $ L(C_\min) $ 的交叉点发生在:尽管数值是非常不确定的,在任何一个方向都会有一个数量级的变化,这取决于
power-law
拟合的指数的精确值。最明显的解释是,我们的scaling law
在达到这一点时或之前就已经崩溃了,而这一点在计算量和模型大小上都还有很多数量级。人们也可以猜想,这个交叉点有更深的含义。在相同数据要求的条件下,如果我们没有将模型规模增加到
$ N^* $ 以上,也许这意味着一旦我们达到 $ C_\min* $ 和 $ N^* $ ,我们就已经提取了自然语言数据中所有的可靠信息。在这种解释中, $ L^* $ 将为自然语言entropy-per-token
提供一个粗略的估计。在这种情况下,我们期望loss
的趋势在 $ L^* $ 或之前趋于平稳。我们可以通过考虑添加了噪音的训练数据集的版本来猜测平缓之后的
$ L(C_\min) $ 的函数形式。例如,我们可以在展示给模型的每个上下文中附加一串随机的tokens
,从而人为地用一个恒定的additive factor
来提高损失。然后,与noise floor
的距离 $ L-L_\text{noise} $ 将是一个更有意义的性能指标,即使这个距离的小幅下降也可能代表定性的性能的显著提升。由于人工噪声会对我们所有的趋势产生同样的影响, $ C^*,N^*,D^*,L^* $ 等临界点将不会改变(除了 $ L^* $ 的绝对值),即使它发生在平缓之后也可能是有意义的。
43.6 结论
43.6.1 总结
我们
Transformer
语言模型的主要发现如下:模型性能强烈依赖于模型规模,弱依赖于
model shape
: 模型的性能最强烈地依赖于模型规模,它包括三个因素:模型参数的数量 $ N $ (不包括embedding
参数)、数据集的大小 $ D $ 、以及用于训练的计算量 $ C $ 。在合理的范围内,性能对其他架构超参数的依赖非常弱,如模型的dpeth
与width
。注意,这里的模型性能是在测试集上评估的。
平滑的幂率(
smooth power laws
):模型性能与三个scale factor
$ N, D, C $ 中的每一个都有幂律关系,其趋势跨越六个数量级以上(如下图所示),当其它两个因素不是瓶颈时。我们观察到在N/D/C
非常大时,并没有偏离这些趋势的迹象,尽管在达到zero loss
之前,模型性能最终必须趋于平缓。过拟合的普遍性: 只要我们同步
scale up
$ N $ 和 $ D $ ,性能就会有可预测的提高;但如果 $ N $ 或 $ D $ 保持固定而另一个增加,就会进入一个收益递减的区域。性能惩罚(performance penalty
)可预测地取决于 $ N^{0.74}/D $ 的比率,这意味着每次我们将模型规模增加8
倍,我们只需要增加大约5
倍的数据就可以避免惩罚。training
的普遍性: 训练曲线(training curve
)遵循可预测的幂律,其中训练曲线大致上与模型大小无关。通过推断训练曲线的早期部分,我们可以大致预测如果我们训练的时间更长,将会取得什么样的loss
。transfer
提高测试性能:当我们在与训练时分布不同的文本上评估模型时,评估结果与验证集上的结果密切相关,loss
的偏移量大致不变。换句话说,迁移到一个不同的分布上会产生一个恒定的惩罚,但其他方面的改善与训练集上的表现大致一致。样本效率(
sample efficiency
):大模型比小模型更具有样本效率,以更少的optimization step
(Figure 2
左图)和更少的数据点(Figure 4
左图)达到相同的性能水平。此外,
Figure 19
提供了另一种观察这一现象的方法,它显示了不同模型达到各种固定loss
的时间。收敛是低效的: 当在固定的计算预算
$ C $ 内工作,但对模型大小 $ N $ 或可用数据量 $ D $ 没有任何其他限制时,我们通过训练非常大的模型并在收敛之前明显地停止,从而达到最佳性能(Figure 3
)。因此,与人们的预期相反,相比于训练小模型并收敛,这种方式得到的最佳compute-efficient training
要更加sample efficient
。随着训练计算量的增加,数据需求增长非常缓慢: $ D\sim C^{0.27} $ 。最优的
batch size
:训练这些模型的最优的batch size
大约仅仅是loss
的幂次,并通过测量gradient noise scale
来确定。对于我们可以训练的最大的模型,在收敛时大约是1M ~ 2M
个tokens
。
综合来看,这些结果表明,当我们适当地
scale up
模型规模、数据规模、以及计算量时,language modeling
的性能会平稳地、可预测地提高。我们预计,更大的语言模型将比目前的模型表现得更好、更加sample efficient
。
43.6.2 Scaling Laws 摘要
当性能仅仅受
non-embedding parameters
数量 $ N $ 、数据集大小 $ D $ 、以及optimally allocated
计算预算 $ C_\min $ 的限制时,可以用幂律来预测一个自回归语言模型训练的Transformer
的loss
(如Figure 1
):对于参数数量
$ N $ 受到限制的模型,在足够大的数据集上训练到收敛(即, $ N $ 的变化对于 $ L $ 的影响):对于大型模型(即,
$ N $ 足够大),在数据规模 $ D $ 受到限制的数据集上训练且早停(即, $ D $ 的变化对于 $ L $ 的影响):对于最佳规模的模型(即,
$ N $ 足够大)、足够大的数据集(即, $ D $ 足够大)、足够小的batch size
(对计算量的最佳使用),在计算量 $ C_\min $ 受到限制的条件下进行训练:
这些关系在
$ C_\min $ 的8
个数量级、 $ N $ 的6
个数量级、以及 $ D $ 的2
个数量级上都成立。它们非常弱地依赖于model shape
和其他的Transformer
超参数(depth
、width
、自注意头的数量),具体数值与Webtext2
训练集相关。幂率
$ \alpha_N,\alpha_D,\alpha_C^\min $ 规定了当我们扩大 $ N $ 、 $ D $ 或 $ C_\min $ 的规模时预期的性能改善程度。例如,参数数量 $ N $ 增加一倍(即 $ N\rightarrow 2N $ ),产生的loss
要更小,其中大约是原始loss
的 $ 2^{-\alpha_N }= 0.95 $ 倍。 $ N_c, C_c^\min,D_c $ 的精确数值取决于vocabulary size
和tokenization
,因此没有基本的含义(fundamental meaning
)。critical batch size
决定了数据并行的speed/efficiency tradeoff
,也大致服从 $ L $ 的幂率:公式
$ L(N) $ 和 $ L(D) $ 共同表明,当我们增加模型大小时,我们应该根据 $ D\propto N^{\alpha_N/\alpha_D}= N^{0.74} $ 线性地增加数据集大小。事实上,我们发现有一个结合了 $ L(N) $ 和 $ L(D) $ 的单个方程,支配着对 $ N $ 和 $ D $ 的同时依赖,并支配着过拟合的程度:这个方程与
Figure 4
的左图相配合。我们猜想,这种函数形式也可以为其他generative modeling task
来参数化trained log-likelihood
。当在
infinite data limit
中对一个给定的模型进行有限的parameter update steps
$ S $ 的训练时,在一个初始的短时间之后,学习曲线可以被准确地拟合(见Figure 4
的右边):其中:
$ S_c\simeq 2.1\times 10^3 $ , $ \alpha_S\simeq 0.76 $ , $ S_\min $ 是使用方程 $ S_\min = \frac{S}{1 + B_\text{crit}(L)/B} $ 估计的最小可能的optimization steps
(即参数更新次数)的数量, $ B $ 为batch size
。当在固定的计算预算
$ C $ 内进行训练,但没有其他限制时,方程 $ L(N,S) $ 导致预测最佳模型大小 $ N $ 、最佳batch size
$ B $ 、最佳step
数 $ S $ 、以及数据集大小 $ D $ 应增长为:这与经验结果(
$ N\propto C_\min^{0.73},\;B\propto C_\min^{0.24},\;S\propto C_\min^{0.03} $ )比较接近。随着计算预算
$ C $ 的增加,计算预算应该主要用在更大的模型上,而不应在训练时间或数据集大小上有急剧增加(如Figure 3
)。这也意味着,随着模型的增大,它们的sample efficient
也越来越高。在实践中,研究人员通常训练较小的模型(由于硬件的限制),较小模型的训练时间要更长(相比较于最大化计算效率的模型,即更大的模型)。最佳性能取决于总计算量的幂律(参考方程 $ L(C_\min) $ )。我们为方程
$ L(N,D) $ 提供了一些基本的理论动机,对learning curve fit
及其对训练时间的影响进行了分析,并对我们每个token
的结果进行了细分。我们还对LSTM
和recurrent Transformer
做了一些简单的比较。公式总结:
这些趋势的经验拟合参数为:
compute efficient training
的最优参数为:
43.6.2 注意事项
在这一节中,我们列出了一些对我们的分析可能存在的注意事项:
目前,我们对我们提出的任何一个
scaling laws
都没有一个坚实的理论理解。与模型大小和计算量的scaling
关系尤其神秘。通过用一个noisy
的二次方来建模loss
,在模型大小固定的情况下,也许有可能理解在非常大的 $ D $ 下的scaling
关系,以及在训练后期的学习曲线的形状。但是在非常大的模型大小下,与 $ D $ 的scaling
关系仍然是神秘的。如果没有一个理论、或者对我们的scaling laws
的修正有一个系统的理解,就很难确定在什么情况下它们可以被信任。我们对远在我们所探索的范围之外的
loss
的 $ B_\text{crit}(L) $ 的预测不是特别有信心。 $ B_\text{crit} $ 的变化可能会对数据并行性、以及所需的serial training steps
数量之间的权衡产生重大影响,这将对训练时间产生重大影响。我们没有彻底研究小数据的区域,对于最小的
$ D $ 值(一个epoch
只有40
个step
),我们对 $ L(N,D) $ 的拟合很差。此外,我们没有对正则化和数据增强进行试验。这些方面的改进可能会在数量上或质量上改变我们的结果。我们使用了估计的训练计算量
$ C\simeq 6NBS $ ,它不包括与 $ n_\text{ctx} $ 成比例的贡献。因此,在非常大的 $ n_\text{ctx} $ 的系统中,特别是在 $ n_\text{ctx}\ge 12 d_\text{model} $ 的情况下,我们的计算量的scaling
可能不太准确。我们调优了学习率,并且采用了
learning rate schedule
进行实验。但是我们可能忽略了调优一些对scaling
有重要影响的超参数(如intialization scale
或动量)。学习率的最佳选择对
target loss
是敏感的。当训练接近收敛时,可能需要使用较小的学习率来避免发散。但是当进行short training run
时(例如由于计算限制),可能会使用较大的学习率。对于没有进行收敛的training runs
, 我们没有进行更高学习率的实验。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论