BLOOM:参数达1760亿的开源多语言大模型


🕙发布时间:2025-02-24

更多LLM架构文章:LLM架构专栏
近日热文:
1. 全网最全的神经网络数学原理(代码和公式)直观解释
2. 大模型进化史:从Transformer到DeepSeek-R1的AI变革之路
3. 2W8000字深度剖析25种RAG变体:全网最全~没有之一
4. 3W6000字了解大模型LLM:部署、优化与框架
知乎【柏企
公众号【柏企科技说】【柏企阅文

BLOOM是一个拥有1760亿参数的开源解码器架构的Transformer模型,由数百名研究人员合作开发,旨在推动先进大语言模型技术的普及。BLOOM基于ROOTS语料库进行训练,该语料库涵盖多种语言。经过多任务提示微调后,BLOOM在各类基准测试中都展现出了强大的性能。

训练数据集

BLOOM基于ROOTS语料库进行训练,这是一个由498个Hugging Face数据集组成的集合,总计1.61TB文本,涵盖46种自然语言和13种编程语言。

ROOTS语料库的语言构成

语料库的大部分内容由研讨会参与者和研究团队共同整理,形成了包含252个不同语言来源的 “BigScience目录”,每个语言类别至少有21个来源,此外还补充了本地相关网站内容以及一个编程语言数据集。2021年2月的OSCAR Common Crawl快照也被纳入其中,占语料库的38%,以满足数据量需求。

该目录还进一步补充了从谷歌BigQuery上的GitHub数据收集而来的编程语言数据集,并对完全重复的数据进行了去重处理。

数据预处理

ROOTS语料库的创建流程

获取源数据

获取源数据需要从各种文本来源收集文本数据。数据来源包括自然语言处理(NLP)数据集、PDF文件、网站内容以及Common Crawl的WARC文件。

从问答、摘要和对话数据集中提取并处理文本;从诸如法国科学文章库等档案中的PDF文件进行抓取和处理;从目录中的192个网站条目和456个不同地理位置的网站中提取文本;还开发了新工具从Common Crawl WARC文件的HTML中提取文本;从539个网站的所有URL中找到并提取可用的文本数据。

质量过滤

从各种来源获取的文本包含非自然语言元素,如预处理错误、搜索引擎优化(SEO)页面和垃圾信息(包括色情垃圾信息)。

定义了质量指标来过滤掉非自然语言文本,以确定高质量文本。高质量文本被定义为 “由人撰写、供人阅读” 的文本,不考虑内容或语法。这些指标由流利的语言使用者根据每种语言的特定需求进行调整,包括调整参数和支持术语列表。对每个单独的数据源进行人工审核,以确定哪些指标在检测非自然语言方面最为有效,还使用可视化工具辅助评估这些指标的影响。

去重和隐私处理

采取了两个去重步骤来去除近似重复的文档。从OSCAR版本的语料库中识别出个人身份信息(PII),如社保号码等,OSCAR版本被认为是隐私风险最高的来源。对识别出的PII应用基于正则表达式的编辑方法,即使可能存在一些误判。

提示数据集

提示数据集xP3的语言分布与ROOTS语料库紧密匹配。

多任务提示微调是指使用自然语言提示,混合多种任务对语言模型进行训练。正如T0(BigScience的一部分)所展示的,经过微调后,它在零样本任务中表现出色。T0使用了来自公共提示池(P3)的提示,该提示池包含2000多个提示,涵盖170多个数据集和各种任务,且不包含有害内容。一个名为promptsource的开源工具包有助于提示的创建。BLOOMZ是通过对BLOOM进行多任务微调得到的,它利用xP3获得了多语言零样本能力。xP3是一个扩展数据集,涵盖46种语言和16项任务,包括跨语言和单语言提示,其中还包含机器翻译提示(xP3mt)以及添加的元数据。

模型架构

BLOOM架构:用于ALIBI的khead斜率参数为$2^{(-8i/n)}$,其中n是头的数量,$i \in 1, 2, …, n$。

针对原始Transformer架构,有多项改进建议,如替代位置嵌入和新型激活函数等。经过一系列实验评估这些改进的效果后,BLOOM采用了两种架构上的调整:

  • ALiBi位置嵌入:ALiBi不是在嵌入层添加位置信息,而是直接根据键和查询之间的距离来衰减注意力分数。虽然ALiBi最初是为了能够外推到更长的序列,但它也使得训练更加平稳,并且在原始序列长度下,下游任务的表现更好,优于学习型嵌入和旋转嵌入。
  • 嵌入层归一化:在初步实验中,训练一个1040亿参数的模型时,在嵌入层之后立即添加额外的层归一化,显著提高了训练的稳定性。尽管这会对零样本泛化能力产生一定影响,但BLOOM仍然采用了嵌入层归一化进行训练 。

分词

