数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 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
- 并发
四十九、Bloom [2022]
pretrained language model
已经成为现代自然语言处理pipeline
的基石,因为它们经常从较小数量的标记数据中产生更好的性能。ELMo
、ULMFiT
、GPT
、以及BERT
的发展导致了pretrained model
的广泛使用,并且作为初始化从而用于下游任务的微调。随后发现,pretrained language model
可以在没有任何额外训练的情况下执行有用的任务,这进一步证明了pretrained language model
的效用。此外,根据经验观察,语言模型的性能往往随着模型的变大而增加(有时是可预测的、有时是突然的),这导致了scaling
的增加趋势。除了环境问题,训练大型语言模型(large language model: LLM
)的成本只有资源丰富的组织才能承受。此外,直到最近,大多数LLM
都没有公开发布。因此,学术界的大多数人都被排除在LLM
的发展之外。这种排斥产生了具体的后果;例如,大多数LLM
主要是在英文文本上进行训练。为了解决这些问题,论文
《BLOOM: A 176B-Parameter Open-Access Multilingual Language Model》
提出了BigScience Large Open-science Open-access Multilingual Language Model: BLOOM
。BLOOM
是一个在46
种自然语言和13
种编程语言上训练的176B
参数的语言模型,是由数百名研究人员合作开发并发布的。训练BLOOM
的算力是通过法国GENCI
和IDRIS
的公共拨款提供的,利用IDRIS
的Jean Zay
超级计算机。为了建立BLOOM
,论文对它的每个组成部分都进行了彻底的设计,包括训练数据集、模型结构和训练目标、以及分布式学习的工程策略。论文还对该模型的能力进行了分析。论文的总体目标不仅是公开发布一个大规模的多语种语言模型,其性能可与最近开发的系统相媲美,而且还记录了其开发过程中的协调过程(coordinated process
)。本文的目的是对这些设计步骤提供一个high-level
的概述,同时参考作者在开发BLOOM
的过程中产生的个别报告。
49.1 背景
语言建模:语言建模指的是对文本中的
token
序列的概率进行建模的任务,其中token
是文本的一个单位(如单词、子词、字符或字节等)。在这项工作中(以及目前大多数语言建模的应用中),我们对文本中的token
的联合概率建模为:其中:
$ \mathbf x $ 是一个关于token
的序列, $ x_t $ 是序列中第 $ t $ 个token
, $ \mathbf x_{\lt t} $ 是 $ x_t $ 之前的token
序列。这种方法被称为自回归语言建模,可以被看作是反复预测
next token
的概率。早期的语言模型:语言模型在
NLP
中的应用有很长的历史。早期的语言模型主要是n-gram
模型,它根据一个长度为 $ n $ 的token
序列在训练语料库中出现的次数来估计该序列的概率。在实践中,n-gram
模型面临两个主要问题:首先,随着
$ n $ 的增加,模型的规模呈指数级增长。其次,对于未出现在训练数据中的
token
序列,模型没有直接的方法来计算该序列的概率。
在这些问题上的进展使得
n-gram
模型在NLP
的大多数领域得到了广泛的应用。神经语言模型:神经语言模型是
n-gram
模型的替代,最早由《Natural language processing with modular pdp networks and distributed lexicon》
以及《Sequential neural text compression》
提出,后来由《A neural probabilistic language model》
推广。神经语言模型使用一个神经网络来估计在给定prior tokens
的条件下预测next token
的概率。虽然早期的工作使用了具有固定长度历史窗口的前馈神经网络,但
《Recurrent neural network based language model》
、《Generating text with recurrent neural networks》
、《Generating sequences with recurrent neural networks》
提议使用递归神经网络,并发现这大大改善了性能。最近,基于
Transformer
架构的语言模型(《Attention is all you need》
)被证明比递归神经网络更有效。因此,Transformer
已经成为语言模型的事实选择。
迁移学习:随着使用神经网络的语言建模的进展,
NLP pipeline
已经越来越多地采用迁移学习的框架。在迁移学习中,一个模型的参数首先在一个数据丰富的任务上进行预训练,然后再在一个下游任务上进行微调。历史上常见的获得
pretrained
参数的方法是词向量(《Distributed representations of words and phrases and their compositionality》
),通过训练使共同出现的单词之间的词向量的内积很大。然而,
《Deep contextualized word representations》
、《Universal language model fine-tuning for text classification》
、《Improving language understanding by generative pre-training》
、《BERT: Pre-training of deep bidirectional transformers for language understanding》
的后续工作表明,《Natural language processing (almost) from scratch》
的框架,即整个模型在被微调之前进行预训练,可以达到更强的性能。具体而言,
GPT
、BERT
展示了使用pretrained Transformer
语言模型的强大结果,促使人们在逐步完善的模型上开展工作(RoBERTa, XLNet, BART, T5, ERNIE
等等)。
Few-Shot/Zero-Shot Learning
:虽然对pretrained
模型进行微调仍然是在有限的标记数据下获得高性能的有效方法,但并行推进的工作表明,pretrained
语言模型可以被诱导执行任务,而不需要任何后续的训练。在
《A neural conversational model》
在一个神经对话模型中观察到有限的task-performing
行为后,GPT-2
后来证明,基于Transformer
的语言模型在从网络上爬取的文本上进行训练,可以在不同程度上执行各种任务。值得注意的是,
GPT-2
发现,性能随着模型规模的扩大而提高,从而激发了描述(《Scaling laws for neural language models》
、《Training compute-optimal large language models》
)和利用scale
的效益的工作(Megatron-LM
、GPT-3
、Megatron-Turing
、Palm
、Gopher
、Ernie 3.0 Titan
、PanGu-alpha
、OPT
)。这种方法成功的一个主要因素是task-specific
样本在馈入模型时的格式化方式。GPT-3
推广了设计prompt
的想法,即提供任务的自然语言描述,同时允许输入一些input-output behavior
的demo
。
LLM
发展的社会局限性:虽然大型语言模型的大小持续地增加,使其在广泛的任务中得到改善,但也加剧了其开发和使用的问题(《On the dangers of stochastic parrots: Can language models be too big?》
)。大型模型的计算费用也使学术界的大多数人无法参与其开发、评估和常规使用。
此外,计算成本也导致了对大型语言模型的训练和使用所产生的碳足迹(
carbon footprint
)的担忧,现有的碳足迹研究可能低估了排放。促进全球碳足迹的增加会加剧气候变化,对已经被边缘化的社群产生最严重的影响。此外,资源集中在少数(通常是工业)机构(主要是技术专家),阻碍了对该技术的包容性、协作性和可靠性的管理:
首先,由行业从业人员推动的关于技术的公共叙事会导致对其使用的适宜性产生夸大的期望,导致研究和政策优先级的错位,并可能在例如医疗应用中造成可怕的后果。
其次,在一个以技术为媒介的世界里,技术发展的各个阶段的选择最终都会影响人们的生活,其影响方式最接近于法规的影响,尽管在这个过程中没有同样明确的利益相关者。当开发工作以优先考虑内部定义的性能,而不是对社会的影响为指导时,开发者的价值就会被强调,而不是直接用户和间接用户的价值。尽管让这种技术由企业单方面开发会带来巨大的社会危险,但
EleutherAI
是中国以外唯一一个在BigScience Workshop
召开之前就在开发大型语言模型的非企业实体。
BigScience
:参与者:
BLOOM
的发展是由BigScience
协调的。BigScience
是一个开放的研究协同,其目标是公开发布一个LLM
。该项目是在获得GENCI
在其IDRIS/CNRS
的Jean Zay
超级计算机上的算力资助后开始的。它最初是围绕着Hugging Face
和法国NLP
社区(创始成员)的共同努力而建立的,并迅速开放,发展成为一个更广泛的国际合作,以支持其语言的、地理的、以及科学的多样性的目标。最终,超过1200
人注册成为BigScience
的参与者,并被允许进入其交流群。他们不仅有机器学习和计算机科学的背景,也有语言学、统计学、社会文化人类学、哲学、法律和其他领域的背景。在这些人中,有数百人直接为该项目发布的工件(artifact
)之一做出了贡献。虽然最多的参与者最终来自于美国,但也有38
个国家的代表。组织:
BigScience
所解决的一系列相关研究问题,反映在项目的工作小组组织中。每个工作小组由不同程度的参与者组成,包括主席(主席的作用是围绕整个项目的特定方面进行自我组织)。重要的是,我们鼓励参与者加入一个以上的工作小组,以分享经验和信息,这就形成了下图中的30
个工作小组。大多数工作组的工作重点是与BLOOM
的开发直接相关的任务。此外,有几个小组专注于对LLM
的评估和特定领域的数据集开发,如生物医学文本、历史文本。《BigScience: A case study in the social construction of a multilingual large language model》
对这一倡议背后的动机、其历史和一些经验教训进行了更大的概述。BigScience
中的伦理考虑:为了承认并开始解决BigScience
中LLM
的社会局限性,研讨会依靠合作设计的道德宪章(Ethical Charter
)和对美国以外的司法管辖区的适用法规的原始研究来指导整个项目的选择。具体而言,宪章强调了包容性和多样性、开放性和可复制性、以及组织的各方面的责任等价值观。在项目的数据集整理、建模、工程、评估、以及其他社会影响(贯穿始终)方面,这些价值观都以不同的方式展示出来。
49.2 模型
49.2.1 训练数据集
BLOOM
在ROOTS
语料库上进行了训练,该语料库是498
个Hugging Face datasets
的综合体,大约1.61 T
的文本,涵盖了46
种自然语言和13
种编程语言。该数据集的high-level
概览可见于Figure 3
,而每一种语言及其linguistic genus
、族、以及宏观领域的详细列表则见于Table 1
。除了语料库本身,这个过程还导致了一些组织工具和技术工具的开发和发布,包括Figure 2
中所示的工具。本节的其余部分将通过提供编制语料库所采取的步骤的简要总结,从而说明这些努力的背景。更详细的关于整个数据集策划过程及其结果,我们请读者参考《The BigScience ROOTS corpus:A 1.6TB composite multilingual dataset》
。Figure 3
:左图中,每个方框代表一种语言,方块大小代表语言规模的占比(字节数);右图中,在大约三万个文件中,十三种编程语言的文件数量占比。动机:背景知识中提到的开发者和技术的使用者(自愿的或非自愿的)之间的脱节,在数据集的策划工作中尤为明显。这些数据集支持最近的大型机器学习项目。而在这些项目中,有意(
intentional
)的数据工作通常被低估。在LLM
的背景下,这种趋势体现在一系列基于启发式的过滤方法上,这些方法优先考虑以尽可能少的成本获得尽可能多的高质量数据,而不是考虑数据主体(data subject
)的需求和权利,其中质量通常被定义为在下游任务中最大化性能,同时偶尔删除开发人员认为冒犯性的内容。虽然这些方法确实以相对较少的人力产生了
TB
级的数据,但将源材料(如CommonCrawl dumps
)的bias
与过滤方法的bias
相结合,往往会导致边缘化人群(marginalized population
)的负面结果。在一个案例中,使用
block list
来删除色情文本被证明也抑制了语料库中的LGBTQ+
和非裔美国人英语(African American English: AAE
)文本(《Documenting large webtext corpora: Acase study on the colossal clean crawled corpus》
)。在另一个项目中,使用
Reddit
的外链作为种子语料库的质量指标(GPT-2
),导致trained model
在其输出中隐含地优先考虑以美国为中心的观点(《The ghost in the machine has an american accent: value conflict in gpt-3》
)。在另一个项目中,一个依靠机器学习的
image-text alignment model
的过滤方法,被证明在创建的多模态数据集中加剧了其偏见(《Multimodal datasets: misogyny, pornography, and malignant stereotypes》
)。
此外,这种抽象的数据策划方法导致了难以有意义地归档、以及事后治理的语料库,因为个别
item
的出处和authorship
通常会在这个过程中丢失。尽管像《The pile: An 800gb dataset of diverse text for language modeling》
这样的工作将先前记录的individual sources
的compilations
置于被抓取的数据之上,为解决这些问题迈出了一步(《Datasheet for the pile》
)。在
BigScience workshop
的背景下,根据其道德宪章,我们的目标是在数据策划和归档过程中优先考虑人类的参与、当地的专业知识、以及语言知识,如以下各节所述。数据治理:大型文本语料库包括关于人的文本和由人创造的文本,人是数据主体。不同的人和机构可能在法律上拥有这些数据,使他们成为数据权利人(
rights-holder
)。随着机器学习开发者将这些数据收集并整理成越来越大的数据集从而支持训练更大的模型,开发新的方法来考虑所有相关方的利益变得越来越重要,这些相关方包括开发者、数据主体、以及数据权利人。BigScience
的努力旨在通过一个结合技术、法律和社会学专业知识的多学科视角来满足这些需求。该小组在两个不同的时间范围内专注于两个相互关联的主要目标:设计一个结构用于长期的国际数据治理(该数据治理有限考虑数据权利人的代理权)。
具体建议用于处理直接用于
BigScience
项目的数据。
《Data governance in the age of large-scale data-driven language technology》
的工作中介绍了第一个目标的进展,该工作进一步激发了数据治理的需求和要求,并概述了数据保管人(custodian
)、权利人和其他各方之间的network
所需的结构,以适当地治理共享数据。这些行为者之间的互动旨在考虑数据和算法主体的隐私、知识产权和用户权利,其方式旨在优先考虑当地的知识、以及指导价值的expression
。特别是,这种方法依赖于数据提供者和data host
之间的结构化协议,这些协议规定了数据可用于什么。虽然我们没能在项目启动和模型训练之间的相对较短的时间内完全建立起一个国际组织,但我们主要通过以下方式努力整合这方面的经验教训(反过来说,也是为了适应我们遇到的实际问题):
首先,只要有可能,我们就从特定的提供者那里寻求明确的许可来使用
BigScience
背景下的数据(例如《S2ORC: The semantic scholar open research corpus》
的S2ORC
语料库,或者法国《世界报》的文章)。其次,在预处理的最后阶段之前,我们将各个数据源分开,以保持可追溯性,并根据其特定上下文的需要处理每一个数据源。
再次,我们对构成整个语料库的各种数据源采取
composite release
的方式,以促进可重复性和后续研究,同时尊重这些source-dependent
的需求。
可视化和访问
ROOTS
语料库的资源可以在Hugging Face Hub
的BigScience Data
组织上找到。该组织拥有几个demo
(或Space
),可以用来深入了解整个语料库,以及直接访问(498
个中的)223
个components
。考虑到它们的许可状态、隐私风险以及与原始保管人的协议,我们能够分发这些components
。最后,由于我们知道未来对
BLOOM
模型的调研可能需要对整个语料库的完全访问,我们也邀请有相关研究项目的研究人员通过注册表格加入正在进行的数据分析工作。数据源:给定数据治理的策略,下一步是确定训练语料库的构成。这个阶段是由几个目标驱动的,这些目标有时会有内在的竞争。其中一些竞争包括:建立一个世界上尽可能多的人可以使用的语言模型,同时只包括一些语言(在这些语言上,我们足够专业从而策划一个与以前数据集规模相当的数据集),同时提高文档的标准并尊重数据主体和算法主体的权利。
语言的选择:这些考虑导致我们采用了一个渐进的过程来选择哪些语言将被纳入语料库。我们首先列出了世界上使用人数最多的八种语言,在项目的早期阶段,我们对这些语言进行了积极的宣传,邀请流利地使用该语言的人加入数据工作。然后,根据语言社区的建议(
《Participatory research for low-resourced machine translation: A case study inafrican languages》
),我们将最初选择的斯瓦希里语(Swahili
)扩大到尼日尔-刚果语(Niger-Congo
)语言类别,将印地语(Hindi
)和乌尔都语(Urdu
)扩大到印度语系(Indic
)语言。最后,我们提议,对于另一些语言,如果任何由3
名或更多精通该语言的参与者组成的小组,如果他们愿意承诺选择数据源并指导处理过程,就可以将该语言添加到支持的列表中,以避免通过自动语言识别选择的语料库在没有特定语言专业知识的情况下出现常见问题(《Quality at a glance: An audit of web-crawled multilingual datasets》
)。数据源选择:语料库的最大部分是由研讨会的参与者和研究集体策划的,他们共同编制了
BigScience Catalogue
目录:一个涵盖各种语言的processed
和non-processed
的数据源的大清单。这采取了由Machine Learning Tokyo
、Masakhane
和LatinX in AI
等社区共同组织的hackathons
的形式。作为对这些努力的补充,其他工作组的参与者编制了language-specific resource
,如专注于阿拉伯语的Masader repository
。通过这种自下而上的方法,总共确定了252
个数据源,每个语言类别至少有21
个数据源。此外,为了增加我们的西班牙文、中文、法文和英文等数据源的geographic coverage
,参与者通过pseudocrawl
(一种从通用Common Crawl
快照中获取这些网站的方法)确定了他们语言中的本地相关网站,以添加到语料库中。GitHub Code
:该目录进一步补充了从谷歌BigQuery
上的GitHub
数据集合中收集到的编程语言数据集,然后对exact matches
的数据进行了去重。对语言的选择反映了《Competition-level code generation with AlphaCode》
为训练AlphaCode
模型所做的设计选择。OSCAR
: 为了不偏离使用互联网作为预训练数据来源的标准研究实践(GPT-1
、T5
),同时也为了满足我们在BLOOM
大小下的计算预算的数据量需求,我们进一步从OSCAR 21.09
版本中获取数据,对应于2021
年2
月的Common Crawl
快照,最终占到语料库的38%
。
数据预处理:在确定
source
后,数据处理过程涉及几个步骤来处理data curation
的多个方面。下图中可以看到构建ROOTS
的总体视图和processing pipeline
。这个过程中开发的所有工具都可以在GitHub
上找到。获取源数据:第一步是获取前面所确定的所有文本数据源的数据,这包括从各种格式的
NLP
数据集中下载和提取文本字段(包括如问答数据集、摘要数据集、或对话数据集),从压缩文件(如法国的科学文章repository
)爬取和处理大量的PDF
文件,以及大量网站中提取和预处理文本(这些网站包括:从目录中的192
个网站、数据工作组成员选择的另一批地域多样化的456
个网站的集合)。 后者需要开发新的工具,从Common Crawl WARC
文件中的HTML
中提取文本,我们在main data preparation repository
中提供了这些文件。 我们能够从539
个网站的所有URL
中找到并提取可用的文本数据。192 + 456 = 548
,这里的539
说明作者对所有的网站进行了一些过滤处理。质量过滤:在获得文本后,我们发现大多数数据源包含一些非自然语言的文本,例如
preprocessing error
、SEO
页面、或垃圾邮件(包括色情垃圾邮件)。为了过滤非自然语言,我们定义了一套质量指标,其中高质量的文本被定义为由人类为人类所写(written by humans for humans
),没有内容的区别(因为我们希望内容选择完全是由更负责任的human source selection
的领域)或先验的语法判断。完整的指标列表见《The BigScience ROOTS corpus:A 1.6TB composite multilingual dataset》
。重要的是,这些指标主要以两种方式适应每个数据源的需要。首先,他们的参数,如阈值和支持的
term list
,是由fluent speakers
为每种语言单独选择的。其次,我们手动检查了每个数据源,以确定哪些指标最有可能识别非自然语言。
这两个过程都得到了工具的支持,以使其影响可视化。
数据去重和隐私再加工:最后,我们通过两个重复去重步骤删除了近乎重复的文件,并编辑了我们可以从语料库的
OSCAR
版本中识别的个人身份信息(如social security number: SSN
),因为它被认为是呈现最高隐私风险的来源,这促使我们应用regrex-based
的再加工,即使在正则表达式有一些假阳性的情况下。
Prompted Dataset
:multitask prompted finetuning
(也被称为instruction tuning
)涉及在training mixture
上微调pretrained language model
,其中这个training mixture
由自然语言prompts
指定的一组大的不同的任务所组成。T0
(作为BigScience
的一部分开发)表明,在prompted datasets
的multitask mixture
上进行微调的语言模型具有很强的zero-shot task generalization
能力。此外,T0
被证明优于那些大一个数量级但没有经过这种微调的语言模型。在这些结果的激励下,我们探索了使用现有的自然语言数据集来进行multitask prompted finetuning
。T0
是在Public Pool of Prompts: P3
的一个子集上训练的,P3
是各种现有的和开源的英语自然语言数据集的prompts
的集合。这个prompts
集合是通过一系列涉及BigScience collaborators
的hackathons
活动创建的,hackathons
参与者为170
多个数据集编写了总共2000
多个prompts
。P3
中的数据集涵盖了各种自然语言任务,包括情感分析、问答、以及自然语言推理,不包括有害内容或非自然语言(如编程语言)。PromptSource
是一个开源工具包(也作为BigScience
的一部分开发),为创建、共享、以及使用自然语言prompts
提供了便利。收集过程的全部细节在(《Multitask prompted training enables zero-shot task generalization》
、《PromptSource: An integrated development environment and repository for natural language prompts》
)中给出。在对
BLOOM
进行预训练后,我们应用同样的大规模多任务微调配方(recipe
),使BLOOM
具备多语言zero-shot task generalization
能力。我们将得到的模型称为BLOOMZ
。为了训练BLOOMZ
,我们对P3
进行了扩展,以包括除英语以外的新语言数据集和新任务,如翻译。这就产生了xP3
,一个涵盖46
种语言和16
项任务的83
个数据集的prompts
集合。如下图所示,xP3
反映了ROOTS
的语言分布。xP3
中的任务既有跨语言的(如翻译),也有单语言的(如摘要、问答)。我们使用PromptSource
来收集这些prompts
,为prompts
添加额外的metadata
,如input language
和target language
。为了研究多语言prompts
的重要性,我们还将xP3
中的English prompts
用机器翻译成相应的语言,以产生一个名为xP3mt
的集合。关于xP3
和xP3mt
的prompt collection
的进一步细节,见《Crosslingual generalization through multitask finetuning》
。
49.2.2 模型架构
这里讨论了我们的设计方法和
BLOOM
模型的架构。深入的研究和实验可以在《What language model to train if you have one million GPU hours?》
和《What language model architecture and pretraining objective works best for zero-shot generalization?》
找到。我们首先回顾了我们的设计方法,然后激励我们选择训练一个causal decoder-only
的模型。最后,我们论证了我们的模型结构偏离标准做法的方式。设计方法:所有可能的架构的设计空间是巨大的,使详尽的探索成为不可能。一种选择是完全复制现有大型语言模型的架构。另一方面,大量关于改进现有架构的工作相对来说很少被采用(
《Do transformer modifications transfer across implementations and applications?》
);采用其中的一些推荐做法可以产生一个明显更好的模型。我们采取中间立场,关注如下的模型系列:已经被证明scale well
,并且在公开可用的工具和代码库中有合理支持。我们对模型的组件和超参数进行消融分析,以寻求对我们的final compute budget
的最佳利用。消融分析的实验设计:
LLM
的主要吸引力之一是它们以zero-shot/few-shot
的方式执行任务的能力:足够大的模型可以简单地从上下文指令和例子中执行新的任务(GPT-2
),而不需要在监督样本上进行专门的训练。因此,由于对100B+
的模型进行微调是不容易的,我们把对架构决策的评估集中在zero-shot generalization
上,而不考虑迁移学习。具体来说,我们在不同的任务集合上测量了
zero-shot
性能:来自EleutherAI
语言模型评估工具(EAI-Eval
)的29
个任务、以及来自T0
评估集(T0-Eval
)的9
个任务。两者之间有很大的重叠:只有T0-Eval
的一个任务(StoryCloze
)不在EAI-Eval
中,尽管两者之间的所有prompts
都不一样。有关任务和baseline
的详细清单,请参见《What language model to train if you have one million GPU hours?》
。我们还注意到,我们的任务集合共享了GPT-3 evaluation
的31
个任务中的17
个。我们使用较小的模型进行消融实验。我们使用
6.7B
的参数规模进行pretraining objective
的消融分析,用1.3B
的参数规模进行剩余的消融实验(包括position embedding
、activation
和layer normalization
)。最近,《LLM.int8(): 8-bit matrix multiplication for transformers at scale》
确定了大于6.7B
的模型的phase transition
,其中观察到outliers features
的出现。这就提出了疑问:是否应该假定在13B
规模下获得的结果可以推断到我们最终的模型规模?范围之外的架构:我们没有考虑
mixture-of-expert: MoE
,因为缺乏关于MoE
的广泛使用的、能大规模训练MoE
的GPU-based
代码库。同样地,我们也没有考虑
state-space
模型。在设计BLOOM
的时候,它们在自然语言任务中一直表现不佳。这两种方法都很有前途:现在已经在MoE
的large scale
上表现出有竞争力的结果,在较小的scale
上state-space
模型与H3
也表现出有竞争力的结果。
架构和
pretraining objective
:尽管大多数现代语言模型都是基于Transformer
架构的,但架构实现之间存在着重大的deviation
。值得注意的是,虽然最初的Transformer
是基于encoder-decoder
架构的,但许多流行的模型都选择了encoder-only
(如BERT
)或decoder-only
(如GPT
)方法。目前,所有超过100B
参数的SOTA
语言模型都是causal decoder-only
模型。这与T5
的研究结果相反,在T5
的研究结果中,对于迁移学习,encoder-decoder
模型的表现明显优于decoder-only
模型。在我们的工作之前,文献中缺乏对不同架构和
pretraining objective
的zero-shot generalization
能力的系统评估。我们在《What language model architecture and pretraining objective works best for zero-shot generalization?》
中探讨了这个问题,其中我们评估了encoder-decoder
架构和decoder-only
架构,以及它们与causal
、prefix
、以及masked language
的modeling pretraining objective
的交互。我们的结果显示,在紧接着预训练后,causal decoder-only
模型表现最好,验证了SOTA
的LLM
的选择。此外,causal decoder-only
模型可以在预训练后更有效地适应non-causal
的架构和objective
,这种方法已经被《Transcending scaling laws with 0.1% extra compute》
进一步探索和证实。建模细节:除了选择架构和
pretraining objective
外,人们还提出了对原始Transformer
架构的一些改变。例如,替代的positional embedding
方案(RoFormer
、ALiBi
)、或新的激活函数(《GLU variants improve transformer》
)。因此,我们进行了一系列的实验,以评估《What language model to train if you have one million GPU hours?》
中的causal decoder-only
模型的每一个修改的好处。我们在BLOOM
中采用了两种架构的修改:ALiBi Positional Embedding
:ALiBi
没有向embedding layer
添加位置信息,而是直接根据按key
和query
的距离来减弱注意力分数(《Train short, test long: Attention with linear biases enables input length extrapolation》
)。虽然ALiBi
最初的动机是它能够推断出更长的序列,但我们发现它也导致了更平滑的训练和更好的下游性能,甚至在原始序列的长度上超过了learned embedding
和rotary embedding
。Embedding LayerNorm
:在训练104B
参数模型的初步实验中,我们按照bitsandbytes
库的StableEmbedding layer
所推荐的,在embedding layer
之后立即添加了一个additional layer normalization
。我们发现这大大改善了训练的稳定性。尽管我们也发现它惩罚了zero-shot generalization
(《What language model to train if you have one million GPU hours?》
),但我们在训练BLOOM
时在第一个embedding layer
之后增加了additional layer normalization
从而避免训练不稳定。注意初步的104B
实验是在float16
中进行的,而最终的训练是在bfloat16
中进行的。因为从那时起,float16
被认为是造成训练LLM
中许多观察到的不稳定性的原因(《OPT: Open pre-trained transformer language models》
、《Glm-130b: An open bilingual pre-trained model》
)。可能是bfloat16
减轻了对embedding LayerNorm
的需要。注意:虽然
embedding layer
之后添加一个layer norm
会有助于训练的稳定性,但是它降低了模型的性能。
我们在下图中展示了
BLOOM
的完整架构,供参考。BLOOM
采用的是Pre-LN
的方案(原始Transformer
用的是Post-LN
的方案),即:Layer Norm
在残差块中、在 $ \mathcal F(\cdot) $ 函数之前。
49.2.3 Tokenization
训练
tokenizer
的设计决策往往被忽视,而采用默认配置(《Between words and characters: A brief history of open-vocabulary modeling and tokenization in nlp》
) 。例如,OPT
和GPT-3
都使用GPT-2
的tokenizer
,这个tokenizer
是为英语而训练的。这可以说是合理的,因为评估tokenizer
的特定选择对模型下游性能的影响,这受到了巨大的训练成本的限制。然而,BLOOM
训练数据的多样的特性,需要谨慎的设计选择,以确保tokenizer
以无损的方式对句子进行编码。Validation
:与现有的monolingual tokenizer
相比,我们使用我们的tokenizer
的fertility
(《Exploring bert's vocabulary》
)作为健全性检查(sanity check
)的一个指标。fertility
被定义为tokenizer
为每个单词或每个数据集创建的subwords
的数量。我们使用Universal Dependencies 2.9
和OSCAR
中我们感兴趣的语言的子集来衡量fertility
指标。与monolingual tokenizer
相比,一种语言的fertility
非常高,可能表明该模型的下游多语性能下降(《How good is your tokenizer? on the monolingual performance of multilingual language models》
)。我们的目标是,当我们的multilingual tokenizer
与相应语言的monolingual tokenizer
进行比较时,每种语言的fertility
不能降低超过10
个百分点。在所有的实验中,Hugging Face Tokenizers
库被用来设计和训练tested tokenizers
。Tokenizer Training Data
:我们最初使用的是ROOTS
的非去重子集。然而,对tokenizer
的词表(vocabulary
)的定性研究显示了其训练数据的问题。例如,在tokenizer
的早期版本中,我们发现整个URL
被存储为tokens
,这是由几个包含大量重复内容的文件造成的。这些问题促使我们在tokenizer
的训练数据中删除重复的行。然后,我们对每种语言采用与training data
相同的采样比例。词汇量:大的词汇量(
vocabulary size
)可以减少对某些句子过度分割的风险,特别是对低资源语言(low-resource language
)。我们使用150k
和250k
的词汇量进行了验证实验,以便于与现有的多语言建模文献进行比较(《Unsupervised cross-lingual representation learning at scale》
、《mT5: A massively multilingual pre-trained text-to-text transformer》
)。与monolingual tokenizer
相比,我们最终确定了250k
的词汇量来达到我们的initial fertility objective
。由于词汇量决定了embedding
矩阵的大小,出于GPU
效率的考虑,它也必须能被128
整除;它也能被4
整除,以便使用张量并行。我们使用了250,680
个词表条目的最终规模,并为未来可能的应用保留了200
个token
,例如使用placeholder tokens
来移除私人信息。Byte-level BPE
:该tokenizer
是一个learned subword tokenizer
,使用《A new algorithm for data compression》
介绍的Byte Pair Encoding: BPE
算法训练。为了在tokenization
过程中不丢失信息,tokenizer
从字节而不是字符作为最小的单位开始创建merges
(GPT-2
)。这样一来,tokenization
永远不会导致unknown tokens
,因为所有256
个字节都可以包含在tokenizer
的词表中。此外,Byte-level BPE
最大限度地实现了语言之间的vocabulary sharing
(《Neural machine translation with byte-level subwords》
)。Normalization
:在BPE tokenization
算法的上游,没有对文本进行normalization
,以便拥有尽可能通用的模型。在所有情况下,我们观察到,在所有考虑到的语言中,添加NFKC
等unicode normalization
并没有将fertility
降低0.8%
以上,但其代价是使模型的通用性降低;例如,导致 $ 2^2 $ 和 $ 22 $ 以相同的方式被编码。Pre-tokenization
:我们的pre-tokenization
有两个目标:产生文本的第一次分割(通常使用空白符号和标点符号)。
限制
token
序列的最大长度,其中token
由BPE
算法来产生。
所使用的
pre-tokenization
规则是以下的正则表达式:"?[^(\S|[.,!...。,、~“])]+"
,它将单词分割开来,同时保留所有的字符,特别是对编程语言至关重要的空格和换行序列。我们不使用其他tokenizer
中常见的以英语为中心的拆分(例如围绕'nt
或'll
的拆分)。我们也没有在numbers
和digits
上使用拆分(如果这么拆分,会在阿拉伯语和code
中造成问题)。数字
112
要不要拆分成1 1 2
三个数字?LLaMA
进行了这种拆分,而BLOOM, GLM-130B
没有进行这种拆分。
49.2.4 工程
硬件:该模型在
Jean Zay
上进行训练,这是一台法国政府资助的超级计算机,由GENCI
拥有,在法国国家科学研究中心(French National Center for Scientific Research: CNRS
)的国家计算中心IDRIS
运行。训练BLOOM
花了大约3.5
个月时间,消耗了1,082,990
个计算小时。训练在48
个节点上进行,每个节点有8
个NVIDIA A100 80GB GPU
(总共384
个GPU
)。由于训练期间可能出现硬件故障,我们还保留了4
个备用节点。这些节点配备了2x AMD EPYC 7543 32-Core CPU
和512GB
内存,而存储则由全闪存和硬盘驱动器混合处理,使用SpectrumScale
(GPFS
)并行文件系统,在超级计算机的所有节点和用户之间共享。每个节点有4
个NVLink GPU-to-GPU
的互连,实现了节点内的通信;而每个节点有4
个Omni-Path 100 Gbps
链接,以enhanced
的超立方体8D
全局拓扑结构排列,用于节点间的通信。框架:
BLOOM
是用Megatron-DeepSpeed
(《Using DeepSpeed and Megatron to train Megatron-Turing NLG 530B, a large-scale generative language model》
)训练的,这是一个大规模分布式训练的框架。它由两部分组成:Megatron-LM
提供了Transformer
实现、张量并行、以及数据加载原语。DeepSpeed
提供了ZeRO optimizer
、模型流水线、以及通用分布式训练组件。
这个框架允许我们用
3D
并行(如下图所示)有效地训练,这是分布式深度学习的三种互补的方法的融合。这些方法描述如下:数据并行(
Data parallelism: DP
):拷贝模型多次,每个副本放在不同的设备上,并馈入数据的一个分片。处理是并行进行的,所有的模型副本在每个training step
结束时都被同步。张量并行(
Tensor parallelism: TP
):将模型的各个layer
以层为单位,拆分到多个设备上。这样,我们不是让整个activation
张量或梯度张量驻留在单个GPU
上,而是将该张量的分片(以层为单位)放在不同的GPU
上。这种技术有时被称为水平并行、或层内模型并行。流水线并行(
Pipeline parallelism: PP
):将模型的每一层分割到多个GPU
上,因此每个GPU
上只放置模型的某些层的一部分。这有时被称为垂直并行。
最后,
Zero Redundancy Optimizer
(《ZeRO: Memory optimizations toward training trillion parameter models》
)允许不同的进程只持有一个training step
所需的一部分数据(parameters
、梯度、以及optimizer states
)。我们使用了ZeRO stage 1
,也就是说,只有optimizer states
是以这种方式分片的。上述四个组件组合在一起,可以扩展到数百个
GPU
,并具有极高的GPU
利用率。在我们使用A100 GPU
的fastest
配置中,我们能够实现156 TFLOPs
,达到了目标:理论峰值性能312 TFLOPs
(float32
或bfloat16
)的一半。浮点格式:在
NVIDIA V100 GPU
上早期的的104B
参数模型实验中,我们观察到了数值不稳定性,导致了不可逆的训练发散。我们假设,这些不稳定性源于我们最初使用的IEEE float16
,这是一种动态范围非常有限的16
位浮点格式,可能会导致溢出。我们最终获得的NVIDIA A100 GPU
支持bfloat16
格式,其动态范围与float32
相同。另一方面,bfloat16
的精度仍然低得多,这促使我们使用混合精度训练(《Mixed precision training》
)。这种技术以float32
的精度执行某些精度敏感的操作,如gradient accumulation
和softmax
,其余操作则以较低的精度执行,使我们能够实现高性能和训练稳定性的平衡。最终,我们在bfloat16
混合精度下进行了最终训练,这被证明解决了不稳定问题(与《Using DeepSpeed and Megatron to train Megatron-Turing NLG 530B, a large-scale generative language model》
之前的观察一致)。融合的
CUDA kernels
:一般来说,GPU
不能在检索数据(为了进行计算)的同时进行这些计算。此外,现代GPU
的计算性能远远高于每个操作(在GPU
编程中通常称为kernel
)所需的内存传输速度。Kernel fusion
(《Optimizing data warehousing applications for GPUs using kernel fusion/fission》
)是一种优化GPU-based
的计算的方法,只在一个kernel call
中执行几个连续的操作。这种方法提供了一种最小化数据传输的方法:中间结果留在GPU
寄存器中,而不是被复制到VRAM
中,从而节省了开销。我们使用了由
Megatron-LM
提供的几个自定义的fused CUDA kernels
。首先,我们使用一个
optimized kernel
来执行LayerNorm
,以及融合了各种操作(如scaling, masking, softmax
等等)的组合的kernel
。此外,还使用
PyTorch
的JIT
功能将bias
项的加法与GeLU activation
融合。作为使用fused kernel
的一个例子,在GeLU
操作中增加bias
项不会增加额外的时间,因为该操作是memory-bound
的:与GPU VRAM
和寄存器之间的数据传输相比,额外的计算可以忽略不计,因此融合这两个操作基本上可以将其运行时间减半。
额外的变化:扩展到
384
个GPU
需要两个final changes
:禁用异步的CUDA kernel launches
(为了便于调试和防止死锁)、将parameter groups
拆分成更小的subgroups
(以避免过度的CPU
内存分配)。在训练期间,我们面临着硬件故障的问题:平均每周有
1 ~ 2
个GPU
发生故障。由于有备份节点并自动使用,而且每三个小时保存一次checkpoint
,这并没有对训练的吞吐量产生很大影响。data loader
中的PyTorch
死锁错误、以及磁盘空间问题导致了5 ~ 10
小时的停机时间。鉴于工程问题相对稀少,而且只有一个loss spike
,模型很快就恢复了,因此与同类项目(《OPT: Open pre-trained transformer language models》
)相比,人工干预的必要性较小。我们训练BLOOM
的经验的全部细节、以及我们面临的所有问题,这些详细报告都是公开的。
49.2.5 训练
Pretrained Model
:我们用下表中详列的相应的超参数来训练BLOOM
的六种尺寸变体。架构和训练超参数来自于我们的实验结果(《What language model to train if you have one million GPU hours?》
)和之前训练大型语言模型的工作(GPT-3
、《Scaling laws for neural language models》
)。non-176B
模型的模型深度和宽度大致遵循以前的文献(GPT-3
、OPT
),对3B
和7.1B
的模型有所偏离,只是为了在我们的训练设置上更容易适应这些模型。由于多语言词汇量较大,BLOOM
的embedding
参数规模也较大,但scaling
文献对embedding
操作进行了折扣(《Scaling laws for neural language models》
)。在
104B
参数规模的开发过程中,我们试验了不同的Adam
参数值、权重衰减值和梯度剪裁值,以达到稳定的目的,但没有发现有什么帮助。对于所有的模型,我们使用
cosine learning rate decay schedule
,超过410B tokens
(即,cosine length
的长度) ,训练的序列长度选择计算允许条件时的上限,并在前375M tokens
进行预热。我们使用权重衰减、梯度剪裁、以及no dropout
。ROOTS
数据集包含大约341B
个文本token
,所以我们的目标是对所有模型进行等量token
的训练。然而,考虑到训练期间公布的revised scaling laws
(《Training compute-optimal large language models》
),我们决定在重复数据上对大型模型进行额外的25B tokens
的训练。由于warmup tokens + decay tokens
大于tokens
总数,因此从未达到learning rate decay
的终点。余弦学习率调度的周期为
410B tokens
,它是数据集规模341B
的1.20
倍。这是《Training Compute-Optimal Large Language Models》
论文得出的经验结果。
多任务微调:
finetuned BLOOMZ
模型(《Crosslingual generalization through multitask finetuning》
)保持与BLOOM
模型相同的架构超参数。微调超参数粗略地基于T0
(《Multitask prompted training enables zero-shot task generalization》
)和FLAN
(《Finetuned language models are zero-shot learners》
)。学习率是由各自pretrained model
的最小学习率的两倍决定的,然后进行四舍五入。对于小型变体,global batch size
乘以4
,以增加吞吐量。虽然模型被微调了13B tokens
,但best checkpoint
是根据一个单独的验证集选择的。我们发现在经过1B ~ 6B tokens
的微调后,性能趋于稳定。Contrastive Finetuning
:我们还使用SGPT Bi-Encoder
配方(《SGPT: GPT sentence embeddings for semantic search》
)对1.3B
和7.1B
参数的BLOOM
模型进行了对比性微调,以训练产生高质量text embedding
的模型。我们创建了面向多语言信息检索的SGPT-BLOOM-7.1Bmsmarco
、以及面向多语言语义文本相似性(semantic textual similarity: STS
)的SGPT-BLOOM-1.7B-nli
。然而,最近的基准测试发现,这些模型也推广到其他各种embedding
任务,如bitext mining
、reranking
、或用于下游分类任务的特征提取(《MTEB: Massive text embedding benchmark》
)。碳足迹(
Carbon Footprint
):虽然大多数估算语言模型碳足迹的尝试都揭示了由于模型训练过程中消耗的能源而产生的排放,但其他排放源也是需要考虑的。在估算BLOOM
的碳排放时,我们受到生命周期评估(Life Cycle Assessment: LCA
)方法的启发,旨在考虑设备制造、中间模型训练、以及部署等方面的排放。根据我们的估计,BLOOM training
的碳排放加起来约为81
吨CO2eq
,其中14%
是由设备制造过程产生的(11
吨)、30%
是训练期间消耗的能源(25
吨)、55%
是用于训练的设备和计算集群的闲置消耗(45
吨)。将
BLOOM
训练的碳排放与其他类似模型进行比较(见下表),发现虽然BLOOM
的能耗(433 Mwh
)略高于OPT
(324 Mwh
),但其排放量却减少了约2/3
(25
吨对比70
吨)。这要归功于用于训练BLOOM
的能源网(energy grid
) 的低碳强度,其排放量为57 gCO2eq/kWh
,而用于OPT
训练的能源网为231 gCO2eq/kWh
。具体来说,法国的国家能源网(Jean Zay
所使用的)主要由核能驱动,与由煤炭和天然气等能源驱动的电网相比,核能是低碳的。虽然对核能的可持续性存在争议,但它是目前碳密集度最低的能源之一。BLOOM
和OPT
比GPT-3
的碳排放量要少得多(《Carbon emissions and large neural network training》
),这可以归因于几个因素,包括更有效的硬件、以及碳密集度较低的能源。我们还进一步探讨了:在
Big Science
研讨会范围内在Jean Zay
上进行的计算,以及实时运行BLOOM
模型API
的碳足迹。就整个计算的碳足迹而言,我们估计最终的BLOOM
训练约占总排放量的37%
,其他过程如中间的training run
和模型评估加起来占其他的63%
。这略低于OPT
论文作者的估计,他们说由于实验、baseline
、以及消融分析,其模型的总碳足迹大约高2
倍。我们正在对BLOOM API
的碳排放进行探索,估计模型在具有16
个GPU
的GCP instance
上的实时部署,在us-central
地区运行,每天的部署会排放大约20
公斤的CO2eq
(或0.83 kg/hour
)。这个数字并不代表所有的部署用例,而且会因使用的硬件以及模型实施的具体情况(如是否使用batching
)和模型收到的请求数量而有所不同。关于BLOOM
的碳足迹的更多信息可以在《Estimating the Carbon Footprint of BLOOM, a 176B Parameter Language Model》
中找到。
49.2.6 发布
开放性一直是
BLOOM
发展的核心,我们希望确保它能被社区轻松使用。因此,我们致力于将文档制作成Model Card
、以及致力于一个新的license
用于解决项目的具体目标。Model Card
:按照发布机器学习模型的最佳实践,BLOOM
模型已经与详细的Model Card
一起发布,描述了其技术规范、训练细节、预期用途、范围外用途、以及模型的局限性。各工作小组的参与者共同制作了最终的Model Card
、以及每个checkpoint
的类似的Model Card
。这项工作是协作性的,主要是通过思考和讨论每一个部分,然后根据参与者在讨论过程中自然形成的分类和区别,进一步划分为子部分。Licensing
:考虑到BLOOM
可能带来的潜在有害的使用情况,我们选择在无限制的开放使用、以及负责任的使用之间取得平衡,包括行为使用条款(《Behavioral use licensing for responsible ai》
),以限制该模型在潜在有害使用情况下的应用。这类条款通常包括在越来越多的负责任的人工智能许可证(Responsible AI Licenses: RAIL
) 中,社区在发布他们的模型时一直在采用这类许可证。为BLOOM
开发的RAIL license
的一个突出方面是,它将源代码license
和模型license
分开,其中模型指的是trained parameters
。它还包括对模型的使用和衍生作品的详细定义,以确保通过prompting
、finetuning
、distillation
、使用logits
和概率分布等预期的下游使用被明确地确定。license
包含13
个行为使用限制,这些限制是根据BLOOM
模型卡中描述的预期用途和局限性,以及BigScience
的道德宪章确定的。license
免费提供该模型,用户只要遵守条款(包括使用限制),就可以自由使用该模型。BLOOM
的源代码已在Apache 2.0 open source license
下提供。
49.3 评估
我们的评估集中在
zero-shot/few-shot setting
上。我们的目标是准确描述:在最真实地反映模型在实践中可能被使用的方式的setting
中,BLOOM
与现有的LLM
相比如何。由于这些模型的规模,prompt-based adaptation
和few-shot in-context learning
目前比微调更常见。因此,我们报告了在zero-shot/one-shot
的prompt-based setting
中,以及在多任务微调之后,一系列任务和语言的结果。为了与其他模型进行比较,我们首先报告了在zero-shot setting
设置下的标准基准任务的性能。然后,我们使用多语言摘要、以及机器翻译来比较不同语言的性能。我们还从multilingual probing
的角度来解释BLOOM
的泛化能力。
49.3.1 实验设计
prompts
:基于最近关于prompting
对语言模型性能的影响的研究,我们决定建立一个语言模型评估套件,允许我们改变基本的任务数据以及用于contextualize
任务的prompting
。我们的prompts
是在BLOOM
发布之前开发的,并没有使用模型进行任何先验的完善。也就是说,我们在评估中使用的prompts
是人类认为从语言模型中获取所需task behavior
的合理方式。我们以这种方式设计prompts
的目的是为了模拟一个新用户可以从BLOOM
中期待的真实的zero-shot/one-shot
的结果。这与呈现最佳性能的prompt design
形成对比,其中结果来自于多轮trial-and-error
。我们选择报告前者是因为后者更难系统性地复现,可以说是对模型在一般情况下如何工作的一种不太有代表性的描述,不能代表真正的zero-shot learning
(zero-shot learning
没有任何标记数据,而trial-and-error
事实上存在一些标记数据)。我们使用
promptsource
为每个任务生成多个prompts
。我们遵循《Multitask prompted training enables zero-shot task generalization》
使用的程序,其中prompt generation
是众包的,因此我们看到整个prompts
的长度和风格有很大的不同。为了提高质量和清晰度,我们对每个prompt
进行了多次同行评议,以确保artifacts
和一致性。下表显示了用于
WMT'14
任务的prompts
的例子。我们还为许多任务生成了prompts
,但由于资源限制,这些prompts
没有包括在本文的页面中。我们对所有任务(包括本文分析的任务和尚未分析的任务)的所有prompts
都是公开的。基础设施:我们的框架扩展了
EleutherAI
的语言模型评估工具(《A frameworkfor few-shot language model evaluation》
),将其与前面 ”训练数据集“ 章节中描述的promptsource library
整合。我们将我们的Prompted Language Model Evaluation Harness
作为一个开放源码库发布给人们使用。我们使用这个框架来运行实验和汇总结果。数据集:
SuperGLUE
:我们使用SuperGLUE
评估套件的分类任务子集,具体而言是:Ax-b, Ax-g, BoolQ, CB, WiC, WSC,RTE
任务。我们排除了其余的任务,因为它们需要的计算量比我们考虑的所有这些任务的总和还要多一个数量级。这些任务是纯英语的,因此它们被包含在以前的工作中从而便于比较,而以前的工作主要集中在纯英语的模型上。我们还注意到,这些任务的性能还没有使用zero-shot/one-shot prompt-based setting
来广泛报道过。T0
是第一个例外,但该模型是instruction-tuned
的,因此不能与BLOOM
和OPT
等模型直接比较。对于每个任务,我们从
promptsource
中随机选择五个prompts
样本,在这组prompts
上评估所有模型。与Evaluation Harness
(《A framework for few-shot language model evaluation》
)中的其他prompting task
一样,一个模型对给定prompt
的预测是这样得到的:使用与prompt
相关的、指定的一组候选label string
,然后选择这些label string
中对数似然最大的那个。机器翻译(
Machine Translation: MT
):我们在三个数据集(使用ISO-639-2 code
来指代语言)上评估BLOOM
:WMT14 eng <-> fre and eng <-> hin
、Flores-101
和DiaBLa
。我们使用BLEU
的sacrebleu
实现进行评估,对WMT
和DiaBLa
使用默认的tokenization
,对Flores
使用spm-flores-101
。我们使用贪婪解码,生成预测直到EOS token
,或者另外对1-shot
的情况使用\n###\n
。每个数据集的最大生成长度被设定为与文献中通常使用的长度一致;具体来说,WikiLingua
和WMT14
为64 tokens
,Flores-101
和DiaBla
为512 tokens
。具体任务的实验设计细节参考后文。摘要:我们对
WikiLingua
数据集的摘要进行评估。WikiLingua
是一个多语言摘要数据集,包括WikiHow
文章、以及step-by-step summary
的pair
对。pair
对在多种语言之间进行对齐,source
和摘要的翻译由一个国际翻译团队进一步审核。one-shot
条件自然语言生成通常未被规模与BLOOM
相当的模型所报道。PaLM
是第一个例外,它在WikiLingua
上报告了分数;但是,只考察了该模型在英语中的摘要能力。相比之下,我们选择通过评估源语言的抽象摘要能力来测试BLOOM
固有的多语言能力。我们专注于九种语言(阿拉伯语、英语、西班牙语、法语、印地语、印度尼西亚语、葡萄牙语、越南语、汉语),这些语言是BigScience
工作的目标之一。自然语言生成是众所周知的对于评估是一个挑战,而多语言生成由于缺乏指标支持而使这一挑战更加复杂。根据
《Repairing the cracked foundation: A survey of obstacles in evaluation practices for generated text》
的建议,我们报告了ROUGE-2
、ROUGE-L
和Levenshtein
距离。对ROUGE
的一个重要修改是使用从Flores-101
数据集建立的SentencePiece tokenizer
。一个朴素的方法会使用基于英语的tokenizer
,但使用多语言tokenizer
可以提高能力来衡量多语言生成的fidelity
。为了尽量减少模型的inference
时间,我们使用了更新后的GEM
基准的子样本(3000
个均匀采样的测试集的样本)。作者指出,在比较测试集子样本和完整测试集之间的模型性能时,差异很小。对于解码和生成,我们使用与上述机器翻译相同的程序。
baseline
模型:我们在适当的时候(如,它们支持evaluation
数据集的语言的情况下)使用以下baseline
模型:mGPT
:在Wikipedia
和Common Crawl
的60
种语言上训练的GPT-style
模型。GPT-Neo, GPT-J-6B, GPTNeoX
:在Pile
上训练的一系列GPT-style
模型。T0
:T5
的一个变体,在P3
的数据集上进行了multitask prompted finetuning
。OPT
:一系列的GPT-style
模型,在混合数据集上训练,其中训练集包括RoBERTa
和Pile
。XGLM
:一个在CC100
数据集的变体上训练的GPT-style
多语言模型。M2M
:一个大型多语言模型,它被训练从而用于在100
种语言之间进行翻译。AlexaTM
:一个encoder-decoder
模型,它在Wikipedia
和mC4
数据集上训练,混合了masked language modeling
和causal language modeling
的objective
。mTk-Instruct
:T5
的一个变体,在来自Super-NaturalInstructions
的数据集上进行了multitask prompted finetuning
。Codex
:在GitHub
的代码上微调的一系列GPT
模型。GPT-fr
:一个在法语文本上训练的GPT-style
模型。
49.3.2 Zero-Shot 性能
在整个自然语言理解任务、和自然语言生成任务中,我们发现
pretrained
模型的zero-shot
性能接近随机。下图显示了模型在一系列SuperGLUE
基准任务的一组prompts
中的平均zero-shot
表现。Table 6
和Table 7
显示了多个模型和数据集在English-French
和English-Hindi
上的zero-shot
机器翻译结果。我们没有报告zero-shot
在文本摘要方面的表现,因为文本生成实验的运行成本很高,而且根据这里报告的结果、以及在zero-shot
文本摘要上的的初始实验,很明显文本摘要方面的表现会很差。在所有的情况下,在标准语言模型上训练的模型的zero-shot
性能都接近于随机。SuperGLUE
:在SuperGLUE
上,虽然某些prompts
显示出性能的提高,幅度高达10
个点的准确率,但各prompts
的平均性能总是在随机值附近徘徊,这表明单个prompts
的成功主要是统计上的方差。T0
模型是个例外,它显示了强大的性能。然而,这个模型在多任务设置中进行了微调(类似于BLOOMZ
),以提高在zero-shot prompting setting
中的性能,因此与这里显示的其他模型没有直接可比性。翻译:在
zero-shot setting
中,翻译的结果通常很差,如Table 6
所示,该表给出了不同prompts
和多次运行的平均分数。多次运行是在不同的BLOOM
版本(不同规模)中进行的。不同的run
的得分不同(例如,"version" prompt
的得分是0.32 ~ 21.96
),有点令人惊讶的是,最好的prompts
往往是比较啰嗦的prompts
("version"
和"a_good_translation"
的prompts
)。一个直觉是:啰嗦的
prompts
提供了更多的信息。观察到的两个主要问题是:
over-generation
、没有产生正确的语言(一个好的翻译的明显前提条件)。这些问题在其他语言模型中也可以看到,从Table 7
中显示的DiaBla
数据集上的普遍不良结果就可以看出。尽管不是一个多语言模型,T0
有时可以进行英语翻译(12.53
和13.77
的BLEU
分),尽管它是一个基于英语的模型这一事实可能解释了为什么它表现得更好。对于BLOOM
来说,通过使用以目标语言结尾的prompts
(而不是以要翻译的源文本结尾,其中gpt3
风格的prompts
是以源文本结尾),在into-English
的方向上,错误语言的问题得到了部分缓解,这可能是因为用相同的语言生成prompt
的continuation
更容易。
49.3.3 One-Shot 性能
在
one-shot evaluation
中,模型被给定一个in-context training example
,我们发现,生成任务(机器翻译和文本摘要)的性能普遍提高,但SuperGLUE
的分类任务却没有。SuperGLUE
:Figure 7
显示了one-shot
的性能和zero-shot
的结果。与zero-shot
性能相比,在所有的prompts
和模型中,对SuperGLUE
的one-shot
性能变化都有所降低。总的来说,one-shot setting
没有明显的改善:模型的平均准确率仍然几乎总是处于随机状态(T0
除外)。我们进行了一项额外的分析,比较了不同模型规模的
BLOOM
模型。作为baseline
,我们还测量了类似规模的OPT
模型(350M
参数到175B
参数)的平均one-shot
准确率。Figure 8
显示了不同模型规模下每个prompt
在每个任务上的准确率。OPT
模型系列和BLOOM
模型系列都随着规模的扩大而略有改善,在所有任务中,模型族之间没有一致的差异。BLOOM-176B
在Ax-b
、CB
和WiC
上领先于OPT-175B
。机器翻译:在
1-shot setting
中,我们使用XGLM prompt
测试了Flores-101
的dev-test
数据集中的几个语言方向。我们从同一数据集中随机选择1-shot example
,这可能与过去的工作不同。我们将high-resource language pairs
(Table 8(c)
)、high-to-mid-resource language pair
(Table 8(d)
)、low-resource language pair
(Table 8(a)
)以及Romance
语系相关语言之间(Table 8(b)
)的结果分开。语言被分为低资源、中资源、以及高资源,取决于它们在
ROOTS
中的表现。对于high-resource pair
和mid-to-high-resource pair
,我们与有615M
参数的M2M-124
模型的监督结果进行比较,《The Flores-101 evaluation benchmark for low-resource and multilingual machine translation》
计算了该模型的分数。此外,我们还与XGLM(7.5B)
的1-shot
结果(《Few-shot learning with multilingual language models》
)和32-shot AlexaTM
结果(《Few-shot learning using a large-scale multilingual seq2seq model》
)进行比较。无论是高资源语言之间的翻译、还是从高资源语言到中等资源语言的翻译,结果都很好,这表明
BLOOM
具有良好的多语言能力,甚至可以跨文字(这里是拉丁文或扩展拉丁文、中文、阿拉伯文和梵文之间)。与有监督的M2M
模型相比,在这种1-shot setting
下,结果往往是相当的、有时甚至更好,而且在许多情况下,结果与AlexaTM
的结果相当。许多低资源语言的翻译质量很好,与有监督的
M2M
模型相当,甚至略好。然而,斯瓦希里语(Swahili
)和约鲁巴语(Yoruba
)之间的结果非常差,这两种语言在BLOOM
的训练数据中存在但代表性不足(每种语言<50k tokens
)。这与Romance
(因此也是相关语言)之间的翻译结果形成鲜明对比,后者的翻译结果全面良好,包括从Galician: glg
的翻译(这种语言没有包括在训练数据中,但与其他罗曼语有许多相似之处,特别是与葡萄牙语(Portuguese: por
))。然而,这确实对BLOOM
在训练中所包含的那些代表性不足的低资源语言上的质量提出了质疑。文本摘要:下图显示了
OPT-175B
和BLOOM
模型的one-shot
结果。每点代表per-prompt score
。关键的启示是,BLOOM
在多语言文本摘要方面取得了比OPT
更高的性能,而且性能随着模型的参数数的增加而增加。我们怀疑这是由于BLOOM
的多语言训练的结果。正如在 ”实验设计“ 章节所讨论的,我们报告
ROUGE-2
的分数是为了与以前的工作进行比较,也是因为缺乏替代的generation evaluation
。然而,我们从质量上观察到,在许多情况下,ROUGE-2
得分低估了系统所生成的摘要的质量。这里没有画出横坐标。读者猜测横坐标是模型大小。
49.3.4 多任务微调
在最近关于多任务微调的工作基础上(
《Multitask prompted training enables zero-shot task generalization》
、《Finetuned language models are zero-shot learners》
、《What language model architecture and pretraining objective works best for zero-shot generalization?》
),我们探索使用多语言多任务微调来提高BLOOM
模型的zero-shot
性能。我们使用 ”训练数据集“ 章节所述的
xP3
语料库对BLOOM
模型进行了多语言多任务微调。我们发现,zero-shot
的性能明显增加。在下图中,我们比较了pretrained BLOOM
和pretrained XGLM
模型与多任务微调的BLOOMZ
、T0
、以及mTk-Instruct
的zero-shot
性能。BLOOM
和XGLM
的表现接近random baseline
,对于NLI (XNLI)
为33%
、对于共指解析(XWinograd
)和句子补全(XCOPA
和XStoryCloze
)为50%
。在经历了多语言多任务微调之后(
BLOOMZ
),在所描述的保留任务上,zero-shot
性能有了明显的改善。尽管也经过了多任务微调,但由于T0
是一个单语的英语模型,它在所展示的多语言数据集上的表现很差。然而,《Crosslingual generalization through multitask finetuning》
提供的其他结果显示,在控制模型规模和架构时,在xP3
上进行微调的模型在英语数据集上的表现也优于T0
。这可能是由于T0
的微调数据集(P3
)包含的数据集和prompts
的多样性不如xP3
。多任务微调性能已被证明与数据集和prompts
的数量相关(《Scaling instruction-finetuned language models》
)。
49.3.5 Code 生成
BLOOM
的预训练语料库ROOTS
包括大约11%
的代码。在下表中,我们报告了BLOOM
在HumanEval
(《Evaluating large language models trained on code》
)的基准测试结果。我们发现pretrained BLOOM
模型的性能与在Pile
上训练的类似规模的GPT
模型相似。Pile
包含英文数据和大约13%
的代码(GitHub + StackExchange
),这与ROOTS中
的代码数据来源和代码数据比例相似。仅仅对代码数据进行了微调的
Codex
模型明显强于其他模型。多任务微调的BLOOMZ
模型并没有比BLOOM
模型有明显的改善。我们假设这是由于微调数据集xP3
不包含大量的pure code completion
。相反,xP3
包含与代码相关的任务,如估计一个给定的Python
代码片段的时间复杂性。《Crosslingual generalization through multitask finetuning》
提供了额外的分析。
49.3.6 Embedding
在 ”训练“ 章节中,我们概述了
contrastive finetuning procedure
用于创建SGPTBLOOM text embedding
模型。在下表中,我们报告了来自Massive Text Embedding Benchmark: MTEB
的两个多语言数据集的基准测试结果。我们发现:SGPT-BLOOM-7.1B-msmarco
在几个分类任务和语义文本相似性任务上提供了SOTA
性能。然而,它有7.1B
参数,比多语言MiniLM
和MPNet
等模型大一个数量级。SGPT-BLOOM-1.7B-nli
的表现明显较差,可能是由于参数较少,其微调时间较短(NNI
是一个比MS-MARCO
小得多的数据集)。除了
BLOOM
模型之外,ST5-XL
是最大的模型,有1.2B
参数。然而,作为一个纯英语的模型,它在非英语语言上的表现很差。
下表中的语言是
BLOOM
预训练语料库的一部分。更多语言和数据集的性能可以在MTEB
排行榜上查看。
49.3.7 Multilingual Probing
probing
已经成为分析和解释LLM
内部运作的重要评价范式,尽管它带有某些不足(《Probing classifiers: Promises, shortcomings, and advances》
)。除了training objective loss
或下游任务评估外,对LLM embedding
的考察有助于阐明模型的泛化能力,这对考察缺乏标记数据集或benchmark
的语言尤其有利。方法:为了解释
BLOOM
的多语言泛化能力,我们利用Universal Probing
框架对104
种语言和80
种形态句法特征进行系统性的probing analysis
(《Universal and independent: Multilingual probing framework for exhaustive model interpretation and evaluation》
)。该框架针对Universal Dependencies:UD
中的每种语言提供了SentEval-style
(《What you can cram into a single vector: Probing sentence embeddings for linguistic properties》
)的probing steup
和数据集。我们考虑了BLOOM
的预训练语料库、以及UD treebanks
中存在的7
个语系的以下17
种语言:Arabic (Afro-Asiatic), Bambara (Mande), Basque (language isolate), Bengali, Catalan, English, French,Hindi, Marathi, Portuguese, Spanish, Urdu (Indo-European), Chinese (Sino-Tibetan), Indonesian(Austronesian), Tamil (Dravidian), Wolof, Yoruba (Niger-Congo)
。我们的设置总共涵盖了38
个形态句法特征,这些特征代表了特定语言的语言学信息。我们在下表中提供了一个数据集样本(标签为单数Single
/复数Plural
)。probing
程序的进行情况如下:首先,我们在
1.7B
参数的BLOOM
变体(BLOOM 1B7
)和BLOOM
(有176B
参数)的每一层计算输入句子的<s>-pooled representation
。其次,我们训练一个二元逻辑回归分类器,以预测句子中是否存在形态句法特征。选择逻辑回归是因为它相对于非线性
probing
分类器有更高的selectivity
。我们在这里使用原始的UD training/validation/test splits
。第三,由于大多数
probing
任务的target class
不平衡,probing
性能是通过F1
加权得分来评估的。结果是不同随机种子的三次运行的平均值。
baseline
:我们将probing
性能与随机猜测、基于以下TF-IDF
特征训练的逻辑回归分类器进行比较:word unigrams, character N-grams, BPE42 token N-grams, SentencePiece token N-grams
。我们使用N-gram
范围为[1,2,3,4]
,并将TF-IDF
词表限制在top-250k
个特征。相关性:我们进行统计测试,从而分析
probing
性能与语言学、数据集和模型配置准则之间的相关性:language script
:结果按language script
,拉丁文和其他文字(Devanagari, Tamil, and Arabic
),分为两组。在这里,我们使用non-parametric Mann-Whitney U test
。语系:结果按语系分为
7
组。我们应用方差分析法(ANOVA
)来分析各组之间的差异。probing
和预训练数据集大小:我们运行Pearson correlation coefficient test
来计算probing
性能和这些data configuration criteria
之间的相关性。模型大小的影响:按
BLOOM
版本将结果分为两组。在这里,我们使用Mann-Whitney U test
检验,看看参数数量和probing
结果之间是否存在相关性。
Probing
结果:下表列出了probing
实验的结果,是每种语言内probing task
和实验运行的平均数。总的情况是,BLOOM-1B7
的表现与BLOOM
相当或更好,而两种LLM
的表现都超过了基于计数的baseline
。具体而言,
LLM
在Arabic, Basque, and Indo-European languages (e.g., Catalan, French, Hindi, Portuguese, Spanish, and Urdu)
上的表现更为强劲,而Bengali, Wolof, and Yoruba
的得分最低。我们把这种行为归因于为迁移能力:BLOOM
对于构成大量数据集的密切相关的语言,能更好地推断其语言属性。例如,在任何Romance
上的表现都比英语好,而印度语的结果与高资源语言的结果接近。下图显示了至少在
5
种语言中的形态句法特征的language-wise probing
性能结果。尽管规模不同,但两种LLM
的probing
性能是相似的。我们发现,在不考虑语言的情况下,LLM
可以很好地推断出情绪(Mood
)和人称(Person
)。数字、NumType
(数字类型)和声音在大多数语言中的推断效果一般。这些模型在其他类别中普遍表现出较差的质量,表明它们没有编码这种形态学信息。对这种性能差异的可能解释可能是这些类别的可能值的多样性。例如,情绪和人称在所提交的语言中具有相似的值,而Case
值的集合则高度依赖于语言。相关性结果:相关性分析结果支持关于
probing
性能的结论,并揭示了贡献因子(如下表所示)。两种模型在具有不同
language script
的语言上显示出类似的结果。BLOOM-1B7
的结果与语系、probing dataset size
、和预训练数据集大小高度相关。根据
Mann-Whithey U test
的结果,BLOOM-1B7
的结果明显优于BLOOM(P < 0.01)
。然而,BLOOM
在不同的语言上表现出更稳定的性能,尽管它在预训练期间看到了大量的数据。这可能表明有更多参数的模型具有更好的泛化能力。
49.3.8 Bias
作为对
BLOOM
学到的bias
的初步研究,我们提出了对多语言CrowS-Pairs
数据集的评估,该数据集结合了《CrowS-pairs:A challenge dataset for measuring social biases in masked language models》
开发的CrowS-Pairs
数据集的修订版和《French CrowS-pairs: Extending a challenge dataset for measuring social bias in masked language models to a language other than English》
引入的法语版CrowS-Pairs
。这项评估的一个挑战是如何将原本用于
masked language model
的数据集适应于autoregressive language model
(如BLOOM
)。CrowS-Pairs
依靠minimal pairs
来比较一个刻板印象的语句、以及一个非刻板印象的语句(例如,"Women can't drive."
是一个性别刻板印象,而"Men can't drive."
则不是)。这两种陈述的不同之处在于刻板印象所针对的social category
,而且该social category
在刻板印象陈述(stereotyped statement
)中存在而在非刻板印象陈述(non-stereotyped statement
)中不存在。评价的目的是评估模型对刻板印象陈述的系统偏好。最初的metric score
比较了一对句子的pseudo-loglikelihood
,以确定哪个句子从masked language model
中获得了更高的分数。prompts
被设计成要求模型根据所描述情况的可能性和现实性来选择其中一个语句。下图显示,
BLOOM
的overall prompt accuracy
接近0.50
,这表明总体上没有偏差。我们注意到,英语和法语的得分非常接近,这表明模型在这两种语言上的整体行为相似。我们还展示了英语和法语的mono-lingual autoregressive model
的结果,包括GPT-Neo
和GPT-FR
。下表列出了
CrowS-Pairs
数据集中每个bias
类型的结果。结果在各个类别上是相当均匀的,这与以前关于masked language model
的研究形成了鲜明的对比(这些研究表明模型在特定的类别中容易出现bias
)。尽管如此,两种语言的准确率总体上与50
有明显的差异(T-test, p < .05
),以及一些偏见的类别,如表中的星号所示。局限性:
《Stereotyping Norwegian salmon: An inventory of pitfalls in fairness benchmark datasets》
讨论了原始CrowS-Pairs
语料库的有效性问题。这里使用的CrowS-Pairs
版本与原始版本不同,它解决了论文指出的一些问题,并根据从法语使用者那里收集的可变印象构建了200
个额外的句子对。在最近对英语和法语的masked language model
的bias
评估中,在修订后的数据集上获得的结果与在原始数据集上获得的结果没有明显的区别(《French CrowS-pairs:Extending a challenge dataset for measuring social bias in masked language models to a language other than English》
)。然而,它的原始validation
在这里并不自然适用,与其他CrowS-Pairs
结果的比较也更加困难。为了更有力地评估偏差,用CrowS-Pairs
得到的结果应该与其他的measures of bias
进行比较,同时对模型中的所有语言进行评估。然而,正如《You reap what you sow: On the challenges of bias evaluation under multilingual settings》
所指出的,可用于多语言bias
评估的材料(语料、measures
)非常少。尽管我们的检查表明模型中存在着有限的偏见,但它们不能涵盖可能的使用场景的广度。模型可能产生较大影响的一种情况是语言多样性(
linguistic diversity
)和语言变体(language variation
)。由于BLOOM
的训练资源是精心策划的,它们也可能比其他模型更大程度地捕捉到一些语言变体。这也影响了trained model
公平地代表不同的语言变体的能力。这种差异可能有助于某些语言变体比其他语言变体的传播和合法化。我们对模型中的偏差的评估进一步限制在多语言CrowS-Pairs
所涵盖的场景、语言、以及语言变体上。因此,我们期望在我们使用CrowS-Pair
的结果和更广泛的模型使用之间有一个区别(关于这种差异的更详细的探索,见《Ai and the everything in the whole wide world benchmark》
)。语言变体:比如中国国内的各种方言。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论