返回介绍

数学基础

统计学习

深度学习

工具

Scala

四十九、Bloom [2022]

发布于 2023-07-17 23:38:25 字数 66265 浏览 0 评论 0 收藏 0

  1. pretrained language model 已经成为现代自然语言处理 pipeline 的基石,因为它们经常从较小数量的标记数据中产生更好的性能。ELMoULMFiTGPT、以及 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: BLOOMBLOOM 是一个在 46 种自然语言和 13 种编程语言上训练的 176B 参数的语言模型,是由数百名研究人员合作开发并发布的。训练BLOOM 的算力是通过法国 GENCIIDRIS 的公共拨款提供的,利用 IDRISJean Zay 超级计算机。为了建立 BLOOM ,论文对它的每个组成部分都进行了彻底的设计,包括训练数据集、模型结构和训练目标、以及分布式学习的工程策略。论文还对该模型的能力进行了分析。论文的总体目标不仅是公开发布一个大规模的多语种语言模型,其性能可与最近开发的系统相媲美,而且还记录了其开发过程中的协调过程( coordinated process )。本文的目的是对这些设计步骤提供一个 high-level 的概述,同时参考作者在开发 BLOOM 的过程中产生的个别报告。

49.1 背景

  1. 语言建模:语言建模指的是对文本中的 token 序列的概率进行建模的任务,其中 token 是文本的一个单位(如单词、子词、字符或字节等)。在这项工作中(以及目前大多数语言建模的应用中),我们对文本中的 token 的联合概率建模为:

    (19)p(x)=p(x1,,xT)=t=1Tp(xtx<t)

    其中:x$ \mathbf x $ 是一个关于 token 的序列,xt$ x_t $ 是序列中第t$ t $ 个 tokenx<t$ \mathbf x_{\lt t} $ 是xt$ x_t $ 之前的token 序列。

    这种方法被称为自回归语言建模,可以被看作是反复预测 next token 的概率。

    • 早期的语言模型:语言模型在 NLP 中的应用有很长的历史。早期的语言模型主要是 n-gram 模型,它根据一个长度为n$ n $ 的 token 序列在训练语料库中出现的次数来估计该序列的概率。在实践中,n-gram 模型面临两个主要问题:

      • 首先,随着n$ 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》的框架,即整个模型在被微调之前进行预训练,可以达到更强的性能。

        具体而言, GPTBERT 展示了使用 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-LMGPT-3Megatron-TuringPalmGopherErnie 3.0 TitanPanGu-alphaOPT)。这种方法成功的一个主要因素是 task-specific 样本在馈入模型时的格式化方式。

      • GPT-3 推广了设计 prompt 的想法,即提供任务的自然语言描述,同时允许输入一些 input-output behaviordemo

    • LLM 发展的社会局限性:虽然大型语言模型的大小持续地增加,使其在广泛的任务中得到改善,但也加剧了其开发和使用的问题(《On the dangers of stochastic parrots: Can language models be too big?》)。

      • 大型模型的计算费用也使学术界的大多数人无法参与其开发、评估和常规使用。

      • 此外,计算成本也导致了对大型语言模型的训练和使用所产生的碳足迹(carbon footprint)的担忧,现有的碳足迹研究可能低估了排放。促进全球碳足迹的增加会加剧气候变化,对已经被边缘化的社群产生最严重的影响。

      • 此外,资源集中在少数(通常是工业)机构(主要是技术专家),阻碍了对该技术的包容性、协作性和可靠性的管理:

        • 首先,由行业从业人员推动的关于技术的公共叙事会导致对其使用的适宜性产生夸大的期望,导致研究和政策优先级的错位,并可能在例如医疗应用中造成可怕的后果。

        • 其次,在一个以技术为媒介的世界里,技术发展的各个阶段的选择最终都会影响人们的生活,其影响方式最接近于法规的影响,尽管在这个过程中没有同样明确的利益相关者。当开发工作以优先考虑内部定义的性能,而不是对社会的影响为指导时,开发者的价值就会被强调,而不是直接用户和间接用户的价值。尽管让这种技术由企业单方面开发会带来巨大的社会危险,但 EleutherAI 是中国以外唯一一个在 BigScience Workshop 召开之前就在开发大型语言模型的非企业实体。

  2. BigScience

    • 参与者: BLOOM 的发展是由 BigScience 协调的。 BigScience 是一个开放的研究协同,其目标是公开发布一个 LLM 。该项目是在获得 GENCI 在其 IDRIS/CNRSJean 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 中的伦理考虑:为了承认并开始解决 BigScienceLLM 的社会局限性,研讨会依靠合作设计的道德宪章(Ethical Charter )和对美国以外的司法管辖区的适用法规的原始研究来指导整个项目的选择。具体而言,宪章强调了包容性和多样性、开放性和可复制性、以及组织的各方面的责任等价值观。在项目的数据集整理、建模、工程、评估、以及其他社会影响(贯穿始终)方面,这些价值观都以不同的方式展示出来。

49.2 模型

