数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 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
- 并发
四十四、Chinchilla [2022]
《Training Compute-Optimal Large Language Models》
最近,一系列大型语言模型(
Large Language Model: LLM
)被引入,目前最大的稠密语言模型拥有超过500B
参数。这些大型自回归transformer
模型在许多任务上使用各种评估协议(如zero-shot
、few-shot
和fine-tuning
),都表现出令人印象深刻的性能。训练大型语言模型的计算成本和能源成本很高,并随着模型规模的增加而上升。在实践中,分配的
training compute budget
通常是事先知道的:有多少个accelerators
可用,以及用多久。由于这些大型模型通常只训练一次,因此准确估计给定computational budget
条件下的最佳模型超参数至关重要(《Scale efficiently: Insights from pre-training and fine-tuning transformers》
)。《Scaling laws for neural language models》
表明:自回归语言模型的参数数量与它的性能之间存在幂律(power law
)关系。因此,该领域一直在训练越来越大的模型,并预期带来性能的提高。《Scaling laws for neural language models》
的一个值得注意的结论是:大型模型不应该被训练到其最低的损失(test loss
),以达到compute optimal
。虽然我们得出了同样的结论,但我们估计大型模型的训练应该比作者建议的多得多的training tokens
。具体来说,在computational budget
增加十倍的情况下,他们建议模型的大小应该增加5.5
倍,而training tokens
的数量只应该增加1.8
倍。相反,我们发现模型的大小和training tokens
的数量应该以相等的比例进行scale
。《Scaling laws for neural language models》
的结论:当计算预算增加十倍时,模型大小需要增加
$ 10^{0.73} = 5.37 $ 倍;training tokens
数量为 $ E=B\times S $ ,需要增加 $ 10^{0.27} = 1.86 $ 倍。遵循
《Scaling laws for neural language models》
和GPT-3
的训练设置,最近训练的许多大型模型已经训练了大约300B token
(如下表所示),这与增加计算量时主要增加模型规模的做法是一致的。在这项工作中,我们重新审视了这个问题: 在固定的
FLOPs
预算下,应该如何权衡模型大小和training tokens
数量?为了回答这个问题,我们将最终的预训练损失 $ L(N,D) $ 作为模型参数数量 $ N $ 和training tokens
数量 $ D $ 的函数。由于computational budget
$ C $ 是模型参数数量 $ N $ 和seen training tokens
数量 $ D $ 的确定性函数 $ \text{FLOPs}(N, D) $ ,我们感兴趣的是在 $ \text{FLOPs}(N, D) = C $ 的约束条件下最小化 $ L $ :其中:
$ N_\text{opt}(C), D_\text{opt}(C) $ 描述了computational budget
$ C $ 的最佳分配。注意:这里的
$ D $ 指的是training tokens
数量,这跟《Scaling Laws for Neural Language Models》
中的符号不同。在《Scaling Laws for Neural Language Models》
中, $ D $ 表示训练集的tokens
数量, $ E=B\times S $ 才是training tokens
数量。这里的
$ L $ 指的是test loss
。我们根据
400
多个模型的loss
来经验性地估计这些函数,这些模型的参数规模从低于70M
到超过16B
,并在从5B
到超过400B
个token
上进行训练,每个模型配置都在几个不同的training horizons
进行训练。我们的方法导致了与《Scaling laws for neural language models》
的结果大不相同。我们在下图中强调了我们的结果,并在后面章节中强调了我们的方法有什么不同。基于我们估计的
compute-optimal
边界,我们预测,对于用于训练Gopher
的compute budget
,最优模型应该小4
倍,同时在4
倍的tokens
上进行训练。我们通过在1.4T tokens
上训练一个更加compute-optimal
的70B
模型,称为Chinchilla
,来验证这一点。Chinchilla
不仅比其更大的同类模型Gopher
表现出色,而且其减少的模型尺寸大大降低了推理成本,并大大促进了下游在更小硬件上的使用。大型语言模型的能源成本通过inference
和微调的使用而摊销。因此,一个经过优化训练的小型模型,其好处要超过改善模型性能的直接好处。相关工作:
大型语言模型:在过去的几年里,各种大型语言模型已经被引入。这些模型包括
dense transformer models
、以及mixture-of-expert (MoE) models
。最大的dense transformers
已经超过500B
参数(《Using Deepspeed and Megatron to Train Megatron-turing NLG 530b, A Large-Scale Generative Language Model》
)。训练越来越大的模型的动力是很明显的:到目前为止,增加语言模型的规模已经在许多语言建模任务中提高了
SOTA
。然而,大型语言模型面临着一些挑战,包括它们巨大的计算需求(training
和inference
的成本随着模型的大小而增加),以及需要获得更多的高质量训练数据。事实上,在这项工作中,我们发现更大的、高质量的数据集将在语言模型的任何further scaling
中发挥关键作用。对
scaling
行为进行建模:了解语言模型的scaling
行为及其迁移特性(transfer property
)在最近的大型模型的发展中一直很重要。《Scaling laws for neural language models》
首次展示了模型大小与loss
之间在许多数量级上的predictable relationship
。作者研究了在给定的计算预算(compute budget
)下选择最佳的模型大小来训练的问题。与我们类似,他们通过训练各种模型来解决这个问题。我们的工作在几个重要方面与《Scaling laws for neural language models》
不同:首先,作者对所有的模型都使用了固定的
training tokens
数量和学习率调度;这使得他们无法建模这些超参数对loss
的影响。相比之下,我们发现,无论模型大小如何,将学习率调度设置为与training tokens
数量大致匹配的结果是最好的final loss
,如下图所示。《Scaling Laws for Neural Language Models》
论文中并未固定training tokens
数量,所以这里的结论是从何而来?上面三个子图:
training steps = 8M
;下面三个子图:training steps = 12.5M
。每条曲线分别代表余弦学习率的周期长度为training steps
数量 $ k $ 倍, $ k=1/1.1/1.25/1.5/2.0/5.0 $ 。对于一个固定的
learning rate cosine schedule
,从训练刚开始到130B tokens
,中间的loss estimates
(对于 $ D^\prime \ll 130 B $ )高估了用与 $ D^\prime $ 相匹配的schedule length
所训练的模型的loss
。使用这些中间的loss
的结果是,低估了在少于130B tokens
的数据上训练模型的有效性,并最终促成了这样的结论:随着计算预算的增加,模型规模的增加应该快于训练数据规模。相反,我们的分析的预测表明,这两个数量应该以大致相同的速度scale
。给定一个
training tokens
数量,由于学习率调度的non-optimal
选择,导致了训练得到的training loss
要比最优的training loss
更高。注意,这里是
training loss
,而《Scaling Laws for Neural Language Models》
中的指标是test loss
。其次,我们包括参数高达
16B
的模型,因为我们观察到FLOP-loss
边界有轻微的曲率。这意味着来自非常小的模型的预测与来自较大模型的预测不同。事实上,我们分析中使用的大多数模型都有超过500M
个参数。相比之下,《Scaling laws for neural language models》
的大多数runs
都要小得多,许多模型的参数不到100M
。不同颜色的
training loss
曲线代表了不同大小的模型。在下图中,我们显示了使用第一批三个
frontier-points
、中间三个frontier-points
、以及最后三个frontier-points
的线性拟合(橙色虚线、绿色虚线、蓝色虚线)。在这项工作中,我们没有考虑到这一点,我们把它作为有趣的未来工作,因为它表明,对于大的FLOPs
预算,甚至更小的模型也可能是最佳的。
最近,
《Unified scaling laws for routed language models》
专门研究了Mixture of Expert
语言模型的scaling
特性,表明随着模型规模的增加,expert
数量的scaling
会减弱。他们的方法将loss
作为两个变量的函数:模型规模、专家数量。然而,与《Scaling laws for neural language models》
一样,该分析是在固定数量的training tokens
下进行的,有可能低估了branching
的改进。为大型模型而估计超参数:在选择语言模型,并且选择训练模型的程序时,模型大小和
training tokens
数量并不是唯一需要选择的两个超参数。其他重要的超参数包括学习率、学习率调度、batch size
、优化器、宽深比(width-to-depth ratio
)。在这项工作中,我们专注于模型大小和training steps
数量,我们依靠现有的工作、以及所提供的实验启发式方法来确定其他必要的超参数。《Tuning large neural networks via zero-shot hyperparameter transfer》
研究了如何选择这些超参数来训练自回归变transformer
,包括学习率和batch size
。《An empirical model of large-batch training》
发现最佳batch size
和模型大小之间只有微弱的依赖性。《Measuring the effects of data parallelism on neural network training》
提出,使用比我们使用的更大的batch size
是可能的。《The depth-to-width interplay in self-attention》
研究了各种standard model size
的最佳depth-to-width ratio
。我们使用比所提议的深度稍小的模型,因为这可以在我们的硬件上转化为更好的wall-clock performance
。
改进的模型架构:最近,人们提出了各种有前途的替代传统
dense transformer
的方法。例如,通过使用条件计算, 大型MoE
模型 (如1.7T
参数的Switch transformer
、1.2T
参数的GLaM
模型,以及其他模型)能够提供较大的有效model size
,但是使用相对较少的training FLOPs
和inference FLOPs
。然而,对于非常大的模型,routed model
的计算优势似乎在减少(《Unified scaling laws for routed language models》
)。改进语言模型的一个正交方法是用明确的检索机制来
augment transformer
。这种方法有效地增加了训练期间看到的tokens
数量(在《Improving language models by retrieving from trillions of tokens》
中增加了10
倍)。这表明,语言模型的性能可能比以前认为的更加依赖于训练数据的大小。
44.1 方法
我们提出三种不同的方法来回答问题: 在固定的
FLOPs
预算下,应该如何权衡模型大小和training tokens
数量?在所有三种情况下,我们首先训练一系列模型,改变模型大小和training tokens
数量,并使用所得的训练曲线来拟合一个empirical estimator
,该empirical estimator
关于应该如何scale
。我们假设计算量和模型大小之间存在幂律关系,正如《Unified scaling laws for routed language models》
、《Scaling laws for neural language models》
所做的那样,尽管未来的工作可能希望针对大的模型规模在这种关系中包括潜在曲率(potential curvature
)。所有三种方法的预测结果都是相似的,并且表明参数数量和
training tokens
数量应该随着计算量的增加而同样增加,这个比例如下表所示(括号里的值分别是10%
分位、90%
分位的统计结果)。这与以前关于这个主题的工作形成了显著的对比,值得进一步研究。注意,
《Scaling laws for neural language models》
研究的是test loss
,而这里研究的是training loss
。
44.1.1 方法一:固定模型规模并改变 training tokens 数量
在我们的第一种方法中,我们针对一系列的固定规模的模型(模型参数从
70M
到10B
)改变训练步数,为每个模型训练4
个不同数量的training sequences
(即,training seen examples
数量)。从这些runs
中,我们能够直接提取在定数量的training FLOPs
下实现的最小loss
的估计。四个不同数量的
training sequences
是如何实现的?如果是非常大的数据集,那么很可能最长的training steps
都没能过遍历一个epoch
,此时,每个样本仅被训练一次;如果是较小的数据,那么很可能最短的training steps
都遍历了多个epoch
,此时每个样本被训练多次。论文并未说明预训练的
datasets
是如何构建的。我们对最小的模型使用最大的学习率为
$ 2\times 10^{-4} $ ,对最大的模型使用最大的学习率为 $ 1.25\times 10^{-4} $ 。在所有情况下,使用余弦学习率调度,学习率在训练结束时相比初始学习率下降了10
倍。我们假设余弦周期的长度应该与训练步数大致匹配。我们发现,当余弦周期长度超出训练步数25%
以上时,性能会明显下降,如下图所示。 我们使用窗长为10
步的高斯平滑来平滑训练曲线。对于每个参数数量
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论