数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 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
- 并发
七、OPT [2022]
在大规模文本集合上训练的大语言模型
Large language model: LLM
已经展示出令人惊讶的能力来生成文本、执行zero-shot/few-shot learning
。虽然在某些情况下,公众可以通过付费API
与这些模型交互,但是完整的模型访问权限仅限于少数资源丰富的实验室。这种受限的访问权限限制了研究人员的能力来研究这些大语言模型如何工作以及为什么工作,从而阻碍了在robustness, bias, toxicity
等领域的已知挑战方面取得进展。在论文
《OPT: Open Pre-trained Transformer Language Models》
中,作者介绍了Open Pretrained Transformer: OPT
,这是一套decoder-only pre-trained transformer
,参数范围从125M
到175B
。 论文的目标是与感兴趣的研究人员充分和负责地分享OPT
。作者训练OPT
模型从而大致匹配GPT-3
族模型的性能和大小,同时在数据收集和高效训练方面应用最新的最佳实践。作者开发这一套OPT
模型的目的是实现可重复的和负责任的大规模研究,并在研究这些大语言模型的影响时带来更多的观点。risk, harm, bias, toxicity
等等的定义,应该由协作的研究团体作为一个整体来阐述,这只有在模型可供研究时才有可能。作者正在发布
125M
到66B
参数之间的所有模型,并将根据请求提供对OPT-175B
的完全的研究访问。下列研究人员将获准进入:- 隶属于政府、民间社会和学术界的组织内的研究人员。
- 工业研究实验室内的研究人员。
作者还发布了模型创建日志和代码库(
https://github.com/facebookresearch/metaseq
),该代码库支持在992
个80GB
的A100 GPU
上训练OPT-175B
,每个GPU
达到147 TFLOPS/s
的利用率。通过该实现,以及使用最新一代的NVIDIA
硬件,我们能够开发OPT-175B
,其碳排放量carbon footprint
仅为GPT-3
的1/7
。虽然这是一个重大的成就,但是创建这样一个模型的能源成本仍然是不小的,反复地replicate
这种规模的模型只会放大这些大语言模型不断增长的计算量。论文认为,考虑到这些大语言模型在许多下游
language application
中的核心地位,整个人工智能社区(包括学术研究人员、民间社会、政策制定者、以及工业界)必须共同努力,围绕负责任的人工智能(尤其是负责任的大语言模型)制定明确的指导方针。更广泛的人工智能社区需要访问这些模型,以便进行可重复的研究,并共同推动该领域向前发展。随着OPT-175B
和更小规模baseline
的发布,作者希望增加声音的多样性,从而定义这些技术的道德考虑。相关工作:自从
Transformer
(《Attention is all you need》
)和BERT
(《BERT: Pre-training of deep bidirectional transformers for language understanding》
)发表以来,NLP
领域经历了向使用具有自监督预训练的大语言模型的巨大转变。包括T5
(《Exploring the limits of transfer learning with a unified text-to-text transformer》
)和MegatronLM
(《Megatron-lm: Training multi-billion parameter language models using model parallelism》
)在内的多个masked language model
都显示出了scale
上的一致的改善。这些scaling
增益不仅来自于模型中参数总量的增加,还来自于预训练数据的数量和质量(《Roberta: A robustly optimized bert pretraining approach》
、《Training compute-optimal large language models》
(Chinchilla
))。- 自回归语言模型的模型规模增长最快,从
1.17M
参数(《Improving language understanding with unsupervised learning》
)增加到超过500B
参数(《 Using deepspeed and megatron to train megatron-turing NLG 530b, A large-scale generative language model》
、《Palm: Scaling language modeling with pathways》
)。由此带来的文本生成流畅性和质量的巨大改善首先体现在GPT-2
(《Language models are unsupervised multitask learners》
)中,并在GPT-3
(《 Language models are few-shot learners》
)和更later
的模型中得到进一步改善。尽管现在已经训练了各种非常大的(超过100B
个参数)的生成式模型(《Jurassic-1: Technical details and evaluation》
(Jurassic-1
)、《Scaling language models: Methods, analysis & insights from training gopher》
(Gopher
)、《Lamda: Language models for dialog applications》
、《Using deepspeed and megatron to train megatron-turing NLG 530b, A large-scale generative language mode》
、《Palm: Scaling language modeling with pathways》
),但是它们都是闭源代码,只能在内部或者通过付费API service
来访问。包括EleutherAI
(《Gpt-neox-20b: An opensource autoregressive language model》
)和BigScience
(https://huggingface.co/bigscience/tr11-176B-ml-logs/tensorboard
)在内的非盈利研究结构在开源LLM
方面做出了一些引人注目的努力。这些模型在预训练数据、目标语言target language
、模型规模方面不同于OPT
模型,这使得社区可以比较不同的预训练策略。 - 自从
GPT-3
以来,大语言模型的主要评估准则一直是prompt-based
(《Gpt-neox-20b: An opensource autoregressive language model》
、《Scaling language models: Methods, analysis & insights from training gopher》
、《Palm: Scaling language modeling with pathways》
),本文中也执行该准则。这在很大程度上是因为在许多任务上进行评估的便利性,因为该准则不需要专门的task-specific fine-tuning
。Prompting
本身有很长的历史:cloze evaluation
可以追溯到十几年前(《Unsupervised learning of narrative event chains》
、《A corpus and evaluation framework for deeper understanding of commonsense stories》
)。最近,prompting
或者masked infilling
已被用于probe models for knowledge
(《Language models as knowledge bases?》
)、或者用于执行各种NLP
任务(GPT-2
、GPT-3
)。也有一些工作是在在较小模型中引发prompting behavior
、改善prompting
的灵活性(《AutoPrompt: Eliciting Knowledge from Language Models with Automatically Generated Prompts》
)、以及理解prompting
为什么以及如何工作(《 What makes good in-context examples for gpt-3?》
、《Rethinking the role of demonstrations: What makes in-context learning work?》
)。 - 最近的工作表明:通过微调模型来直接响应
instruction-style prompting
有所增益。然而,有效的prompt engineering
仍然是一个未解决的研究挑战。结果会随着prompt
的选择而发生显著且不可预测的变化(《Fantastically ordered prompts and where to find them: Overcoming few-shot prompt order sensitivity》
),并且模型似乎并不像我们预期的那样完全理解prompt
(《Do prompt-based models really understand the meaning of their prompts》
)。此外,在没有验证集的情况下编写prompt
具有挑战性,这就带来问题,即我们在实践中在多大程度上真正实现了zero-shot/few-shot learning
(《True few-shot learning with language models》
)。我们并不试图解决这些关于prompting
的问题,相反,我们的目的只是在现有环境下提供对OPT-175B
的评估。然而,我们希望OPT-175B
的full release
将使其他人能够在未来更好地研究这些挑战。
- 自回归语言模型的模型规模增长最快,从
7.1 方法
模型:我们给出了八个
Transformer
语言模型的结果,它们的参数规模从125M
到175B
。模型架构的细节如下表所示。为了提高透明度并降低训练不稳定性的风险,我们的模型和超参数在很大程度上遵循GPT-3
,除了变化batch size
从而提高计算效率。训练配置
Training Setup
:- 对于权重初始化,我们遵循
Megatron-LM
代码库(https://github.com/NVIDIA/Megatron-LM/blob/main/examples/pretrain_gpt3_175B.sh
)中提供的相同设置,使用均值为零且标准差为0.006
的正态分布。 - 输出层的标准差按照
$ 1.0/\sqrt{2L} $ 来缩放,其中 $ L $ 是layer
的总数。 - 所有
bias
都初始化为零,所有模型都使用ReLU
激活函数以及2048
的序列长度。
我们使用
AdamW
优化器,设置 $ (\beta_1,\beta_2) $ 为 $ (0.9,0.95) $ ,以及weight decay
为0.1
。我们遵循线性的
learning rate schedule
,在OPT-175B
中的前面2000 steps
(或者在我们的更小的baseline
中选择前面的375M
个token
)中将学习率从0
warm up
到最大值,并在300B
个token
上衰减到最大学习率的10%
。还需要对学习率进行一些
mid-flight
的调整(参考后文)。根据不同的模型,我们的
batch size
设定为0.5M ~ M
,并且在整个训练过程中固定不变。
- 我们始终使用
0.1
的dropout
,但是我们不对embedding
应用任何dropout
。 - 我们将梯度范数超过
1.0
时裁剪到1.0
,除了一些mid-flight
调整时将这个阈值从1.0
降低到0.3
(参考后文)。 - 我们还包括一个梯度预除因子
gradient pre-divide factor
,从而在计算所有rank
的梯度时降低上溢出/下溢出的风险(把除以word size
$ N $ 的操作拆分为两个除以 $ \sqrt N $ 的操作)。
- 对于权重初始化,我们遵循
预训练语料库
Pre-training Corpus
:预训练语料库包含RoBERTa
、Pile
、和PushShift.io Reddit
。所有语料库先前都被收集或过滤为主要包含英文的文本,但是CommonCrawl
语料库中仍然存在少量非英语的数据。我们通过
MinhashLSH
过滤掉Jaccard similarity
超过0.95
的文档,从而删除了所有数据集中的重复文档。我们发现Pile
尤其充满了重复的文件,并建议未来使用Pile
的研究人员执行额外的重复数据删除处理。我们使用
GPT-2
的byte-level BPE tokenizer
。我们的最终语料库包含大约180B
个token
。RoBERTa
:我们包括了RoBERTa
语料库的BookCorpus
和Stories
子集,并利用了CCNews
的updated version
,其中包含截至2021
年9
月28
日的新闻报导。这个CCNews v2
语料库的预处理方式与原始RoBERTa
的CCNews
相同。Pile
:我们包含了Pile
的一个子集,包括:CommonCrawl
、DM Mathematics
、Project Gutenberg
、HackerNews
、OpenSubtitles
、OpenWebText2
、USPTO
、Wikipedia
。Pile
的其它子集被删除,因为我们发现它们增加了不稳定的风险(这是通过在1.3B
规模时所引起的梯度范数峰值的趋势来衡量的),或者被认为是不合适的。所有的子集都经过额外的临时的whitespace normalization
。PushShift.io Reddit
:这是《The pushshift reddit dataset》
所提出的数据集的一个子集,并且之前由《Recipes for building an open-domain chatbot》
所使用。为了将conversational tree
转换为语言模型可以访问的文档,我们提取了每个thread
(即,发表的帖子)中最长的评论链,并丢弃了树中的所有其它path
。这将语料库减少了大约66%
。
训练效率:我们在
992
个80GB
的A00 GPU
上训练OPT-175B
,方法是利用具有Megatron-LM Tensor Parallelism
的Fully Sharded Data Parallel
。我们实现了每个GPU
高达147 TFLOP/s
的利用率。我们将Adam state
以FP32
保存,因为我们将它分片到所有host
中,而模型权重仍然以FP16
保存。为了避免下溢出,我们使用了动态损失缩放dynamic loss scaling
,如《Mixed precision training》
所述。训练过程:这里我们描述了在
OPT-175B
预训练期间出现的重大的训练过程调整training process adjustment
。硬件故障
Hardware Failures
:在训练OPT-175B
时,我们在计算集群中遇到了大量的硬件故障。在2
个月的时间里,硬件故障导致100
台主机上至少35
次手动重启、以及cycling
(即自动重启)。在手动重启期间,training run
被暂停,并进行了一系列诊断测试从而检测有问题的节点。然后关闭标记的异常节点,并从最后保存的checkpoint
恢复训练。考虑到主机cycled out
的数量和手动重启的数量之间的差异,我们估计有70+
次由于硬件故障而自动重启。损失函数发散
Loss Divergences
:损失发散也是我们训练过程中的一个问题。当损失发散时,我们发现降低学习率并从一个较早的checkpoint
重新开始可以让作业恢复并继续训练。我们注意到:损失发散、动态损失标量dynamic loss scalar
崩溃到0
、以及最后一层激活值activation
的L2
范数达到峰值,这三者之间的相关性。这些观察结果使我们选择这样的启动点:我们的动态损失标量仍处于健康状态(大于等于1.0
),并且在该点之后的最后一层激活值的范数呈现下降趋势而不是无限增长的趋势。我们的
empirical LR schedule
如下图所示。在训练的早期,我们还注意到更低的梯度裁剪(从
1.0
降低到0.3
)有助于稳定性。有关详细信息,请参考我们发布的训练日志。下图展示了我们验证损失的曲线。
Other Mid-flight Changes
:我们进行了许多其它实验性的mid-flight changes
来处理损失发散。其中包括:- 切换到普通
SGD
(优化很快进入瓶颈,然后我们又切换回AdamW
)。 - 重设动态损失标量(这有助于恢复一些发散,但是无法解决全部的发散)。
- 切换到更新版本的
Megatron
(这减少了激活值范数的压力并提高了吞吐量)。
- 切换到普通
7.2 评估
7.2.1 Prompting & Few-Shot
我们在
16
个标准的NLP
任务上评估我们的模型,这些任务在一些文献中被使用:HellaSwag
:《Hellaswag: Can a machine really finish your sentence? 》
。StoryCloze
:《A corpus and evaluation framework for deeper understanding of commonsense stories》
。PIQA
:《Piqa: Reasoning about physical commonsense in natural language》
。ARC Easy and Challenge
:《Think you have solved question answering? try arc, the AI2 reasoning challenge》
。OpenBookQA
:《Can a suit of armor conduct electricity? A new dataset for open book question answering》
。WinoGrad
:《The Winograd schema challenge》
。WinoGrande
:《Winogrande: An adversarial winograd schema challenge at scale》
。SuperGLUE
:《SuperGLUE: A stickier benchmark for general-purpose language understanding systems》
。
我们遵从
GPT-3
并使用它的prompt
和整体实验配置。我们主要与GPT-3
进行比较,旨在重新实现它的评估配置evaluation setting
,但是在可能的情况下在每个任务上报告其它大语言模型的性能(Jurassic-1
、Gopher
、Chinchilla
、GPT-NeoX-20B
)。我们报告了准确率指标(考虑到评估指标的一致性,对于
MultiRC
和ReCoRD
省略了F1
)。对于SuperGLUE benchmark
中的Winograd Schema Challenge: WSC
任务,我们遵循GPT-3
并将该任务形式化为选择题,众所周知这将影响性能(《Precise task formalization matters in Winograd schema evaluations》
)。Zero-shot
:所有14
个任务的总体平均zero-shot
性能如下图所示(忽略了MultiRC
和WIC
)。总体而言,我们看到我们的平均性能遵循GPT-3
的趋势。然而,不同任务的性能可能会有很大差异,完整的数据如下图所示(原始论文的附录
A
) 。注意,我们有意从这些均值中删除了
MultiRC
和WIC
任务的结果,因为这两个数据集似乎系统性地倾向于GPT-3
或者OPT
。可以看到:
OPT
在10
个任务上的表现大致与GPT-3
相当,在3
个任务上(ARC
的两个任务和MultiRC
任务)表现不佳。- 在
3
个任务上(CB, BoolQ, WSC
),我们发现GPT
和OPT
模型在规模scale
方面都表现出不可预测的行为,这可能是由于这3
个任务的验证集规模较小(分别为56
、277
、104
个样本)。 - 在
WIC
中,我们看到OPT
模型总是优于GPT-3
模型,尽管GPT-3
报告的数字似乎也值得怀疑,因为WIC
是一个二分类任务。 - 对于
MultiRC
,我们无法在我们的评估配置中使用Davinci API
复现GPT-3
的结果,这表明该任务的评估方法存在差异。 - 对于
BoolQ
和WSC
,我们注意到OPT
和GPT
模型似乎都徘徊在majority-class
准确率附近,这表明概率质量probability masses
中的小扰动可能在评估中占主导地位。 Chinchilla
和Gopher
在参数规模方面的表现与其它模型大致一致,而PaLM
通常在所有配置中表现更好,即使在控制参数数量时也是如此。我们推测PaLM
的良好性能主要来自于更高质量和多样性的预训练数据。
One-shot and Few-shot
:下图展示了平均的multi-shot
性能(同样地,忽略了MultiRC
和WIC
)。完整的数据如下图所示(原始论文的附录
A
) 。可以看到:
在所有指标的均值中,我们发现
OPT
模型的性能类似于GPT-3
模型。然而,与
zero-shot
一样,分解每个任务的这些结果展示了一个不同的故事:- 在
zero-shot
相同的10
个数据集中,我们看到OPT
模型和GPT-3
模型的性能相似。 - 在
BoolQ, CB, WSC, RTE
数据集上,我们发现OPT
和GPT-3
模型在规模scale
方面都表现出不可预测的行为。 - 在
MultiRC
中,我们始终看到OPT
模型与GPT-3
模型相比表现不佳。与zero-shot
评估类似,我们猜测我们的one-hot
评估和few-shot
评估的配置可能与GPT-3
显著不同。
- 在
7.2.2 Dialogue
众所周知,大语言模型是现代对话模型
dialogue model
的一个组成部分,我们还在几个开源对话数据集上评估OPT-17B
。具体而言,我们遵循《Recipes for building an open-domain chatbot》
,并评估了以下数据集:ConvAI2
:《The second conversational intelligence challenge (ConvAI2)》
。Wizard of Wikipedia
:《Wizard of Wikipedia: Knowledge-powered conversational agents》
。Empathetic Dialogues
:《Towards empathetic opendomain conversation models: A new benchmark and dataset》
。Blended Skill Talk
:《Can you put it all together: Evaluating conversational agents’ ability to blend skills》
。Wizard of Internet
:《Internet-augmented dialogue generation》
。
我们重点比较现有的开源对话模型,包括
fine-tuned BlenderBot 1
(《Recipes for building an open-domain chatbot》
),及其预训练部分Reddit 2.7B
。我们还与fine-tuned R2C2 BlenderBot
进行比较,这是一个由《Language models that seek for knowledge: Modular search & generation for dialogue and prompt completion》
所训练的2.7B
参数的BlenderBot-like
模型。我们遵从
ConvAI2
竞赛(《The second conversational intelligence challenge (ConvAI2)》
)的指标报告Perplexity
和Unigram F1 (UF1) overlap
。为了控制每个模型中的不同tokenization
,我们将所有perplexity
标准化为GPT-2 tokenizer
的空间。我们还注意哪些模型在这些对话任务上是监督的,哪些模型是无监督的。对于
OPT-175B
,所有的对话生成都使用贪婪解码greedy decoding
执行最多32
个token
。除了交替使用"Person 1:"
和"Person 2:"
的对话行之外,我们没有尝试prompt
模型。其它模型使用
BlenderBot 1
中的对话生成参数。实验结果如下表所示。可以看到:
OPT-175B
在所有任务上的表现都显著优于同样无监督的Reddit 2.7B
模型,并且与完全监督的BlenderBot 1
模型具有竞争力,尤其是在ConvAI2
数据集中。在所有模型都完全无监督的
Wizard-of-Internet
数据集上,我们看到OPT-175B
达到了最低的perplexity
。在有监督的
Wizard-of-Wikipedia
数据集上,OPT-175B
仍然低于有监督的模型。我们有些惊讶的是,在
ConvAI2
数据集上,无监督OPT-175B
和监督模型BlenderBot 1
具有相同的竞争力。这可能表明ConvAI2
数据集泄露到general pre-training corpus
、甚至是下表中用于评估的验证集中。为了解决数据泄露问题,我们在预训练语料库中搜索了
ConvAI2
的第一个对话first conversation
,但是没有发现任何overlap
。- 我们还在从未公开发布过的
ConvAI2 hidden test
集合上评估了OPT-175B
,并达到了10.7 ppl
和.185 UF1
,与验证集的性能相匹配。 - 我们在
ConvAI2-like
的MultiSessionChat: MSC
数据集(《Beyond goldfish memory: Long-term open-domain conversation》
)的子集上评估了OPT-175B
,并获得了9.7 ppl
和.177 UF1
,表明OPT-175B
模型在多个PersonaChat-like
数据集中很好地泛化。
由于
MSC
数据集和WoI
数据集都是在CommonCrawl snapshot
(由预训练语料库所使用)之后发布的,因此数据泄露的风险很小。我们得出结论:OPT-175B
具有很强的能力在不同的对话中保持一致的角色consistent persona
,在LaMDA
中也强调了这一行为。- 我们还在从未公开发布过的
7.3 Bias & Toxicity 评估
为了了解
OPT-175B
的潜在危害,我们评估了一系列benchmark
,关于仇恨言论检测hate speech detection
、刻板印象stereotype awareness
、以及有毒内容生成toxic content generation
。尽管这些benchmark
可能存在缺陷,但是这些评估结果为了解OPT-175B
的局限性迈出了第一步。我们主要与GPT-3 Davinci API
进行比较,因为这些benchmark
尚未包含在GPT-3
论文中。Hate Speech Detection
:使用《ETHOS: an online hate speech detection dataset》
提供的ETHOS
数据集,并根据《Detecting hate speech with gpt-3》
的指示,我们度量了OPT-175B
的能力,从而确定某些英语statement
是否具有种族主义或性别歧视(或者两者都不是)。在
zero-shot/one-shot/few-shot
的二元分类case
中,我们会给模型提供文本,并要求模型回答该文本是种族主义还是性别歧视,并提供yes/no
的response
。在few-shot
的多类分类case
中,模型需要提供yes/no/neither
的response
。实验结果如下表所示。可以看到:在所有的
zero-shot/one-shot/few-shot setting
中,OPT-175B
的性能显著优于GPT-3 Davinci API
。我们推测这来自于两个来源:
- 通过
GPT-3 Davinci API
进行评估可能会带来安全控制机制safety control mechanism
,而这个机制是原始的175B GPT-3
模型(原始论文中的)所没有的(从而导致无法区别种族主义或性别歧视)。 - 在预训练数据集中大量存在未经审核的社交媒体讨论
social media discussion
,这为此类分类任务提供了额外的inductive bias
。
- 通过
CrowS-Pairs
:CrowSPairs
(《Crows-pairs: A challenge dataset for measuring social biases in masked language models》
)是为masked language model
开发的,它是一个众包的benchmark
,旨在度量9
个类目中的intra-sentence level
的bias
,这些类目包括:性别gender
、宗教religion
、种族/肤色race/color
、 性取向sexual orientation
、年龄age
、国籍nationality
、残疾disability
、外貌physical appearance
、社会经济状况socioeconomic status
。每个样本由一对句子组成,代表关于某个群体的刻板印象
stereotype
或者anti-stereotype
,目标是衡量模型对stereotypical expression
的偏好。得分越高则表明模型表现出的bias
越大。实验结果如下表所示。可以看到:与
GPT-3 Davinci API
相比,OPT-175B
似乎在除了宗教之外的几乎所有类目中都表现出更多的stereotypical bias
。同样地,这可能是由于训练数据的差异所致。
《Crows-pairs: A challenge dataset for measuring social biases in masked language models》
表明:Pushshift.io Reddit
语料库比其它语料库(如Wikipedia
)在stereotype
和歧视性文本discriminatory text
上具有更高的发生率。鉴于Pushshift.io Reddit
语料库是OPT-175B
的一个主要数据源,因此OPT-175B
可能已经学习了更多的歧视性关联,从而直接影响了它在CrowS-Pairs
上的性能。StereoSet
:遵从《Jurassic-1: Technical details and evaluation》
和《Efficient large scale language modeling with mixtures of experts》
,我们使用StereoSet
(《Measuring stereotypical bias in pretrained language models》
)来衡量4
个类目的stereotypical bias
:职业profession
、性别gender
、宗教religion
、种族race
。除了intra-sentence
度量(类似于CrowSPairs
),StereoSet
还包括inter-sentence level
度量从而测试模型融合additional context
的能力。为了说明
bias detection
和language modeling capability
之间的潜在trade-off
,StereoSet
包含两个指标:Language Modeling Score: LMS
、Stereotype Score: SS
。这两个指标然后被组合从而构成Idealized Context Association Test: ICAT
分。不像《Jurassic-1: Technical details and evaluation》
,我们通过token count
而不是character count
来归一化得分,他们报告说通过character count
来归一化改进了几个模型的指标。结果如下表所示。可以看到:
GPT-3 Davinci API
和OPT-175B
在总分上表现出相似的得分(尤其是在后两个类目)。具体而言:
GPT-3 Davinci API
在职业和种族方面表现出色,而OPT-175B
在性别和宗教方面表现出色。OPT-175B
在SS
指标上的整体表现更好,而GPT-3 Davinci API
在LMS
指标上的表现通常更好。
RealToxicityPrompts
:我们通过RealToxicityPrompts
数据集(《RealToxicityPrompts: Evaluating neural toxic degeneration in language models》
)评估OPT-175B
对毒性语言toxic language
做出的反应。遵从PaLM
,对来自RTP
数据集的每10k
个随机采样的prompt
,我们使用nucleus sampling
采样25
个长度为20 token
的generation
(其中 $ p=0.9 $ ),然后报告continuation
的平均毒性概率mean toxicity probability
(根据原始prompt
的bucketed toxicities
进行分层)。为了比较,我们报告了来自
GPT-3 Davinci API
和PaLM
的bucketed toxicity rate
。结果如下表所示。可以看到:
OPT-175B
的toxicity rate
高于PaLM
和GPT-3 Davinci API
。- 随着
prompt
的毒性的增加,所有三个模型都增加了生成toxic continuation
的可能性,这与《Palm: Scaling language modeling with pathways》
等人的观察结果一致。
与我们在仇恨言论检测方面的实验一样,我们怀疑在预训练语料库中包含未经审核的社交媒体文本会提高模型对有毒文本
toxic text
的熟悉程度,从而倾向于提高生成和检测有毒文本。取决于下游application
的具体要求,这种对有毒语言toxic language
的强烈意识strong awareness
可能是想要的也可能是不想要的。OPT-175B
的未来应用应该考虑模型的这一方面,并且采取额外的缓解措施,或者酌情完全避免使用。Dialogue Safety Evaluations
:最后,我们在两个Dialogue Safety
评估中比较OPT-175B
:- 第一个是
SaferDialogues
(《Saferdialogues: Taking feedback gracefully after conversational safety failures》
),它衡量从明显的安全故障中恢复的能力(通常以道歉或承认错误的形式)。 - 第二个是
Safety Bench Unit Tests
(《Anticipating safety issues in e2e conversational ai: Framework and tooling》
),它衡量模型响应的不安全程度,分为4
个level
的topic sensitivity
:Safe
、Realistic
、Unsafe
、Adversarial
。我们对比了几个现有的开源对话模型。
实验结果如下表所示,可以看到:
在
SaferDialogues
和Unit Tests
上,OPT-175B
和Reddit 2.7B
具有相似的性能,其中OPT-175B
在Safe
和Adversarial
的setting
上表现略好(得分越低越好)。我们发现在精选的对话数据集(
BlenderBot 1
、R2C2
)上微调的模型总体上具有较低的毒性,这与《Recipes for building an open-domain chatbot》
和《Recipes for safety in open-domain chatbots》
一致。我们得出结论:未来对
OPT-175B
的对话实验应该包含对curated dataset
的显式微调,从而提高安全性。
- 第一个是
7.4 局限性
在前面章节中,我们对所发布的不同规模的模型进行了广泛的评估。我们看到
OPT
模型在标准评估数据集上与GPT-3
模型的性能相当。此外,我们进行了safety
、bias
、以及inclusion
的评估,再次看到在毒性和仇恨言论检测方面,OPT
和GPT-3
模型有一些大致相当的性能。然而,这种评估可能无法完全描述这些模型的全部局限性。总体而言,我们定性地观察到OPT-175B
受到其它大语言模型中所指出的相同局限性。具体而言:- 我们发现
OPT-175B
无法很好地处理陈述性指令declarative instruction
或直截了当的疑问句。用这样的指令进行prompting
倾向于一个以该指令开始的对话的模拟,而不是一条指令的执行。在InstructGPT
(《Training language models to follow instructions with human feedback》
)的指导下,instruction learning
的未来工作可能会缓解这些局限性。 OPT-175B
也倾向于重复,很容易陷入循环。虽然采样可以降低重复行为的发生率,但是我们有趣地发现:当仅采样one generation
时,该问题并未完全消除。未来的工作可能希望纳入更多的现代策略,从而减少重复和提高多样性,如unlikelihood training
(《Neural text generation with unlikelihood training》
)、best-first decoding
(《Best-first beam search》
)。- 与其它大语言模型类似,
OPT-175B
会生成与事实不符的statement
。这在信息准确性至关重要的application
中尤为有害,例如医疗保健、科学发现。最近,一些工作报告了检索增强模型retrieval-augmented mode
可以提高大语言模型的事实正确性factual correctness
。我们相信OPT-175B
也将在未来的迭代中受益于检索增强。 - 如前所述,我们还发现
OPT-175B
具有高度倾向来生成有毒语言toxic language
和强化有害刻板印象harmful stereotype
,即使在提供相对无害的prompt
时也是如此,并且很容易发现对抗的prompt
。在缓解毒性和bias
方面,人们已经做了大量工作。根据下游应用,OPT-175B
的未来使用可能需要采用这些缓解措施,尤其是在任何实际部署之前。鉴于我们的主要目标是复制GPT-3
,我们选择不在第一版中应用这些缓解措施。
总之,我们仍然认为这项技术的商业部署还为时过早。尽管包括
data sheets
和model cards
,我们认为,为了负责任地使用数据,应该通过额外的数据特征和选择标准对训练数据进行更多的审查。当前的做法是向模型提供尽可能多的数据,并在这些数据集中最小化选择(即,无需人工选择,让模型自己去学习)。尽管有全面的评估,但我们最好有更精简和一致的评估配置,从而确保评估场景的可复现性。在in-context learning
中,不同的prompting
方式和不同的shot
数量会产生不同的结果。我们希望OPT
模型的公开发布将使更多的研究人员致力于这些重要的问题。- 我们发现
7.5 发布的注意事项
遵从
Partnership for AI
对每个研究人员的建议,以及NIST
概述的治理指南governance guidance
,我们正在通过我们的logbook
以及我们的代码来披露训练OPT-175B
所涉及的所有细节,并为研究人员提供访问OPT-175B
的模型权重,以及一套小型baseline
(该baseline
反映了OPT-175B
的setup
)。我们的目标是对OPT-175B
的开发周期完全负责,只有通过提高大语言模型的开发的透明度,我们才能在更广泛的部署之前开始了解大语言模型的局限性和风险。通过分享我们日常训练过程的详细说明,我们不仅批露了训练当前版本的
OPT-175B
使用了多少计算,而且还批露了当底层基础设置或训练过程本身随着模型规模增大而变得不稳定时所需的人力开销。这些细节通常在以前的出版资料中被忽略,可能是由于无法完全消除mid-flight
的变化(没有大幅增加计算预算compute budget
)。我们希望通过揭示某些临时性ad-hoc
的设计决定是如何做出的,从而使得我们可以在未来改进这些做法,并共同提高开发这种规模的模型的实验鲁棒性experimental robustness
。在这些说明之外,
metaseq
代码库本身是我们许多实现细节的最终真相来源final source of truth
。通过发布我们的开发代码库,我们旨在阐明任何可能在本文中被忽略的实现细节,因为这些细节要么被认为是该领域的标准做法,要么只是我们未能考虑到的细节。目前的这个代码库也是唯一已知的、在NVIDIA GPU
上不使用pipeline paralellism
的情况下训练一个>= 175B
参数的decoder-only transformer
的开源实现。为了实现在
175B
规模上的实验,我们为研究人员提供了直接访问OPT-175B
参数的机会。这里的理由有两个:使得Responsible AI
的研究能够进入大语言模型的领域,同时减少在这种规模下进行研究的环境影响environmental impact
。 越来越多的工作详述了部署大型的、具有新兴能力emergent capability
的语言模型的伦理和道德风险。通过将OPT-175B
的使用限制在非商业许可的研究社区,我们的目的是在更广泛的商业部署发生之前,首先将开发工作聚焦在量化大语言模型的局限性上。此外,当复现这种规模的模型时存在大量的计算成本和碳排放。虽然
OPT-175B
在开发时估计碳排放carbon emissions footprint
(CO2eq
) 为75
吨,相比之下GPT-3
估计使用500
吨、Gopher
需要380
吨。 这些估计并不是通用的报告,这些计算的核算方法也没有标准化。此外,模型训练只是人工智能系统整体碳排放量的一个组成部分:我们还必须考虑实验成本和最终的下游推断成本。所有这些都将导致创建大模型的能源量energy footprint
不断增加。通过发布我们的日志,我们希望强调:假设没有硬件故障或训练不稳定的理论碳成本估计,与旨在包括整个大语言模型开发生命周期的碳成本估计之间的
gap
。我们需要了解这些系统的制造碳manufacturing carbon
,因为它们越来越复杂。我们希望我们的论文可以帮助未来的工作,从而确定在衡量规模对环境的影响时需要考虑的额外因素。类似地,通过制作一组跨越各种规模的
baseline
,我们希望能让更广泛的研究社区研究这些模型仅在规模方面的影响和局限。正如《Training compute-optimal large language models》
所报告的那样,作为训练数据量的函数,许多这些大语言模型可能训练不足,这意味着纳入更多的数据并继续训练这些baseline
模型可能会继续提高性能。还有证据表明,容量的阶跃函数变化step-function change
可能发生在比175B
小得多的规模上(《Finetuned language models are zero-shot learners》
),这表明需要为不同的application
考察更广泛的规模。
7.6 附录
7.6.1 数据集细节
整个预训练数据集是以下子数据集组合而成:
BookCorpus
:包含超过1
万本未出版的书籍。CC-Storie
:包含CommonCrawl
数据的一个子集,该子集是CommonCrawl
经过过滤从而符合Winograd schemas
的story-like style
。Pile
:包含以下数据:Pile-CC
、OpenWebText2
、USPTO
、Project Gutenberg
、OpenSubtitles
、Wikipedia
、DM Mathematics
、HackerNews
。Pushshift.io Reddit
:由《The pushshift reddit dataset》
开发并由《Recipes for building an open-domain chatbot》
处理。CCNewsV2
:包含CommonCrawl News
数据集英文部分的updated
版本,该数据集在RoBERTa
中使用。
这些数据集是公开可用,并从互联网上下载的。
数据集规模:包含
180B
的token
,对应于800GB
的数据。我们从预训练数据中拿出一个大约200MB
的随机验证集,其中按照预训练语料库中每个数据集的大小比例进行采样。除了数据集之间可能出现的自然重复之外,我们没有添加其它冗余、错误、或噪音。注意,我们已经对数据集进行人工去重,但是仍然可能遗留某些重复数据
数据集中可能包含攻击性、侮辱性、威胁性、或引发焦虑的句子。
预处理:每个子数据集进行了标准的清洗和重新格式化的做法,包括删除重复文本、删除没有信息量的文本(如 “第一章”、“
This ebook by Project Gutenberg
” )。
7.6.2 模型细节
- 模型发布时间:
OPT-175B
是2022-05-03
日发布的。 - 模型是
AdamW
训练的,参数规模从125M
到175B
。
7.6.3 输出的例子
这里所有的例子,最初始的
prompt
是黑体字给出的,其余部分是续接continuation
。这些例子是有意选择的,从而突出OPT-175B
的成功和失败。诗歌生成:我们已经观察到模型能够写出有趣的诗歌,然而我们很难让模型观察到韵律或格律。
对话生成:当
prompt
为自由女神像时,模型采用了爱国的性格。然而,在进一步的对话中,模型演变成简单和重复的生成。few-shot
翻译:模型并未刻意地进行多语言的训练,但是我们发现它在德语、西班牙语、法语、中文的简单翻译上取得了有限的成功。论文写作:相比较于以
"Abstract"
作为提示,以"1. Introduction"
作为提示会产生更有趣的结果。我们这里的提示是受到ResNet
论文的第一句话的启发。四则运算:我们观察到从加法扩展到其它运算时的错误。
Python
编程:简单地换掉一个变量名就可以改变模型生成的输出。
7.7 Logbook
参考内容:
xxxxxxxxxx
https://github.com/facebookresearch/metaseq/blob/main/projects/OPT/chronicles/OPT175B_Logbook.pdf https://github.com/facebookresearch/metaseq/blob/main/projects/OPT/chronicles/OPT_Baselines_Logbook.pdfOPT-175B
开发过程:xxxxxxxxxx
https://github.com/facebookresearch/metaseq/blob/main/projects/OPT/chronicles/README.md10%
进度(主要解决训练收敛/数值稳定性问题):Experiment 11.xx Lineage - November 5, 2021
:配置:
batch size = 2M
,FP32
的Adam
,Adam beta2
为0.98
,8X
的张量并行,正弦初始化的LPE
,Normformer
,0.05
的weight decay
,学习率3e-4
,结束学习率为1e-5
,embedding
上没有dropout
,梯度预除因子pre-divide factor
为32
,梯度范数裁剪阈值为2.5
(L2
范数)。在前几次运行中,损失函数会爆炸,我们主要集中在降低学习率,并增加梯度裁剪的频率(首先将梯度裁剪阈值降低到
1.5
,然后将梯度裁剪阈值降低到1.0
)。从实验
11.4
开始,在每次重启后的几百次更新之后,我们看到梯度范数爆炸/损失函数爆炸/Nan
,同时还有及其不稳定的loss scale
(这使得模型进入欠拟合)。我们开始采取越来越激烈的行动,从增加weight decay
到0.1
开始,将Adam beta2
降低到0.95
,再次降低学习率,最后在实验11.10
中我们热交换到ReLU
(从GeLU
),同时也切换到更稳定的MHA
(注意,GeLU
中的x**3
可能是FP16
的一个不稳定来源)。注意:增加
weight decay
和降低Adam beta2
都可能使梯度更加噪音,但好处是可以更快地 “适应” 来自较新batch
的梯度。同时,我们发现我们的
LPE
没有训练。LPE
的正弦初始化有效地冻结了positional embedding
,这似乎表明我们的初始化方案在总体上存在一个潜在的问题。Experiment 12.xx Lineage - November 11, 2021
:现在,尽管我们在过去的1k
次更新中没有出现梯度范数爆炸或到处是NaN
的情况,但是似乎训练会停滞不前(参考上面的粉红色曲线,即实验11.10
)。为此我们尽可能多地采用Megatron/OpenAI GPT-3
的配置,因为Megatron/OpenAI GPT-3
的配置是一致的,而且据说都已经成功地训练了一个175B
(及以上)的模型。我们的主要改变是:整体的权重初始化,移除
Normformer
、移除embedding scaling
、将LPE
初始化改变为标准embedding
初始化而不是正弦初始化。11.11
日开始,我们开始用这些更新后的配置来训练我们的12.xx
实验。从那时起,我们唯一不得不进行的重启都与硬件问题有关。现在情况看起来健康多了(激活值的范数、梯度范数、参数范数都显得正常)。我们要处理的下一个问题是loss/ppl
的平原。注意,
12.xx
实验中的loss/ppl
开始时要比11.xx
系列要高得多。但由于稳定性增加,在7k
次更新后,loss/ppl
最终要降低很多。优化早期的最低loss/ppl
似乎不一定能保证损失曲线的均匀移动,注意这些曲率的变化(在早期牺牲一些较高的loss/ppl
)可能对我们剩余的实验也是有用的。
27%
进度(主要面临硬件问题):自从11.17
日的更新以来,由于各种硬件、基础设施、或实验稳定性问题,我们在175B
实验中重启了40
多次。绝大多数的重启都是由于硬件故障,以及没有能力提供足够数量的
buffer
节点来替换坏的节点。通过云界面替换一台机器可能需要几个小时,而且更多的时候我们最终会再次得到相同的坏机器。总之,围绕基础设施问题的工作占据了团队过去两周的时间。自从感恩节之后,过去的一周充满了梯度溢出错误、损失值命中阈值下限之类的问题(它们是为了避免下溢出而设置的),这也导致了训练的停滞。我们从先前的
checkpoint
重启了几次,发现继续训练偶尔导致更进一步,然后又再次遇到同样的问题。在这个问题上,我们尝试了一些更激烈的方法:为Adam
测试了类似于SGD
的配置(通过将beta1
设为0
,将epsilon
设为1
),但是发现从checkpoint
重新初始化Adam
优化器也会重新加载之前保持的beta
。我们试图切换到真正的普通SGD
,这需要立即实现一个FP16
友好的版本,结果发现我们的学习率可能被设置得太低,SGD
实际上无法取得进展。从
2021-12-03
号早上开始,我们决定继续使用Adam
,并且尝试降低学习率,这似乎对降低梯度范数和激活值范数有惊人的效果,并允许perpexity
继续稳步下降。我们最初选择从比GPT-3 175B
高得多的学习率开始,因为较小规模的消融实验表明:在fairseq codebase
中训练时,GPT-3
的学习率设置的太低。然而,现在我们在训练的后期,似乎学习率的衰减速度不够快,无法保持训练的稳定性。经过几周的血汗,这里是自上次更新以来的最终进展图。
56%
进度(主要是得到云供应商的更多支持):主要是关于基础设置的工作。训练稳定性:在
run 12.43
时,我们注意到梯度范数和激活值范数开始飙升(浅蓝色曲线)。我们的补救方法为:对激活值进行裁剪。Megatron v2.6 vs v2.4
:当我们意外地将训练所依赖的Megatron
从2.4
升级到2.6
时,我们的训练动态dynamics
发生了一个有趣的变化。我们注意到,突然之间,激活值范数的轨迹发生了显著的变化(红线到橙线),而我们的吞吐量(每秒单词数)增加了2%
。我们把这个问题归结为
Megatron
中一行代码的变化,它组织了以下代码的执行:xxxxxxxxxx
torch._C._jit_set_profiling_executor(False)我们仍然不清楚为什么这一行代码会以这种方式影响训练动态。
100%
进度:截止北京时间2022-01-06
号下午12:46
分,我们的175B
模型终于完成了对300B token
的训练,这需要大约4.30e+23 FLOPs
的计算量,或者在1024
个80GB A100
上连续训练大约33
天(假设没有硬件问题、没有数值不稳定等等)。- 由
OpenAI
训练的175B GPT-3
模型需要在10000
台V100
上计算14.8
天,并消耗3.14e+23 FLOPs
。这种做法的代码并未开源。 - 一个
1.1T
的混合专家模型Mixture-of-Experts model
需要在512
台A100
上进行大约2.16e+22 FLOps
的计算。这相当于一个6.7B
的稠密模型。 - 这并不是一个
benchmarking exercise
。模型在180B token
语料库上训练,我们没有时间在训练开始前策划一个更大的数据集。 - 扩展到
1024
个A100
来处理这种规模的实际工作负载是非常不容易的。 - 如果在中等规模下没有足够的消融实验,确保训练在这种规模下收敛也是非常不可行的。在小规模(小于
~13B
参数)的训练中获得的结果在scaled-up
时也不一定成立。
- 由
7.8 使用
安装
transformers
库:xxxxxxxxxx
pip install transformers根据
https://huggingface.co/facebook/opt-66b
来使用:直接使用:
xxxxxxxxxx
from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("facebook/opt-66b") # 模型名字 model = AutoModelForCausalLM.from_pretrained("facebook/opt-66b") # 模型名字或者下载模型权重到本地(模型有数百
GB
,最好提前下载下来):xxxxxxxxxx
yum install git-lfs # git-lfs 是一个开源的Git大文件版本控制的解决方案和工具集 git clone https://huggingface.co/facebook/opt-66b然后使用:
xxxxxxxxxx
from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("./opt-66b") # 模型下载的位置 model = AutoModelForCausalLM.from_pretrained("./opt-66b") # 模型下载的位置
也可以选择使用更小的模型,如
opt-125m
来进行研究。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论