49.2.1 训练数据集

  1. BLOOMROOTS 语料库上进行了训练,该语料库是 498Hugging 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:左图中,每个方框代表一种语言,方块大小代表语言规模的占比(字节数);右图中,在大约三万个文件中,十三种编程语言的文件数量占比。

  2. 动机:背景知识中提到的开发者和技术的使用者(自愿的或非自愿的)之间的脱节,在数据集的策划工作中尤为明显。这些数据集支持最近的大型机器学习项目。而在这些项目中,有意(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 sourcescompilations 置于被抓取的数据之上,为解决这些问题迈出了一步(《Datasheet for the pile》)。

    BigScience workshop 的背景下,根据其道德宪章,我们的目标是在数据策划和归档过程中优先考虑人类的参与、当地的专业知识、以及语言知识,如以下各节所述。

  3. 数据治理:大型文本语料库包括关于人的文本和由人创造的文本,人是数据主体。不同的人和机构可能在法律上拥有这些数据,使他们成为数据权利人(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 HubBigScience Data 组织上找到。该组织拥有几个 demo(或 Space ),可以用来深入了解整个语料库,以及直接访问( 498 个中的)223components 。考虑到它们的许可状态、隐私风险以及与原始保管人的协议,我们能够分发这些components

    最后,由于我们知道未来对 BLOOM 模型的调研可能需要对整个语料库的完全访问,我们也邀请有相关研究项目的研究人员通过注册表格加入正在进行的数据分析工作。

  4. 数据源:给定数据治理的策略,下一步是确定训练语料库的构成。这个阶段是由几个目标驱动的,这些目标有时会有内在的竞争。其中一些竞争包括:建立一个世界上尽可能多的人可以使用的语言模型,同时只包括一些语言(在这些语言上,我们足够专业从而策划一个与以前数据集规模相当的数据集),同时提高文档的标准并尊重数据主体和算法主体的权利。

    • 语言的选择:这些考虑导致我们采用了一个渐进的过程来选择哪些语言将被纳入语料库。我们首先列出了世界上使用人数最多的八种语言,在项目的早期阶段,我们对这些语言进行了积极的宣传,邀请流利地使用该语言的人加入数据工作。然后,根据语言社区的建议(《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 目录:一个涵盖各种语言的 processednon-processed 的数据源的大清单。这采取了由Machine Learning TokyoMasakhaneLatinX 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-1T5),同时也为了满足我们在 BLOOM 大小下的计算预算的数据量需求,我们进一步从 OSCAR 21.09 版本中获取数据,对应于 20212 月的 Common Crawl 快照,最终占到语料库的 38%

  5. 数据预处理:在确定 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 errorSEO 页面、或垃圾邮件(包括色情垃圾邮件)。为了过滤非自然语言,我们定义了一套质量指标,其中高质量的文本被定义为由人类为人类所写(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 的再加工,即使在正则表达式有一些假阳性的情况下。

  6. Prompted Datasetmultitask prompted finetuning (也被称为 instruction tuning )涉及在 training mixture 上微调 pretrained language model ,其中这个 training mixture 由自然语言 prompts 指定的一组大的不同的任务所组成。T0(作为BigScience 的一部分开发)表明,在 prompted datasetsmultitask mixture 上进行微调的语言模型具有很强的 zero-shot task generalization 能力。此外,T0 被证明优于那些大一个数量级但没有经过这种微调的语言模型。在这些结果的激励下,我们探索了使用现有的自然语言数据集来进行 multitask prompted finetuning

    T0 是在 Public Pool of Prompts: P3 的一个子集上训练的,P3 是各种现有的和开源的英语自然语言数据集的 prompts 的集合。这个prompts 集合是通过一系列涉及 BigScience collaboratorshackathons 活动创建的, hackathons 参与者为 170 多个数据集编写了总共 2000 多个 promptsP3 中的数据集涵盖了各种自然语言任务,包括情感分析、问答、以及自然语言推理,不包括有害内容或非自然语言(如编程语言)。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 languagetarget language 。为了研究多语言 prompts 的重要性,我们还将 xP3 中的 English prompts 用机器翻译成相应的语言,以产生一个名为 xP3mt 的集合。关于 xP3xP3mtprompt collection 的进一步细节,见 《Crosslingual generalization through multitask finetuning》

49.2.2 模型架构

  1. 这里讨论了我们的设计方法和 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 的模型。最后,我们论证了我们的模型结构偏离标准做法的方式。

  2. 设计方法:所有可能的架构的设计空间是巨大的,使详尽的探索成为不可能。一种选择是完全复制现有大型语言模型的架构。另一方面,大量关于改进现有架构的工作相对来说很少被采用(《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 evaluation31 个任务中的 17 个。

      我们使用较小的模型进行消融实验。我们使用 6.7B 的参数规模进行 pretraining objective 的消融分析,用 1.3B 的参数规模进行剩余的消融实验(包括 position embeddingactivationlayer normalization )。最近,《LLM.int8(): 8-bit matrix multiplication for transformers at scale》 确定了大于 6.7B 的模型的 phase transition ,其中观察到 outliers features 的出现。这就提出了疑问:是否应该假定在 13B 规模下获得的结果可以推断到我们最终的模型规模?

    • 范围之外的架构:我们没有考虑 mixture-of-expert: MoE,因为缺乏关于 MoE 的广泛使用的、能大规模训练 MoEGPU-based 代码库。

      同样地,我们也没有考虑 state-space 模型。在设计 BLOOM 的时候,它们在自然语言任务中一直表现不佳。这两种方法都很有前途:现在已经在 MoElarge scale 上表现出有竞争力的结果,在较小的 scalestate-space 模型与 H3 也表现出有竞争力的结果。

  3. 架构和 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 objectivezero-shot generalization 能力的系统评估。我们在《What language model architecture and pretraining objective works best for zero-shot generalization?》 中探讨了这个问题,其中我们评估了 encoder-decoder 架构和 decoder-only 架构,以及它们与 causalprefix 、以及masked languagemodeling pretraining objective 的交互。我们的结果显示,在紧接着预训练后,causal decoder-only 模型表现最好,验证了 SOTALLM 的选择。此外,causal decoder-only 模型可以在预训练后更有效地适应 non-causal 的架构和 objective ,这种方法已经被 《Transcending scaling laws with 0.1% extra compute》 进一步探索和证实。

  4. 建模细节:除了选择架构和 pretraining objective 外,人们还提出了对原始 Transformer 架构的一些改变。例如,替代的 positional embedding 方案(RoFormerALiBi)、或新的激活函数(《GLU variants improve transformer》)。因此,我们进行了一系列的实验,以评估 《What language model to train if you have one million GPU hours?》 中的 causal decoder-only 模型的每一个修改的好处。我们在 BLOOM 中采用了两种架构的修改:

    • ALiBi Positional EmbeddingALiBi 没有向 embedding layer 添加位置信息,而是直接根据按 keyquery 的距离来减弱注意力分数(《Train short, test long: Attention with linear biases enables input length extrapolation》)。虽然 ALiBi 最初的动机是它能够推断出更长的序列,但我们发现它也导致了更平滑的训练和更好的下游性能,甚至在原始序列的长度上超过了 learned embeddingrotary 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 在残差块中、在F()$ \mathcal F(\cdot) $ 函数之前。

49.2.3 Tokenization

  1. 训练 tokenizer 的设计决策往往被忽视,而采用默认配置(《Between words and characters: A brief history of open-vocabulary modeling and tokenization in nlp》) 。例如,OPTGPT-3 都使用 GPT-2tokenizer ,这个 tokenizer 是为英语而训练的。这可以说是合理的,因为评估 tokenizer 的特定选择对模型下游性能的影响,这受到了巨大的训练成本的限制。然而,BLOOM 训练数据的多样的特性,需要谨慎的设计选择,以确保 tokenizer 以无损的方式对句子进行编码。

    • Validation :与现有的 monolingual tokenizer 相比,我们使用我们的 tokenizerfertility《Exploring bert's vocabulary》)作为健全性检查(sanity check)的一个指标。 fertility 被定义为 tokenizer 为每个单词或每个数据集创建的 subwords 的数量。我们使用 Universal Dependencies 2.9OSCAR 中我们感兴趣的语言的子集来衡量 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)。我们使用 150k250k 的词汇量进行了验证实验,以便于与现有的多语言建模文献进行比较(《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 个词表条目的最终规模,并为未来可能的应用保留了 200token ,例如使用 placeholder tokens 来移除私人信息。

    • Byte-level BPE:该 tokenizer 是一个 learned subword tokenizer ,使用 《A new algorithm for data compression》 介绍的 Byte Pair Encoding: BPE 算法训练。为了在 tokenization 过程中不丢失信息,tokenizer 从字节而不是字符作为最小的单位开始创建 mergesGPT-2)。这样一来,tokenization 永远不会导致 unknown tokens ,因为所有 256 个字节都可以包含在 tokenizer 的词表中。此外,Byte-level BPE 最大限度地实现了语言之间的 vocabulary sharing《Neural machine translation with byte-level subwords》)。

    • Normalization:在 BPE tokenization 算法的上游,没有对文本进行 normalization ,以便拥有尽可能通用的模型。在所有情况下,我们观察到,在所有考虑到的语言中,添加 NFKCunicode normalization 并没有将 fertility 降低 0.8% 以上,但其代价是使模型的通用性降低;例如,导致22$ 2^2 $ 和22$ 22 $ 以相同的方式被编码。

    • Pre-tokenization:我们的 pre-tokenization 有两个目标:

      • 产生文本的第一次分割(通常使用空白符号和标点符号)。

      • 限制 token 序列的最大长度,其中 tokenBPE 算法来产生。

      所使用的 pre-tokenization 规则是以下的正则表达式:"?[^(\S|[.,!...。,、~“])]+",它将单词分割开来,同时保留所有的字符,特别是对编程语言至关重要的空格和换行序列。我们不使用其他 tokenizer 中常见的以英语为中心的拆分(例如围绕 'nt'll 的拆分)。我们也没有在 numbersdigits 上使用拆分(如果这么拆分,会在阿拉伯语和 code 中造成问题)。

      数字 112 要不要拆分成 1 1 2 三个数字?LLaMA 进行了这种拆分,而 BLOOM, GLM-130B 没有进行这种拆分。

49.2.4 工程

  1. 硬件:该模型在 Jean Zay 上进行训练,这是一台法国政府资助的超级计算机,由 GENCI 拥有,在法国国家科学研究中心(French National Center for Scientific Research: CNRS )的国家计算中心 IDRIS 运行。训练 BLOOM 花了大约 3.5 个月时间,消耗了 1,082,990 个计算小时。训练在 48 个节点上进行,每个节点有 8NVIDIA A100 80GB GPU (总共 384GPU )。由于训练期间可能出现硬件故障,我们还保留了 4 个备用节点。这些节点配备了 2x AMD EPYC 7543 32-Core CPU512GB 内存,而存储则由全闪存和硬盘驱动器混合处理,使用 SpectrumScaleGPFS )并行文件系统,在超级计算机的所有节点和用户之间共享。每个节点有 4NVLink GPU-to-GPU 的互连,实现了节点内的通信;而每个节点有 4Omni-Path 100 Gbps 链接,以enhanced 的超立方体 8D 全局拓扑结构排列,用于节点间的通信。

  2. 框架: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 GPUfastest 配置中,我们能够实现 156 TFLOPs ,达到了目标:理论峰值性能 312 TFLOPsfloat32bfloat16 )的一半。

  3. 浮点格式:在 NVIDIA V100 GPU 上早期的的 104B 参数模型实验中,我们观察到了数值不稳定性,导致了不可逆的训练发散。我们假设,这些不稳定性源于我们最初使用的 IEEE float16 ,这是一种动态范围非常有限的 16 位浮点格式,可能会导致溢出。我们最终获得的 NVIDIA A100 GPU 支持 bfloat16 格式,其动态范围与 float32 相同。另一方面,bfloat16 的精度仍然低得多,这促使我们使用混合精度训练(《Mixed precision training》 )。这种技术以 float32 的精度执行某些精度敏感的操作,如 gradient accumulationsoftmax ,其余操作则以较低的精度执行,使我们能够实现高性能和训练稳定性的平衡。最终,我们在 bfloat16 混合精度下进行了最终训练,这被证明解决了不稳定问题(与 《Using DeepSpeed and Megatron to train Megatron-Turing NLG 530B, a large-scale generative language model》 之前的观察一致)。

  4. 融合的 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

    • 此外,还使用 PyTorchJIT 功能将 bias 项的加法与 GeLU activation 融合。作为使用 fused kernel 的一个例子,在GeLU 操作中增加 bias 项不会增加额外的时间,因为该操作是 memory-bound 的:与 GPU VRAM 和寄存器之间的数据传输相比,额外的计算可以忽略不计,因此融合这两个操作基本上可以将其运行时间减半。

  5. 额外的变化:扩展到 384GPU 需要两个 final changes:禁用异步的 CUDA kernel launches (为了便于调试和防止死锁)、将 parameter groups 拆分成更小的 subgroups (以避免过度的 CPU 内存分配)。

    在训练期间,我们面临着硬件故障的问题:平均每周有 1 ~ 2GPU 发生故障。由于有备份节点并自动使用,而且每三个小时保存一次 checkpoint ,这并没有对训练的吞吐量产生很大影响。data loader 中的 PyTorch 死锁错误、以及磁盘空间问题导致了 5 ~ 10 小时的停机时间。鉴于工程问题相对稀少,而且只有一个 loss spike ,模型很快就恢复了,因此与同类项目(《OPT: Open pre-trained transformer language models》)相比,人工干预的必要性较小。我们训练 BLOOM 的经验的全部细节、以及我们面临的所有问题,这些详细报告都是公开的。

