BLOOM LM BigScience大型开放科学开放获取多语言语言模型 模型卡
版本1.3 / 2022年7月11日-可用中间检查点-全局步骤:
您可以通过单击存储库的分支部分来查看可用的检查点
我们使用 git标签 来加载特定版本的模型(例如, global_step1000 ):
from transformers import AutoModelForCausalLM model = AutoModelForCausalLM.from_pretrained( "bigscience/bloom-350m-intermediate", revision="global_step1000", torch_dtype="auto", )
BLOOM是一种语言模型,它是一种对单词序列的概率分布。具体而言,BLOOM是一个大型语言模型(LLM),意味着它使用工业规模的计算资源对大量文本数据进行训练。因此,该模型能够捕捉训练数据中的单词、短语、句子和更大的文本范围的统计倾向。
此部分提供有关模型类型、版本、许可证、资助方、发布日期、开发人员和联系信息的信息。对于希望引用该模型的任何人都是有用的。
点击展开由BigScience开发( website )
所有合作者要么是志愿者,要么与其雇主达成了协议。 (有关参与者的详细信息即将公布。)
模型类型:基于Transformer的语言模型
版本:1.0.0
语言:多种语言;请参阅训练数据
许可证:RAIL License v1.0( link )
预计发布日期:2022年7月11日星期一
提问:bigscience-contact@googlegroups.com
引用方式:BigScience,BigScience Language开放科学开放获取多语言(BLOOM)语言模型。国际,2021年5月至2022年5月
资助方:
法国政府。
Hugging Face( website )。
贡献者组织。 (有关组织的详细信息即将公布。)
本部分包括有关模型目标和架构以及计算基础设施的详细信息。对于对模型开发感兴趣的人来说是有用的。
点击展开有关复制训练的详细信息,请参见 the BLOOM training README 。
修改自Megatron-LM GPT2(请参阅 paper , BLOOM Megatron code ):
仅解码器架构
使用ALiBI位置编码(请参阅 paper ),具有GeLU激活函数
1760亿个参数:
70层,112个注意力头
隐藏层为14336维
使用2048个标记的序列长度(请参见 BLOOM tokenizer ,tokenizer描述 )
目标函数:交叉熵与均值缩减(请参阅 API documentation )。
Jean Zay公共超级计算机,由法国政府提供(请参阅 announcement )。
硬件384个A100 80GB GPU(48个节点)
另外32个A100 80GB GPU(4个节点)在备用中
每个节点8个GPU,使用NVLink 4个节点间连接,4个OmniPath连接
CPU:AMD
每个节点的CPU内存:512GB
每个节点的GPU内存:640GB
节点间连接:Omni-Path Architecture(OPA)
NCCL通信网络:完全专用子网
磁盘IO网络:与其他类型的节点共享网络
Megatron-DeepSpeed( Github link )
DeepSpeed( Github link )
PyTorch(pytorch-1.11带CUDA-11.5;请参阅 Github link )
apex( Github link )
本部分提供有关训练数据、训练元素的速度和大小以及训练的环境影响的信息。对于希望了解模型输入和训练足迹的人来说是有用的。
点击展开本部分提供训练数据的概述。对于想要了解模型正在学习的基本知识的任何人都是相关的。
单个数据集的详细信息在各自的 Data Cards 中提供。
训练数据包括:
45种自然语言
12种编程语言
在1.5TB的预处理文本中,转化为350B个唯一标记(请参见 标记化部分 了解更多)。
饼图显示训练数据中不同语言的分布情况。
下表显示尼日尔刚果语和印地语以及编程语言在训练数据中的进一步分布情况。
尼日尔刚果和印地语的分布情况。
Niger Congo | Percentage | Indic | Percentage |
---|---|---|---|
Chi Tumbuka | 0.00002 | Assamese | 0.01 |
Kikuyu | 0.00004 | Odia | 0.04 |
Bambara | 0.00004 | Gujarati | 0.04 |
Akan | 0.00007 | Marathi | 0.05 |
Xitsonga | 0.00007 | Punjabi | 0.05 |
Sesotho | 0.00007 | Kannada | 0.06 |
Chi Chewa | 0.0001 | Nepali | 0.07 |
Setswana | 0.0002 | Telugu | 0.09 |
Northern Sotho | 0.0002 | Malayalam | 0.10 |
Fon | 0.0002 | Urdu | 0.10 |
Kirundi | 0.0003 | Tamil | 0.20 |
Wolof | 0.0004 | Bengali | 0.50 |
Kuganda | 0.0004 | Hindi | 0.70 |
Chi Shona | 0.001 | ||
Isi Zulu | 0.001 | ||
Igbo | 0.001 | ||
Xhosa | 0.001 | ||
Kinyarwanda | 0.003 | ||
Yoruba | 0.006 | ||
Swahili | 0.02 |
编程语言的分布情况。
Extension | Language | Number of files |
---|---|---|
java | Java | 5,407,724 |
php | PHP | 4,942,186 |
cpp | C++ | 2,503,930 |
py | Python | 2,435,072 |
js | JavaScript | 1,905,518 |
cs | C# | 1,577,347 |
rb | Ruby | 6,78,413 |
cc | C++ | 443,054 |
hpp | C++ | 391,048 |
lua | Lua | 352,317 |
go | GO | 227,763 |
ts | TypeScript | 195,254 |
C | C | 134,537 |
scala | Scala | 92,052 |
hh | C++ | 67,161 |
H | C++ | 55,899 |
tsx | TypeScript | 33,107 |
rs | Rust | 29,693 |
phpt | PHP | 9,702 |
c++ | C++ | 1,342 |
h++ | C++ | 791 |
php3 | PHP | 540 |
phps | PHP | 270 |
php5 | PHP | 166 |
php4 | PHP | 29 |
分词:BLOOM分词器( link ),使用以下方式进行训练的学习子词分词器:
字节级字对编码(BPE)算法
简单的预分词规则,无归一化
词汇大小为250,680个
它在使用每种语言的Alpha加权的初始版本的语料库的子集上进行了训练。
训练日志: Tensorboard link
日期:
2022年3月11日上午11:42 PST开始
预计结束时间:2022年7月5日
检查点大小:
Bf16权重:329GB
包含优化器状态的完整检查点:2.3TB
训练吞吐量:每个GPU每秒约150 TFLOP
训练时期数:1
训练成本估计:相当于200-500万美元的云计算费用(包括预实验)
服务器训练位置:法国Île-de-France
训练超级计算机Jean Zay( website )主要使用核能。其产生的热量用于供暖校园住宅。
预计碳排放:(待公布。)
预计用电量:(待公布。)
本部分回答了有关模型拟用途、预见用户(包括受模型影响的用户)以及不考虑范围外或滥用模型的用途的问题。对于考虑使用该模型或受该模型影响的人来说是有用的。
点击展开创建此模型是为了实现关于大型语言模型(LLM)的公共研究。LLM旨在用于语言生成或作为可进一步微调用于特定任务的预训练基础模型。下面列出的用途不是详尽无遗的。
文本生成
探索语言模型生成的特征
本部分介绍了用户不应该对模型做什么的内容。
超出范围的用途在高风险环境中使用模型超出了此模型的范围。该模型不适用于关键决策或对个人生活或福祉产生任何实质后果的用途。模型输出的内容似乎是事实的,但事实上是不正确的。
超出范围的用途包括:
在生物医学领域、政治和法律领域或金融领域使用
用于评估或对个人进行评分,例如用于就业、教育或信用
将模型应用于关键的自动决策、生成事实性内容、创建可靠的摘要或生成必须正确的预测
故意利用模型进行危害、违反人权或其他恶意活动属于此模型的滥用。包括:
生成垃圾邮件
信息误导和影响操作
贬低和诽谤
骚扰和虐待
欺骗
未经同意的冒充和模仿
未经同意的监视
生成不带模型属性的内容,如规定在 RAIL License, Use Restrictions 中所述
广大公众
研究人员
学生
教育工作者
工程师/开发人员
非商业实体
社区倡导者,包括人权和公民权利组织
使用直接用户创建的派生产品的用户,例如使用具有 预期用途 的软件的用户
使用 Derivatives of the Model, as described in the License 的用户
被LLM所涉及的人和团体
暴露于LLM输出或基于LLM的决策的个人和团体
原创作品包含在LLM中的个人和团体
本部分确定了可预见的危害和误解。
点击展开模型可能:
过多地表达某些观点并低估其他观点
包含刻板印象
包含个人信息
生成:
具有仇恨、滥用或暴力语言
具有歧视或偏见的语言
可能对某些环境不适当的内容,包括性内容
出现错误,包括生成错误的信息并将其视为事实
生成不相关或重复的输出
本部分描述了评估协议并提供结果。
点击展开本部分描述了计算性能的不同方式及原因。
包括:
Metric | Why chosen |
---|---|
Perplexity | Standard metric for quantifying model improvements during training |
Cross Entropy Loss | Standard objective for language models. |
以及特定任务的多个不同指标。 (评估协议完成后将提供更多评估指标。)
本部分列出了BLOOM模型的一些不同方面。重点是那些可能导致模型行为差异较大的方面。
语言,例如英语或约鲁巴语
领域,例如新闻稿或故事
人口特征,例如性别或国籍
结果基于 因素 和 指标 。
训练时评估:
截至2022年5月25日15:00 PST:
训练损失:2.0
验证损失:2.2
困惑度:8.9
(更多评估得分即将公布。)
本部分提供有关警告和潜在缓解措施的信息。
点击展开间接用户在使用由LLM创建的内容时应该意识到其来源于LLM。
用户应该了解 风险和限制 ,并根据需要包含适当的年龄声明或阻止接口。
在BLOOM LM之后进行训练或微调的模型应包括更新的模型卡。
模型的用户应提供机制,使受影响的人可以提供反馈,例如提供电子邮件地址以便提供评论。
本部分定义了常见术语以及如何计算指标。
点击展开Loss: 模型所学到的内容与数据显示的内容(“基准事实”)之间的差异的计算。损失越低越好。训练过程旨在最小化损失。
Perplexity: 基于模型估计新数据的概率。困惑度越低越好。如果模型在预测下一个标记时100%准确,则困惑度为1。数学上,这是使用熵计算的。
High-stakes settings: 如欧盟提出的“ Artificial Intelligence (AI) Act ”中所定义的“高风险AI系统”和“不可接受风险AI系统”。
Critical decisions: 如 the United States' proposed Algorithmic Accountability Act 中定义的那样。
Human rights: 包括在 Universal Declaration of Human Rights 中定义的那样的权利。
Personal Data and Personal Information: 个人数据和信息在多个数据保护法规中定义,例如欧盟的“隐私权规例”(GDPR),南非共和国的“ personal data ”,中华人民共和国的“ European Union's General Data Protection Regulation ”。
Sensitive characteristics: 包括人权(请参见 UHDR, Article 2 )和个人信息管理(请参见GDPR、 Article 9; Protection of Personal Information Act, Chapter 1 )中明确定义的受特殊保护类别。
Deception: 故意误导个人相信虚假信息,例如通过在社交媒体上创建死账号或聊天机器人冒充真实人员,或生成文本文档而不使消费者意识到文本是机器生成的。
本部分提供有关数据集创建、技术规格、经验教训和初步结果的文章链接。
点击展开博客文章详细介绍了数据集创建过程中的设计选择: https://bigscience.huggingface.co/blog/building-a-tb-scale-multilingual-dataset-for-language-modeling
博客文章总结了如何选择体系结构、大小、形状和预训练持续时间: https://bigscience.huggingface.co/blog/what-language-model-to-train-if-you-have-two-million-gpu-hours
关于体系结构/优化器的更多详细信息: https://github.com/bigscience-workshop/bigscience/tree/master/train/tr11-176B-ml
关于硬件/工程方面的博客文章: https://bigscience.huggingface.co/blog/which-hardware-to-train-a-176b-parameters-model
关于用于训练的分布式设置的详细信息: https://github.com/bigscience-workshop/bigscience/tree/master/train/tr11-176B-ml
训练期间更新的Tensorboard: https://huggingface.co/bigscience/tr11-176B-ml-logs/tensorboard#scalars&tagFilter=loss
如何进行训练的见解,负面结果: https://github.com/bigscience-workshop/bigscience/blob/master/train/lessons-learned.md
关于工程方面准备过程中的障碍的详细信息(不稳定性、训练吞吐量的优化、许多技术技巧和问题): https://github.com/bigscience-workshop/bigscience/blob/master/train/tr11-176B-ml/chronicles.md
使用中间检查点的初步提示实验: https://huggingface.co/spaces/bigscience/bloom-book
大致按时间顺序和花费的时间排序。
Margaret Mitchell,Giada Pistilli,Yacine Jernite,Ezinwanne Ozoani,Marissa Gerchick,Nazneen Rajani,Sasha Luccioni,Irene Solaiman,Maraim Masoud,Somaieh Nikpoor,Carlos Muñoz Ferrandis,Stas Bekman,Christopher Akiki,Danish Contractor,David Lansky,Angelina McMillan-Major,Tristan Thrush,Suzana Ilić,Gérard Dupont,Shayne Longpre,Manan Dey,Stella Biderman,Douwe Kiela,Emi Baylor,Teven Le Scao,Aaron Gokaslan,Julien Launay,Niklas Muennighoff