训练分词器时的设计决策通常会被忽视,人们更倾向于使用 “默认” 设置。然而,由于BLOOM训练数据的多样性,需要仔细做出设计选择,以确保分词器能够无损地编码句子。

  • 有效性验证:通过将其生成词元的能力与现有的单语言分词器进行比较,来验证分词器的有效性。较高的生成词元能力可能表明在下游多语言任务中性能会下降。
  • 词汇表大小:较大的词汇表大小可以降低过度切分的风险,特别是对于低资源语言。选择250,680个词元的词汇表大小,也符合GPU效率和张量并行的要求。
  • 字节对编码(Byte-level BPE):该分词器是一个通过字节对编码(BPE)算法训练得到的子词分词器。
  • 标准化:Unicode标准化虽然对生成词元能力的影响不大(0.8%),但会损害模型的通用性,例如会导致“²²”和“22”被编码成相同的形式。
  • 预分词:预分词有两个目标,一是对文本进行初步划分(通常使用空格和标点符号),二是限制BPE算法生成的词元序列的最大长度。使用的预分词规则是以下正则表达式:

    ,该规则在拆分单词时会保留所有字符,特别是对于编程语言至关重要的空格和换行符序列。避免了其他分词器中常见的以英语为中心的拆分方式(例如围绕“’nt”或“’ll”拆分),以及对数字和数位的拆分 。

训练

BLOOM和BLOOMZ训练超参数

预训练

基于实验结果和对大语言模型的前期研究,使用特定的超参数训练了六个BLOOM变体。

多任务微调

经过微调的BLOOMZ模型保留了BLOOM的架构,并调整了超参数,其灵感来自T0和FLAN。学习率通过将预训练模型的最小学习率翻倍并进行全局调整来计算。较小的模型变体在微调130亿个词元时,将批量大小增加四倍,以提高吞吐量,并且在10亿到60亿个词元之间性能趋于稳定。

对比微调

使用SGPT双编码器方法进行对比微调,开发出了两个高质量的文本嵌入模型:用于多语言信息检索的SGPT-BLOOM-7.1 Bmsmarco24,以及用于多语言语义文本相似度(STS)的SGPT-BLOOM-1.7B-nli25。此外,基准测试表明,这些模型在下游分类任务中的双语挖掘、重排序和特征提取方面具有通用性。

评估

评估主要集中在零样本和少样本设置上,目的是在实际使用场景中,将BLOOM与现有的大语言模型进行比较。评估结果涵盖SuperGLUE基准测试、机器翻译、摘要生成、代码生成和表征任务等。

在BLOOM发布之前,提示由人工编写,且未使用模型进行优化,旨在模拟新用户在现实情况下的零样本或单样本结果。使用promptsource为每个任务生成多个提示,这些提示在长度和风格上差异很大。每个提示都经过同行评审,以提高质量和一致性。

为简洁起见,本文将仅关注SuperGLUE基准测试。

SuperGLUE基准测试中部分任务在零样本和单样本基于提示设置下,各种大语言模型的性能表现

  • 在蕴含任务(BoolQ和CB)中,某些模型(BLOOM、T0、OPT、GPT-J)的表现持续高于随机水平。
  • 在其他任务中,各个提示的平均表现接近随机水平,这表明单个提示的成功主要归因于统计差异。
  • T0模型表现突出,但由于其独特的微调方式,无法直接与其他模型进行比较。
  • 从零样本到单样本设置的转变,减少了不同提示和模型之间的差异,导致性能有轻微且不稳定的提升。

BLOOM与OPT在SuperGLUE单样本任务上的性能扩展比较

每个点代表BLOOM或OPT模型家族中一个模型,在五个任务提示之一上的平均准确率。x轴上的参数数量以对数尺度呈现。

与其他模型(如OPT)相比,BLOOM在从零样本转变到单样本设置时,性能提升更为显著。

在特定任务的单样本设置中,即使BLOOM仅进行了部分英语训练,其表现也与OPT相当,甚至超越OPT。

对于OPT和BLOOM模型家族来说,更大的模型规模(超过20亿参数)在性能上的提升微乎其微。

在零样本设置下,多语言特性并未妨碍BLOOM在纯英语任务上的表现,它在各种任务上与OPT-175B相比都颇具竞争力。

论文

BLOOM: A 176B-Parameter Open-Access Multilingual Language Model 2211.05100
## 推荐阅读
1. DeepSeek-R1的顿悟时刻是如何出现的? 背后的数学原理
2. 微调 DeepSeek LLM:使用监督微调(SFT)与 Hugging Face 数据
3. 使用 DeepSeek-R1 等推理模型将 RAG 转换为 RAT
4. DeepSeek R1:了解GRPO和多阶段训练
5. 深度探索:DeepSeek-R1 如何从零开始训练
6. DeepSeek 发布 Janus Pro 7B 多模态模型,免费又强大!

本文由mdnice多平台发布


柏企科技圈
23 声望6 粉丝