49.2.5 训练

  1. 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-3OPT ),对 3B7.1B 的模型有所偏离,只是为了在我们的训练设置上更容易适应这些模型。由于多语言词汇量较大,BLOOMembedding 参数规模也较大,但 scaling 文献对 embedding 操作进行了折扣(《Scaling laws for neural language models》)。

    • 104B 参数规模的开发过程中,我们试验了不同的 Adam 参数值、权重衰减值和梯度剪裁值,以达到稳定的目的,但没有发现有什么帮助。

    • 对于所有的模型,我们使用 cosine learning rate decay schedule ,超过 410B tokens (即,cosine length 的长度) ,训练的序列长度选择计算允许条件时的上限,并在前 375M tokens 进行预热。我们使用权重衰减、梯度剪裁、以及 no dropoutROOTS 数据集包含大约 341B 个文本 token ,所以我们的目标是对所有模型进行等量 token 的训练。然而,考虑到训练期间公布的 revised scaling laws《Training compute-optimal large language models》),我们决定在重复数据上对大型模型进行额外的 25B tokens 的训练。由于 warmup tokens + decay tokens 大于 tokens 总数,因此从未达到 learning rate decay 的终点。

      余弦学习率调度的周期为 410B tokens,它是数据集规模 341B1.20 倍。这是 《Training Compute-Optimal Large Language Models》 论文得出的经验结果。

  2. 多任务微调: 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的微调后,性能趋于稳定。

  3. Contrastive Finetuning:我们还使用 SGPT Bi-Encoder 配方(《SGPT: GPT sentence embeddings for semantic search》)对 1.3B7.1B 参数的 BLOOM 模型进行了对比性微调,以训练产生高质量 text embedding 的模型。我们创建了面向多语言信息检索的 SGPT-BLOOM-7.1Bmsmarco 、以及面向多语言语义文本相似性(semantic textual similarity: STS)的SGPT-BLOOM-1.7B-nli 。然而,最近的基准测试发现,这些模型也推广到其他各种 embedding 任务,如 bitext miningreranking 、或用于下游分类任务的特征提取(《MTEB: Massive text embedding benchmark》)。

  4. 碳足迹(Carbon Footprint):虽然大多数估算语言模型碳足迹的尝试都揭示了由于模型训练过程中消耗的能源而产生的排放,但其他排放源也是需要考虑的。在估算 BLOOM 的碳排放时,我们受到生命周期评估(Life Cycle Assessment: LCA )方法的启发,旨在考虑设备制造、中间模型训练、以及部署等方面的排放。根据我们的估计,BLOOM training 的碳排放加起来约为 81CO2eq ,其中 14% 是由设备制造过程产生的(11 吨)、30% 是训练期间消耗的能源(25 吨)、55% 是用于训练的设备和计算集群的闲置消耗(45 吨)。

    BLOOM 训练的碳排放与其他类似模型进行比较(见下表),发现虽然 BLOOM 的能耗(433 Mwh)略高于 OPT324 Mwh ),但其排放量却减少了约 2/325吨对比70 吨)。这要归功于用于训练 BLOOM 的能源网( energy grid) 的低碳强度,其排放量为57 gCO2eq/kWh ,而用于 OPT 训练的能源网为 231 gCO2eq/kWh 。具体来说,法国的国家能源网( Jean Zay 所使用的)主要由核能驱动,与由煤炭和天然气等能源驱动的电网相比,核能是低碳的。虽然对核能的可持续性存在争议,但它是目前碳密集度最低的能源之一。BLOOMOPTGPT-3 的碳排放量要少得多(《Carbon emissions and large neural network training》),这可以归因于几个因素,包括更有效的硬件、以及碳密集度较低的能源。

    我们还进一步探讨了:在 Big Science 研讨会范围内在 Jean Zay 上进行的计算,以及实时运行 BLOOM 模型 API 的碳足迹。就整个计算的碳足迹而言,我们估计最终的 BLOOM 训练约占总排放量的 37% ,其他过程如中间的 training run 和模型评估加起来占其他的 63% 。这略低于 OPT 论文作者的估计,他们说由于实验、baseline、以及消融分析,其模型的总碳足迹大约高 2 倍。我们正在对 BLOOM API 的碳排放进行探索,估计模型在具有 16GPUGCP 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 发布

  1. 开放性一直是 BLOOM 发展的核心,我们希望确保它能被社区轻松使用。因此,我们致力于将文档制作成 Model Card 、以及致力于一个新的 license 用于解决项目的具体目标。

  2. Model Card:按照发布机器学习模型的最佳实践,BLOOM 模型已经与详细的 Model Card 一起发布,描述了其技术规范、训练细节、预期用途、范围外用途、以及模型的局限性。各工作小组的参与者共同制作了最终的Model Card 、以及每个checkpoint 的类似的 Model Card 。这项工作是协作性的,主要是通过思考和讨论每一个部分,然后根据参与者在讨论过程中自然形成的分类和区别,进一步划分为子部分。

  3. Licensing:考虑到 BLOOM 可能带来的潜在有害的使用情况,我们选择在无限制的开放使用、以及负责任的使用之间取得平衡,包括行为使用条款(《Behavioral use licensing for responsible ai》),以限制该模型在潜在有害使用情况下的应用。这类条款通常包括在越来越多的负责任的人工智能许可证(Responsible AI Licenses: RAIL ) 中,社区在发布他们的模型时一直在采用这类许可证。为 BLOOM 开发的 RAIL license 的一个突出方面是,它将源代码 license 和模型 license 分开,其中模型指的是 trained parameters 。它还包括对模型的使用和衍生作品的详细定义,以确保通过promptingfinetuningdistillation、使用 logits 和概率分布等预期的下游使用被明确地确定。license 包含 13 个行为使用限制,这些限制是根据 BLOOM 模型卡中描述的预期用途和局限性,以及 BigScience 的道德宪章确定的。license 免费提供该模型,用户只要遵守条款(包括使用限制),就可以自由使用该模型。BLOOM 的源代码已在 Apache 2.0 open source license 下提供。

