数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 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
- 并发
四十八、GPT-NeoX-20B [2022]
在过去的几年里,围绕自然语言处理的大型语言模型(
large language model: LLM
)的研究出现了爆炸性增长,主要是由基于Transformer
的语言模型的令人印象深刻的性能所推动,如BERT
、GPT-2
、GPT-3
和T5
。这些研究的最有影响的成果之一是:发现大型语言模型的性能和参数数量呈现可预测的幂律(power law
)关系,其中诸如宽深比(width/depth ratio
)等结构细节在很大范围内对性能的影响很小(《Scaling laws for neural language models》
)。其结果是大量的研究集中在将Transformer
模型扩展到更大的规模上,从而产生了超过500B
参数的稠密模型,这是在几年前几乎无法想象的里程碑。稠密模型指的是类似于
GPT-3
这种,没有采用mixture-of-experts
的模型。今天,有几十个公开宣布的大型语言模型,最大的
LLM
的参数比GPT-2
多两个数量级,即使在这个规模,也有近十种不同的模型。然而,这些模型几乎都是受保护的大型组织的知识产权,并且被限制在商业API
,只能根据request
来提供使用,或者根本不能供外部人员使用。据我们所知,唯一免费公开的比GPT-2
更大的稠密的自回归语言模型是GPT-Neo
(2.7B
参数)、GPT-J-6B
、Megatron-11B
、Pangu-a-13B
以及最近发布的FairSeq
模型(2.7B
、6.7B
、13B
参数)。在论文
《GPT-NeoX-20B: An Open-Source Autoregressive Language Model》
中,作者介绍了GPT-NeoX-20B
,一个20B
参数的开源的自回归语言模型。作者通过permissive license
向公众免费开放模型权重,其动机是相信开放LLM
对于推动广泛领域的研究至关重要,特别是在人工智能安全、机制上的可解释性、以及研究LLM
能力如何扩展等方面。LLM
的许多最有趣的能力只有在超过一定数量的参数时才会涌现,而且它们有许多属性根本无法在较小的模型中研究。虽然安全问题经常被作为保持模型权重私有化的理由,但作者认为这不足以防止滥用,而且对于能够获得SOTA
语言模型的少数组织之外的研究人员来说,这在很大程度上限制了探究和研究LLM
的能力。此外,作者在整个训练过程中以均匀的1000
步的间隔提供partially trained checkpoint
。作者希望通过免费提供在整个训练过程中的广泛的checkpoint
,从而促进对LLM
的training dynamics
的研究,以及上述的人工智能安全性和可解释性等领域的研究。在研究
GPT-NeoX-20B
的过程中,作者发现了几个值得注意的现象,与已有的文献不一致:作者在一个包含重复数据的数据集上进行训练,训练超过一个
epoch
,但没有看到性能损失的证据。虽然
《 Measuring massive multitask language understanding》
声称,few-shot prompting
并不能提高他们任务的性能,但作者发现,这实际上是GPT-3
特有的现象,并不适用于GPT-NeoX-20B
或FairSeq
模型。最后,作者发现
GPT-NeoX-20B
是一个强大的few-shot learner
,与规模相当的GPT-3
模型和FairSeq
模型相比,从few-shot examples
中获得的性能提升要大得多。作者看到GPT-J-6B
也是如此,作者假设这可能是由于GPT-J-6B
选择了相同的训练数据。
最后,训练和评估代码在
https://github.com/EleutherAI/gpt-neox
上公开,也可以在那里找到下载整个训练过程中模型权重的链接。
48.1 模型设计和实现
GPT-NeoX-20B
是一个autoregressive transformer decoder model
,其结构基本遵循GPT-3
的结构,但有一些明显的改变,如下所述。我们的模型有20B
参数,其中19.9B
参数是"non-embedding"
参数,《Scaling laws for neural language models》
认为这是用于scaling laws analysis
的适当数量。我们的模型有44
层,隐层维度大小为6144
,有64
个head
。
48.1.1 模型架构
虽然我们的架构与
GPT-3
基本相似,但也有一些明显的区别。在本节中,我们对这些不同之处进行了high-level
的概述,但请读者参考GPT-3
的原始论文以了解模型架构的全部细节。我们的模型架构几乎与GPT-J
相同,但我们选择使用GPT-3
作为参考,因为没有关于GPT-J
设计的典型出版物作为参考。Rotary Positional Embeddings
:我们使用rotary embedding
(《RoFormer: Enhanced transformer with rotary position embedding》
),而不是GPT
模型中使用的learned positional embedding
,这是基于我们之前在训练LLM
中使用rotary embedding
的积极的经验。rotary embedding
是static relative positional embedding
的一种形式。简而言之,它们扭曲了emebdding
空间,使位置 $ m $ 的token
对位置 $ n $ 的token
的注意力线性地依赖于 $ m-n $ 。更正式地说,标准的多头注意力方程为:
其中:
$ \mathbf {\vec x}_m $ 和 $ \mathbf {\vec x}_n $ 分别为位置 $ m $ 和位置 $ n $ 的token embedding
。注意:通常而言,通过在
token embedding
上添加positional embedding
从而得到 $ \mathbf{\vec x}_m $ 和 $ \mathbf{\vec x}_n $ $ \mathbf W_q, \mathbf W_k $ 分别为query
投影矩阵和key
投影矩阵。
而
rotary embedding
将这个方程修改为:其中:
$ \mathbf R_{\Theta,(n-m)}^d $ 为一个 $ d\times d $ 的块对角矩阵(block diagonal matrix
),其中第 $ i $ 个block
是一个2D rotation
,旋转角度为 $ x\theta_i $ 。 $ \Theta=\left\{\theta_i = 10000^{-2i/d}\mid 0\le i\le (d-1)/2\right\} $ 为超参数。其中,
$ m $ 为绝对位置。虽然
《RoFormer: Enhanced transformer with rotary position embedding》
将rotary embedding
应用于整个embedding
向量,但我们遵从《GPT-J-6B: A6 billion parameter autoregressive language model》
,而是只将rotary embedding
应用于embedding
向量维度的前25%
。我们的初步实验表明,这在性能和计算效率上取得了最佳平衡。并行计算
Attention Layer + FF Layer
:我们并行地计算注意力层和前馈层(Feed-Forward: FF
),并将结果相加,而不是串行地运行。这主要是为了提高效率,因为在op-sharding
的情况下,每个残差加法(residual addition
)都需要在前向传递和后向传递中进行一次all-reduce
(《Megatron-LM: Training multi-billion parameter language models using model parallelism》
)。通过并行计算Attention
和FF
,可以在执行单个all-reduce
之前对结果进行局部规约(reduce
)。在Mesh Transformer JAX
中,这导致了15%
的吞吐量增加,同时在训练的早期,与串行地运行它们的损失曲线相当。由于我们代码中的一个疏忽,我们无意中应用了两个独立的
Layer Norm
,而不是像GPT-J-6B
那样使用一个tied layer norm
。tied layer norm
的方式为:相反,我们的代码实现为:
不幸的是,这只是在我们训练到很远的时候才注意到,无法重新开始。随后的小规模实验表明,
untied layer norm
对性能没有影响,但为了透明性起见,我们还是希望强调这一点。初始化:对于残差前的
Feed-Forward output layers
,我们使用了《Mesh-Transformer-JAX: Model parallel implementation of transformer languagemodel with JAX》
中介绍的初始化方案, $ \frac{2}{L\sqrt d} $ 。这可以防止activation
随着深度和宽度的增加而增长,分子为2
可以补偿注意力层和前馈层被组织为并行的事实。对于所有其他层,我们使用
《Transformers without tears: Improving the normalization of self-attention》
的small init
方案 $ \sqrt{\frac{2}{d + 4d}} $ 。所有的
Dense
层:虽然GPT-3
使用《Generating long sequences with sparse transformers》
介绍的技术交替使用dense
层和sparse
层,但我们却选择完全使用dense
层来降低实现的复杂性。
48.1.2 其它
软件库:我们的模型是使用建立在
Megatron
和Deep-Speed
基础上的代码库进行训练的,以促进高效和直接地训练具有数百亿个参数的大型语言模型。我们使用官方的PyTorch v1.10.0
发布的二进制包,用CUDA 11.1
编译。该软件包与NCCL 2.10.3
捆绑在一起,从而用于分布式通信。硬件:我们在
12
台Supermicro AS-4124GO-NART
服务器上训练GPT-NeoX-20B
,每台服务器有8
个NVIDIA A100-SXM4-40GB GPU
,并配置了两个AMD EPYC 7532 CPU
。所有的GPU
都可以通过四个ConnectX-6 HCA
中的一个直接访问InfiniBand switched fabric
,从而用于GPU Direct RDMA
。两个NVIDIA MQM8700-HS2R
交换机通过16
条链路连接,构成了这个InfiniBand
网络的主干,每个节点的CPU socket
有一条链路连接到每个交换机。下图显示了一个节点的简化概览,该节点为训练而配置。
48.2 训练
由于对
20B
参数的模型进行超参数调优的难度很大,我们选择使用GPT-3
的超参数值来指导我们对超参数的选择。由于
GPT-3
没有以我们的20B
规模训练一个模型,我们在他们的13B
模型和175B
模型的学习率之间进行插值,得出的学习率为0.97e-5
。基于较小的模型上的实验结果,我们选择
0.01
的weight decay
。为了达到更高的训练吞吐量,我们选择使用与
GPT-3
的175B
模型相同的batch size
:大约3.15M token
,或者1538
个上下文其中每个上下文2048 token
(即,batch size = 1538
,序列长度2048
),总共训练150k
步,采用余弦学习率调度从而在训练结束时衰减到原始学习率的10%
。我们使用
AdamW
优化器,其中 $ (\beta_1,\beta_2) = (0.9, 0.95), \epsilon = 10^{-8} $ 。我们用ZeRO optimizer
来扩展AdamW
,通过将optimizer states
切分到各台worker
机器上从而来减少内存消耗。由于这种规模的模型权重和优化器状态不适合在单个
GPU
上使用,我们使用Megatron-LM
介绍的张量并行方案、与PipeDream
介绍的流水线并行方案相结合,从而在一组GPU
上分配模型。为了训练
GPT-NeoX-20B
,我们发现,考虑到我们的硬件设置,分配模型的最有效方式是将张量并行大小设置为2
、将流水线并行大小设置为4
。 这允许最密集的通信过程,张量并行、流水线并行发生在一个节点内,而数据并行通信发生在节点边界上。通过这种方式,我们能够实现并保持每个GPU
的117 TFLOPS
的效率。
训练数据:
GPT-NeoX-20B
是在Pile
上训练的,这是一个专门为训练大型语言模型而设计的大规模的数据集。它由22
个数据源的数据组成,粗略地分为5
个类别:学术写作:
Pubmed Abstracts and PubMed Central
、arXiv
、FreeLaw
、USPTO Backgrounds
、PhilPapers
、NIH Exporter
。网络爬取和互联网资源:
CommonCrawl
、OpenWebText
、StackExchange
、Wikipedia (English)
。散文:
BookCorpus
、Bibliotik
、Project Gutenberg
。对话:
Youtube subtitles
、Ubuntu IRC
、OpenSubtitles
、Hacker News
、EuroParl
。其它杂项:
GitHub
、DeepMind Mathematics dataset
、Enron Emails
。
总的来说,
Pile
数据由超过825GB
的原始文本数据组成。数据来源的多样性反映了我们对通用语言模型的渴望。某些数据子集被升采样以获得更平衡的数据分布。相比之下,GPT-3
的训练数据包括网络爬取(web-scrape
)数据、books
数据集、Wikipedia
。当把这项工作中的结果与GPT-3
进行比较时,训练数据几乎肯定是最大的、已知的unknown factor
。关于Pile
的全部细节可以在技术报告《The Pile: An 800GB dataset of diverse text for language modeling》
和相关数据表《Datasheet for the Pile》
中找到。特别值得注意的是,
Pile
包含了StackExchange
的爬取,并被预处理成Q/A
形式。关于微调数据的句法结构对下游性能的影响,有大量的、不断增长的工作。虽然到目前为止还没有专注于prompted pretraining
的系统工作,但最近的工作《Neural language models are effective plagiarists》
观察到,Pile
的StackExchange
子集的格式化(formulation
)似乎严重影响了code generation
。Tokenization
:对于GPT-NeoX-20B
,我们使用了与GPT-2
类似的BPE-based tokenizer
,总的词表规模同样为50257
。tokenizer
有三个主要变化:首先,我们在
Pile
的基础上训练一个新的BPE tokenizer
,利用其不同的文本来源来构建一个更通用的tokenizer
。第二,
GPT-2 tokenizer
将字符串开始处的tokenization
视为non-space-delimited token
。与GPT-2 tokenizer
相比,GPTNeoX-20B tokenizer
无论如何都要应用一致的space delimitation
。这解决了关于tokenization input
的前缀空格符存在与否的不一致问题。 下图中可以看到一个例子。第三,我们的
tokenizer
包含用于重复空格符的token
,其中重复空格符的数量从1
个空格到24
个空格。这使得GPT-NeoX-20B tokenizer
能够使用较少的token
对具有大量空格的文本进行tokenize
,例如,程序源代码、或arXiv LATEX
源代码文件。例如,
NeoX-20B
可以将连续的4
个空格视为一个token
,这在python
代码中经常见到。相比之下,GPT-3
将4
个空格视为四个token
,每个空格一个token
。
GPT-NeoX-20B tokenizer
和GPT-2 tokenizer
在50257
个token
中共享36938
个,重叠度为73.5%
。总体而言,GPT-NeoX-20B tokenizer
使用更少的token
数量来tokenize
Pile
验证集,但是使用了更多的token
来tokennize
C4
数据集。tokenization
对比的例子(全部的示例参考论文附录):数据重复:在过去的两年里,训练自回归语言模型时的标准做法是只训练一个
epoch
。最近的研究声称,看到了更进一步地对训练数据去重的好处。特别是,除了GPT-3
和Jurassic-1
之外,每个公开的大型语言模型要么使用某种形式的数据去重,要么没有足够详细地讨论训练数据被做了什么处理。当
Pile
最初被制作时,唯一存在的比GPT-NeoX-20B
更大的语言模型是GPT-3
,它对其训练数据的高质量子集进行了升采样。随后Pile
被发布,由于缺乏大规模消融实验的资源、并且在较小的数据规模上缺乏明显的影响,我们选择按原样使用Pile
。如下图所示,即使在20B
的参数规模下,我们也没有看到跨越一个epoch
边界后,测试损失和验证损失出现恶化。不幸的是,那些声称从数据去重中看到改进的论文,没有一篇论文发布了证明这一点的
trained models
,这使得复现和确认他们的结果很困难。《Deduplicating training data makes language models better》
发布了他们使用的数据去重的代码,我们打算在未来用它来更详细地探索这个问题。值得注意的是,即使在
loss
或task evaluation
方面没有改善,但仍有令人信服的理由为任何投入生产的模型对训练数据去重。具体而言,系统分析表明,在减少训练数据的泄漏方面有很大的好处。
48.3 实验
为了评估我们的模型,我们使用
EleutherAI Language Model Evaluation Harness
(《A framework for few-shot language model evaluation》
),这是一个用于语言模型评估的开源代码库,支持许多模型的API
。由于我们的目标是使一个强大的模型可以公开访问,我们与至少有10B
个参数可以公开访问的英语语言模型进行比较。我们与OpenAI API
上的GPT-3
模型、开源的FairSeq
稠密模型、以及GPT-J-6B
进行比较。我们不与T5
或其衍生模型进行比较,因为我们的评估方法假定这些模型是自回归的。虽然有一个已经公开发布的Megatron-11B checkpoint
,但发布的代码是不能用的,我们也没能让模型运行起来。我们没有与任何mixture-of-experts: MOE
模型进行比较,因为没有任何公开的MoE
模型能达到与10B
参数的稠密模型相当的性能。GPT-3 API
模型的规模没有得到官方确认,但我们遵循《A framework for few-shot language model evaluation》
,认为GPT-3
模型的规模为350M (Ada)
、1.3B (Babbage)
、6.7B (Curie)
和175B (Da Vinci)
。我们将GPT-J-6B
和GPT-NeoX-20B
都归入GPT-NeoX
模型的范畴,因为这两个模型都是用相同的架构训练的,并且是在同一个数据集上训练的。然而,我们用虚线将它们连接起来,以反映这两个模型不是像FairSeq
和GPT-3
模型那样在两个不同的尺度上训练的同一模型,它们是用不同的代码库、不同的tokenizer
、以及不同数量的token
来训练的。我们报告了两个
baseline
:人类水平性能、随机性能。所有的图表都包含代表两个标准差的error bar
,表明每个点周围的95%
的置信区间。对于一些图,标准差非常小,以至于区间不明显。我们在一组不同的
standard language model evaluation dataset
上评估我们的模型。我们将评估数据集为三个主要类别:自然语言任务、基于知识的高级任务、以及数学任务。我们对GPT-J-6B
、GPT-NeoX-20B
和FairSeq
模型进行了zero-shot
和five-shot
评估,但由于资金限制,只对GPT-3
模型进行了zero-shot
评估。由于篇幅限制,这里只展示了一个有代表性的结果子集,其余的在原始论文的附录中。自然语言任务:我们在一系列不同的
standard language model evaluation dataset
上评估我们的模型:ANLI
、ARC
、HeadQA (English)
、HellaSwag
、LAMBDADA
、LogiQA
、OpenBookQA
、PiQA
、PROST
、QA4MRE
、SciQ
、TriviaQA
、Winogrande
、以及Winograd Schemas Challenge (WSC)
的SuperGlue
版。数学任务:解决数学问题是一个在人工智能研究中有着悠久历史的领域,尽管大型语言模型在算术任务、以及用自然语言表述的数学问题上往往表现得相当糟糕。我们对
MATH
测试数据集以及GPT-3
介绍的数字算术问题进行评估。请注意,MATH
测试数据集通常都会进行微调,但由于计算上的限制,我们在这里只对模型进行zero-shot
和five-shot
评估。基于知识的高级任务:我们还对我们的模型回答事实问题(
factual question
)的能力感兴趣,这种事实问题需要高级知识。为了做到这一点,我们使用了《Measuring massive multitask language understanding》
开发的各种不同领域的选择题数据集。按照这个数据集的通常做法,我们聚焦于按学科领域聚合的结果: 如下图所示,包括人文、社会科学、STEM
和杂项。我们从《Measuring massive multitask language understanding》
的five-shot GPT-3
结果出发,报告了five-shot
的性能,以便与以前的工作相比较。
自然语言任务的结果:虽然
GPT-NeoX-20B
在某些任务(如ARC
、LAMBADA
、PIQA
、PROST
)上优于FairSeq 13B
,但在其他任务(如HellaSwag
、LogiQA
的zero-shot
)上表现不佳。总的来说,在我们所做的32
项评估中,我们在22
项任务中表现优异,在4
项任务中表现不佳,在6
项任务中处于误差范围之内。到目前为止,我们最弱的表现是在
HellaSwag
上,在zero-shot
和five-shot
的评估中,我们的得分都比FairSeq 13B
低四个标准差。同样,GPT-J
在HellaSwag
上的表现在zero-shot
中比FairSeq 6.7B
低三个标准差,在five-shot
中低六个标准差。我们发现这种巨大的性能损失在很大程度上是无法解释的;虽然我们最初认为Pile
中大量的非散文的数据子集是罪魁祸首,但我们注意到GPT-J
和GPT-NeoX
在非常相似的Lambada
任务上比FairSeq
模型的性能要好得多,而且差距大致相同。数学:虽然
GPT-3
和FairSeq
模型在算术任务上的表现通常相当接近,但它们的表现一直被GPT-J
和GPT-NeoX
所超越。我们猜测,这可以追溯到训练数据中普遍存在的数学方程,但我们警告说,人们不应该认为这意味着在Pile
上训练会产生更好的out-of-distribution
的算术推理。《Impact of pretraining term frequencies on few-shot reasoning》
表明,Pile
中的数学方程的频率与GPT-J
在该方程上的表现有很强的相关性,我们认为这在GPT-NeoX 20B
、FairSeq
和GPT-3
中没有理由不存在。遗憾的是,我们无法研究FairSeq
和GPT-3
模型中的这种效应,因为作者没有公布他们的训练数据。基于知识的高级任务:虽然
GPT-NeoX
和FairSeq
模型在five-shot
的情况下,与GPT-3
相比,在MMLU
上都表现出优势的性能(Figure 7
),但在zero-shot
的情况下,它们的性能要接近很多( 原始论文附录中的Table 10 ~ 13
)。《Measuring mathematical problem solving with the MATH dataset》
声称发现,相对于zero-shot
,few-shot
并不能提高性能,但他们只研究了GPT-3
。相比之下,我们发现GPT-NeoX
和FairSeq
模型在只有5
个样本的情况下确实有很大的改善。我们认为这是一个警告,不要只根据一个模型得出关于评价指标的强烈结论,并鼓励研究人员开发新的evaluation benchmark
从而利用多个不同类别的模型,以避免将他们的结论过度适用于一个特定的模型。强大的
Few-Shot Learning
:我们的实验表明,GPT-J-6B
和GPT-NeoX-20B
从fews-hot
评估中获得的好处大大超过FairSeq
模型。当从0-shot
评估到5-shot
评估时,GPT-J-6B
提高了0.0526
,GPT-NeoX-20B
提高了0.0598
,而FairSeq 6.7B
和13B
模型分别提高了0.0051
和0.0183
。这一结果在统计学上是显著的,并且对prompting
的扰动是鲁棒的。虽然我们目前对此没有特别的解释,但我们认为这是对我们模型的强烈推荐。虽然由于资金限制,我们没有对GPT-3
进行系统的five-shot
评估,但Table 10 ~ 13
(参考原始论文中的附录)和Figure 7
中显示的性能变化进一步支持了GPT-J-6B
和GPT-NeoX-20B
能够从five-shot examples
中获得明显的收益的说法。
48.4 讨论
局限性:
训练的最佳超参数:超参数调优是一个昂贵的过程,对于几十亿参数的模型来说,全面进行调优往往是不可行的。由于上述局限性,我们选择了根据较小规模的实验、以及根据以前发表的工作(
GPT-3
)的超参数的插值(针对我们的模型规模),从而选择超参数。然而,我们的模型架构和training setup
的几个方面(包括数据和tokenizer
),都与GPT-3
有很大分歧。因此,几乎可以肯定的是,我们的模型所使用的超参数不再是最佳的,而且有可能从来都不是最佳的。缺乏
Coding Evaluation
:在这个模型的开发过程中,我们做出的许多设计选择都是为了提高coding task
的性能。然而,我们低估了现有coding benchmark
(《Evaluating large language models trained on code》
)的难度和成本,因此无法在该领域评估模型。我们希望在未来能做到这一点。Data Duplication
:最后,缺乏数据去重也可能对下游性能产生影响。最近的工作表明,训练数据的去重会对困惑度产生很大影响(《Deduplicating training data makes language models better》
)。虽然我们的实验没有显示出这种迹象,但由于有很多研究者发现了相反的结果,所以很难否定数据去重。
发布一个
20B
参数的LLM
:目前的研究现状是,大型语言模型只是人们训练和发表文章的东西,但并没有实际发布。据我们所知,GPT-NeoX-20B
是有史以来公开发布的最大、性能最强的稠密语言模型。各个团体对不发布大型语言模型提出了各种理由,但最主要的理由是:宣称公众对LLM
的访问会造成伤害。发布这个模型是我们让研究人员广泛使用
GPT-NeoX-20B
的工作的开始,而不是结束。由于模型的大小,在两个RTX 3090Ti
或单个A6000 GPU
上进行推理是最经济的,而微调需要明显更多的计算。真正促进LLM
的广泛使用意味着除了模型本身之外,还要促进computing infrastructure
的广泛使用。我们计划通过继续努力降低我们模型的推理成本,以及与研究人员合作,提供他们在我们的模型上进行实验所需的computing infrastructure
,从而在这个问题上取得进展。我们强烈鼓励那些对研究GPT-NeoX-20B
感兴趣、但缺乏必要的infrastructure
的研究人员主动与我们联系,讨论我们如何为你助力。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论