49.3 评估

  1. 我们的评估集中在 zero-shot/few-shot setting 上。我们的目标是准确描述:在最真实地反映模型在实践中可能被使用的方式的setting 中, BLOOM 与现有的 LLM 相比如何。由于这些模型的规模,prompt-based adaptationfew-shot in-context learning 目前比微调更常见。因此,我们报告了在 zero-shot/one-shotprompt-based setting 中,以及在多任务微调之后,一系列任务和语言的结果。为了与其他模型进行比较,我们首先报告了在 zero-shot setting 设置下的标准基准任务的性能。然后,我们使用多语言摘要、以及机器翻译来比较不同语言的性能。我们还从 multilingual probing 的角度来解释 BLOOM 的泛化能力。

49.3.1 实验设计

  1. prompts:基于最近关于 prompting 对语言模型性能的影响的研究,我们决定建立一个语言模型评估套件,允许我们改变基本的任务数据以及用于 contextualize 任务的 prompting 。我们的 prompts 是在 BLOOM 发布之前开发的,并没有使用模型进行任何先验的完善。也就是说,我们在评估中使用的 prompts 是人类认为从语言模型中获取所需 task behavior 的合理方式。我们以这种方式设计 prompts 的目的是为了模拟一个新用户可以从 BLOOM 中期待的真实的 zero-shot/one-shot 的结果。这与呈现最佳性能的prompt design 形成对比,其中结果来自于多轮 trial-and-error 。我们选择报告前者是因为后者更难系统性地复现,可以说是对模型在一般情况下如何工作的一种不太有代表性的描述,不能代表真正的 zero-shot learningzero-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 都是公开的。

  2. 基础设施:我们的框架扩展了 EleutherAI 的语言模型评估工具(《A frameworkfor few-shot language model evaluation》),将其与前面 ”训练数据集“ 章节中描述的promptsource library 整合。我们将我们的 Prompted Language Model Evaluation Harness 作为一个开放源码库发布给人们使用。我们使用这个框架来运行实验和汇总结果。

  3. 数据集:

    • SuperGLUE:我们使用 SuperGLUE 评估套件的分类任务子集,具体而言是: Ax-b, Ax-g, BoolQ, CB, WiC, WSC,RTE 任务。我们排除了其余的任务,因为它们需要的计算量比我们考虑的所有这些任务的总和还要多一个数量级。这些任务是纯英语的,因此它们被包含在以前的工作中从而便于比较,而以前的工作主要集中在纯英语的模型上。我们还注意到,这些任务的性能还没有使用 zero-shot/one-shot prompt-based setting 来广泛报道过。T0 是第一个例外,但该模型是 instruction-tuned 的,因此不能与 BLOOMOPT 等模型直接比较。

      对于每个任务,我们从 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 来指代语言)上评估 BLOOMWMT14 eng <-> fre and eng <-> hinFlores-101DiaBLa 。我们使用 BLEUsacrebleu 实现进行评估,对 WMTDiaBLa 使用默认的 tokenization ,对 Flores 使用 spm-flores-101 。我们使用贪婪解码,生成预测直到 EOS token ,或者另外对1-shot 的情况使用 \n###\n 。每个数据集的最大生成长度被设定为与文献中通常使用的长度一致;具体来说,WikiLinguaWMT1464 tokensFlores-101DiaBla512 tokens 。具体任务的实验设计细节参考后文。

    • 摘要:我们对 WikiLingua 数据集的摘要进行评估。WikiLingua 是一个多语言摘要数据集,包括 WikiHow 文章、以及 step-by-step summarypair 对。 pair 对在多种语言之间进行对齐,source 和摘要的翻译由一个国际翻译团队进一步审核。 one-shot 条件自然语言生成通常未被规模与 BLOOM 相当的模型所报道。PaLM 是第一个例外,它在 WikiLingua 上报告了分数;但是,只考察了该模型在英语中的摘要能力。相比之下,我们选择通过评估源语言的抽象摘要能力来测试 BLOOM 固有的多语言能力。我们专注于九种语言(阿拉伯语、英语、西班牙语、法语、印地语、印度尼西亚语、葡萄牙语、越南语、汉语),这些语言是 BigScience 工作的目标之一。

      自然语言生成是众所周知的对于评估是一个挑战,而多语言生成由于缺乏指标支持而使这一挑战更加复杂。根据 《Repairing the cracked foundation: A survey of obstacles in evaluation practices for generated text》 的建议,我们报告了 ROUGE-2ROUGE-LLevenshtein 距离。对 ROUGE 的一个重要修改是使用从 Flores-101 数据集建立的 SentencePiece tokenizer。一个朴素的方法会使用基于英语的 tokenizer ,但使用多语言 tokenizer 可以提高能力来衡量多语言生成的 fidelity 。为了尽量减少模型的inference 时间,我们使用了更新后的 GEM 基准的子样本(3000 个均匀采样的测试集的样本)。作者指出,在比较测试集子样本和完整测试集之间的模型性能时,差异很小。对于解码和生成,我们使用与上述机器翻译相同的程序。

  4. baseline 模型:我们在适当的时候(如,它们支持 evaluation 数据集的语言的情况下)使用以下 baseline 模型:

    • mGPT:在 WikipediaCommon Crawl60 种语言上训练的 GPT-style 模型。

    • GPT-Neo, GPT-J-6B, GPTNeoX:在 Pile 上训练的一系列 GPT-style 模型。

    • T0T5 的一个变体,在 P3 的数据集上进行了 multitask prompted finetuning

    • OPT:一系列的 GPT-style 模型,在混合数据集上训练,其中训练集包括 RoBERTaPile

    • XGLM:一个在 CC100 数据集的变体上训练的 GPT-style 多语言模型。

    • M2M:一个大型多语言模型,它被训练从而用于在 100 种语言之间进行翻译。

    • AlexaTM:一个 encoder-decoder 模型,它在 WikipediamC4 数据集上训练,混合了 masked language modelingcausal language modelingobjective

    • mTk-InstructT5 的一个变体,在来自 Super-NaturalInstructions 的数据集上进行了 multitask prompted finetuning

    • Codex:在 GitHub 的代码上微调的一系列 GPT 模型。

    • GPT-fr:一个在法语文本上训练的 GPT-style 模型。

49.3.2 Zero-Shot 性能

  1. 在整个自然语言理解任务、和自然语言生成任务中,我们发现 pretrained 模型的 zero-shot 性能接近随机。下图显示了模型在一系列SuperGLUE 基准任务的一组 prompts 中的平均 zero-shot 表现。Table 6Table 7 显示了多个模型和数据集在 English-FrenchEnglish-Hindi 上的 zero-shot 机器翻译结果。我们没有报告 zero-shot 在文本摘要方面的表现,因为文本生成实验的运行成本很高,而且根据这里报告的结果、以及在zero-shot 文本摘要上的的初始实验,很明显文本摘要方面的表现会很差。在所有的情况下,在标准语言模型上训练的模型的 zero-shot 性能都接近于随机。

  2. SuperGLUE:在 SuperGLUE 上,虽然某些 prompts 显示出性能的提高,幅度高达 10 个点的准确率,但各 prompts 的平均性能总是在随机值附近徘徊,这表明单个 prompts 的成功主要是统计上的方差。T0 模型是个例外,它显示了强大的性能。然而,这个模型在多任务设置中进行了微调(类似于 BLOOMZ ),以提高在 zero-shot prompting setting 中的性能,因此与这里显示的其他模型没有直接可比性。

  3. 翻译:在 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.5313.77BLEU 分),尽管它是一个基于英语的模型这一事实可能解释了为什么它表现得更好。对于 BLOOM 来说,通过使用以目标语言结尾的 prompts (而不是以要翻译的源文本结尾,其中 gpt3 风格的 prompts 是以源文本结尾),在 into-English 的方向上,错误语言的问题得到了部分缓解,这可能是因为用相同的语言生成 promptcontinuation更容易。

49.3.3 One-Shot 性能

  1. one-shot evaluation 中,模型被给定一个 in-context training example ,我们发现,生成任务(机器翻译和文本摘要)的性能普遍提高,但 SuperGLUE 的分类任务却没有。

  2. SuperGLUEFigure 7 显示了one-shot 的性能和 zero-shot 的结果。与 zero-shot 性能相比,在所有的 prompts 和模型中,对SuperGLUEone-shot 性能变化都有所降低。总的来说,one-shot setting 没有明显的改善:模型的平均准确率仍然几乎总是处于随机状态( T0 除外)。

    我们进行了一项额外的分析,比较了不同模型规模的 BLOOM 模型。作为 baseline ,我们还测量了类似规模的 OPT 模型( 350M 参数到 175B 参数)的平均 one-shot 准确率。Figure 8 显示了不同模型规模下每个 prompt 在每个任务上的准确率。OPT 模型系列和 BLOOM 模型系列都随着规模的扩大而略有改善,在所有任务中,模型族之间没有一致的差异。BLOOM-176BAx-bCBWiC 上领先于 OPT-175B

  3. 机器翻译:在 1-shot setting 中,我们使用 XGLM prompt 测试了 Flores-101dev-test 数据集中的几个语言方向。我们从同一数据集中随机选择 1-shot example ,这可能与过去的工作不同。我们将 high-resource language pairsTable 8(c) )、high-to-mid-resource language pairTable 8(d) )、low-resource language pairTable 8(a) )以及Romance 语系相关语言之间(Table 8(b) )的结果分开。

    语言被分为低资源、中资源、以及高资源,取决于它们在 ROOTS 中的表现。对于 high-resource pairmid-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 在训练中所包含的那些代表性不足的低资源语言上的质量提出了质疑。

  4. 文本摘要:下图显示了 OPT-175BBLOOM 模型的 one-shot 结果。每点代表 per-prompt score 。关键的启示是,BLOOM 在多语言文本摘要方面取得了比 OPT 更高的性能,而且性能随着模型的参数数的增加而增加。我们怀疑这是由于 BLOOM 的多语言训练的结果。

    正如在 ”实验设计“ 章节所讨论的,我们报告 ROUGE-2 的分数是为了与以前的工作进行比较,也是因为缺乏替代的 generation evaluation 。然而,我们从质量上观察到,在许多情况下,ROUGE-2 得分低估了系统所生成的摘要的质量。

    这里没有画出横坐标。读者猜测横坐标是模型大小。

49.3.4 多任务微调

  1. 在最近关于多任务微调的工作基础上(《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 BLOOMpretrained XGLM 模型与多任务微调的 BLOOMZT0 、以及 mTk-Instructzero-shot 性能。BLOOMXGLM 的表现接近 random baseline ,对于NLI (XNLI)33%、对于共指解析(XWinograd)和句子补全(XCOPAXStoryCloze )为 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 生成

  1. BLOOM 的预训练语料库 ROOTS 包括大约 11% 的代码。在下表中,我们报告了 BLOOMHumanEval《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

  1. 在 ”训练“ 章节中,我们概述了 contrastive finetuning procedure 用于创建 SGPTBLOOM text embedding 模型。在下表中,我们报告了来自 Massive Text Embedding Benchmark: MTEB 的两个多语言数据集的基准测试结果。我们发现:

    • SGPT-BLOOM-7.1B-msmarco 在几个分类任务和语义文本相似性任务上提供了 SOTA 性能。然而,它有 7.1B参数,比多语言 MiniLMMPNet 等模型大一个数量级。

    • SGPT-BLOOM-1.7B-nli 的表现明显较差,可能是由于参数较少,其微调时间较短(NNI 是一个比MS-MARCO 小得多的数据集)。

    • 除了 BLOOM 模型之外,ST5-XL 是最大的模型,有 1.2B 参数。然而,作为一个纯英语的模型,它在非英语语言上的表现很差。

    下表中的语言是 BLOOM 预训练语料库的一部分。更多语言和数据集的性能可以在 MTEB 排行榜上查看。

49.3.7 Multilingual Probing

  1. probing 已经成为分析和解释 LLM 内部运作的重要评价范式,尽管它带有某些不足(《Probing classifiers: Promises, shortcomings, and advances》)。除了 training objective loss 或下游任务评估外,对 LLM embedding 的考察有助于阐明模型的泛化能力,这对考察缺乏标记数据集或 benchmark 的语言尤其有利。

  2. 方法:为了解释 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 加权得分来评估的。结果是不同随机种子的三次运行的平均值。

  3. 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 个特征。

  4. 相关性:我们进行统计测试,从而分析 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 结果之间是否存在相关性。

  5. Probing 结果:下表列出了 probing 实验的结果,是每种语言内 probing task 和实验运行的平均数。总的情况是,BLOOM-1B7 的表现与 BLOOM 相当或更好,而两种 LLM 的表现都超过了基于计数的 baseline

    具体而言,LLMArabic, Basque, and Indo-European languages (e.g., Catalan, French, Hindi, Portuguese, Spanish, and Urdu) 上的表现更为强劲,而 Bengali, Wolof, and Yoruba 的得分最低。我们把这种行为归因于为迁移能力: BLOOM 对于构成大量数据集的密切相关的语言,能更好地推断其语言属性。例如,在任何 Romance 上的表现都比英语好,而印度语的结果与高资源语言的结果接近。

    下图显示了至少在5 种语言中的形态句法特征的 language-wise probing 性能结果。尽管规模不同,但两种 LLMprobing 性能是相似的。我们发现,在不考虑语言的情况下,LLM 可以很好地推断出情绪(Mood)和人称(Person)。数字、NumType (数字类型)和声音在大多数语言中的推断效果一般。这些模型在其他类别中普遍表现出较差的质量,表明它们没有编码这种形态学信息。对这种性能差异的可能解释可能是这些类别的可能值的多样性。例如,情绪和人称在所提交的语言中具有相似的值,而 Case 值的集合则高度依赖于语言。

  6. 相关性结果:相关性分析结果支持关于probing 性能的结论,并揭示了贡献因子(如下表所示)。

    • 两种模型在具有不同 language script 的语言上显示出类似的结果。

    • BLOOM-1B7 的结果与语系、probing dataset size 、和预训练数据集大小高度相关。

    • 根据Mann-Whithey U test 的结果,BLOOM-1B7 的结果明显优于 BLOOM(P < 0.01) 。然而,BLOOM 在不同的语言上表现出更稳定的性能,尽管它在预训练期间看到了大量的数据。这可能表明有更多参数的模型具有更好的泛化能力。

49.3.8 Bias

  1. 作为对 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 被设计成要求模型根据所描述情况的可能性和现实性来选择其中一个语句。

    下图显示,BLOOMoverall prompt accuracy 接近 0.50 ,这表明总体上没有偏差。我们注意到,英语和法语的得分非常接近,这表明模型在这两种语言上的整体行为相似。我们还展示了英语和法语的mono-lingual autoregressive model 的结果,包括 GPT-NeoGPT-FR

    下表列出了CrowS-Pairs 数据集中每个 bias 类型的结果。结果在各个类别上是相当均匀的,这与以前关于 masked language model 的研究形成了鲜明的对比(这些研究表明模型在特定的类别中容易出现 bias )。尽管如此,两种语言的准确率总体上与 50 有明显的差异(T-test, p < .05 ),以及一些偏见的类别,如表中的星号所示。

  2. 局限性:《Stereotyping Norwegian salmon: An inventory of pitfalls in fairness benchmark datasets》讨论了原始CrowS-Pairs 语料库的有效性问题。这里使用的 CrowS-Pairs 版本与原始版本不同,它解决了论文指出的一些问题,并根据从法语使用者那里收集的可变印象构建了 200 个额外的句子对。在最近对英语和法语的 masked language modelbias 评估中,在修订后的数据集上获得的结果与在原始数据集上获得的结果没有明显的区别(《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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文