🚀 BigScience大语言模型
BigScience是一个大规模的开源、开放访问的多语言语言模型,它使用工业级计算资源在大量文本数据上进行训练,能够以46种自然语言和13种编程语言输出连贯的文本,可用于文本生成等多种自然语言处理任务。
🚀 快速开始
此模型可借助HuggingFace的生态系统轻松使用和部署。这需要安装transformers
和accelerate
。可以按如下方式下载该模型:
✨ 主要特性
- 多语言支持:支持46种自然语言和13种编程语言,能处理多种语言的文本任务。
- 文本生成能力:可以根据输入的提示继续生成连贯的文本,输出的文本与人类撰写的文本难以区分。
- 任务泛化性:能够执行未经过明确训练的文本任务,通过将这些任务转化为文本生成任务来完成。
📦 安装指南
使用此模型需要安装transformers
和accelerate
,可通过以下命令进行安装:
pip install transformers accelerate
📚 详细文档
模型基础信息
属性 |
详情 |
开发团队 |
BigScience (网站) |
模型类型 |
基于Transformer的语言模型 |
检查点格式 |
transformers (Megatron - DeepSpeed格式可在此处获取) |
版本 |
1.0.0 |
支持语言 |
多种;详见训练数据 |
许可证 |
RAIL许可证v1.0 (链接 / 文章和常见问题解答) |
预计发布日期 |
2022年7月11日,星期一 |
咨询邮箱 |
bigscience - contact@googlegroups.com |
引用格式 |
BigScience, BigScience Language Open - science Open - access Multilingual (BLOOM) Language Model. International, May 2021 - May 2022 |
资助方 |
法国政府;Hugging Face (网站);贡献者所在组织(各组织详情后续公布) |
技术规格
模型架构与目标
- 基于Megatron - LM GPT2进行修改(详见论文,BLOOM Megatron代码)。
- 仅解码器架构。
- 对词嵌入层应用层归一化(
StableEmbedding
;详见代码,论文)。
- 使用ALiBI位置编码(详见论文),激活函数为GeLU。
- 具有176,247,271,424个参数:
- 3,596,615,680个嵌入参数。
- 70层,112个注意力头。
- 隐藏层维度为14336。
- 使用的序列长度为2048个标记(详见BLOOM分词器,分词器描述)。
目标函数:带均值缩减的交叉熵(详见API文档)。
计算基础设施
由法国政府提供的Jean Zay公共超级计算机(详见公告)。
硬件
- 384块A100 80GB GPU(48个节点)。
- 额外预留32块A100 80GB GPU(4个节点)。
- 每个节点8块GPU,使用NVLink 4 GPU间连接,4条OmniPath链路。
- CPU:AMD。
- 每个节点CPU内存:512GB。
- 每个节点GPU内存:640GB。
- 节点间连接:Omni - Path架构(OPA)。
- NCCL通信网络:专用子网。
- 磁盘IO网络:与其他类型节点共享网络。
软件
训练信息
训练数据
训练数据详情可在各个数据卡片中查看,各数据集对聚合训练数据的贡献大小可在交互式语料库地图中查看。
训练数据包括:
- 46种自然语言。
- 13种编程语言。
- 1.6TB预处理文本,转换为3500亿个唯一标记(更多信息详见分词器部分)。
语言分布

以下表格展示了训练数据中尼日尔 - 刚果语系和印度语系语言以及编程语言的进一步分布情况。
尼日尔 - 刚果语系和印度语系语言分布
| 尼日尔 - 刚果语系 | 百分比 | 印度语系 | 百分比 |
|----------------|------------| ------ |-----------|------------|
| 奇通布卡语 | 0.00002 | 阿萨姆语 | 0.01 |
| 基库尤语 | 0.00004 | 奥里亚语 | 0.04 |
| 班巴拉语 | 0.00004 | 古吉拉特语 | 0.04 |
| 阿坎语 | 0.00007 | 马拉地语 | 0.05 |
| 聪加语 | 0.00007 | 旁遮普语 | 0.05 |
| 塞索托语 | 0.00007 | 卡纳达语 | 0.06 |
| 奇切瓦语 | 0.0001 | 尼泊尔语 | 0.07 |
| 茨瓦纳语 | 0.0002 | 泰卢固语 | 0.09 |
| 林加拉语 | 0.0002 | 马拉雅拉姆语 | 0.10 |
| 北索托语 | 0.0002 | 乌尔都语 | 0.10 |
| 丰语 | 0.0002 | 泰米尔语 | 0.20 |
| 基隆迪语 | 0.0003 | 孟加拉语 | 0.50 |
| 沃洛夫语 | 0.0004 | 印地语 | 0.70 |
| 卢干达语 | 0.0004 | | |
| 奇绍纳语 | 0.001 | | |
| 祖鲁语 | 0.001 | | |
| 伊博语 | 0.001 | | |
| 科萨语 | 0.001 | | |
| 卢旺达语 | 0.003 | | |
| 约鲁巴语 | 0.006 | | |
| 斯瓦希里语 | 0.02 | | |
编程语言分布
文件扩展名 |
语言 |
文件数量 |
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 |
678,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分词器(链接),是一个学习型子词分词器,使用以下方法进行训练:
- 字节级字节对编码(BPE)算法。
- 简单的预分词规则,无归一化处理。
- 词汇表大小为250,680。
它是在语料库的一个初步版本的子集上使用每种语言的alpha加权进行训练的。
速度、大小和时间
训练日志:Tensorboard链接
- 日期:
- 开始时间:2022年3月11日,太平洋标准时间上午11:42。
- 预计结束时间:2022年7月5日。
- 检查点大小:
- Bf16权重:329GB。
- 包含优化器状态的完整检查点:2.3TB。
- 训练吞吐量:约每个GPU每秒150 TFLOP。
- 训练轮数:1。
- 预计训练成本:相当于200 - 500万美元的云计算成本(包括初步实验)。
- 服务器训练地点:法国法兰西岛大区。
环境影响
训练用的超级计算机Jean Zay(网站)主要使用核能。其产生的热量被用于为校园住房供暖。
预计碳排放量:(待公布)
预计用电量:(待公布)
使用说明
预期用途
此模型旨在推动对大语言模型(LLM)的公开研究。LLM可用于文本生成,或作为预训练基础模型,进一步针对特定任务进行微调。以下用例并非详尽无遗。
- 直接使用:
- 文本生成。
- 探索语言模型生成的语言特征,例如完形填空测试、反事实情况、重新构建的生成。
- 下游使用:利用语言模型的任务包括信息提取、问答、摘要等。
不当使用和超出范围的使用
详见BLOOM许可证附件A中的详细使用限制。以下列表并非详尽无遗,但列出了一些容易预见的有问题的使用情况。
- 超出范围的使用:在高风险环境中使用此模型超出了其适用范围。该模型并非为关键决策而设计,也不适用于对个人生计或福祉有重大影响的使用场景。模型输出的内容看似事实,但可能并不正确。超出范围的使用包括:在生物医学领域、政治和法律领域或金融领域的使用;用于评估或评分个人,如就业、教育或信贷方面;用于关键自动决策、生成事实性内容、创建可靠摘要或生成必须正确的预测。
- 不当使用:故意使用该模型造成伤害、侵犯人权或进行其他恶意活动,均属于对该模型的不当使用。这包括:生成垃圾邮件;传播虚假信息和进行影响操作;诋毁和诽谤;骚扰和虐待;欺骗;未经同意的模仿和假冒;未经同意的监视;未按照RAIL许可证,使用限制的规定对模型进行归因而生成内容。
预期用户
- 直接用户:普通公众、研究人员、学生、教育工作者、工程师/开发者、非商业实体、社区倡导者,包括人权和民权组织。
- 间接用户:使用直接用户创建的衍生产品的用户,例如使用具有预期用途的软件的用户。
🔧 技术细节
碳排放信息
属性 |
详情 |
排放量 |
24,700,000 |
来源 |
"Estimating the Carbon Footprint of BLOOM, a 176B Parameter Language Model. https://arxiv.org/abs/2211.02001" |
训练类型 |
"预训练" |
地理位置 |
"法国奥赛" |
使用的硬件 |
"384块A100 80GB GPU" |
模型评估结果
任务类型 |
数据集 |
指标 |
值 |
验证状态 |
文本生成 |
openai_humaneval(humaneval) |
pass@1 |
0.15542682926829265 |
未验证 |
文本生成 |
openai_humaneval(humaneval) |
pass@10 |
0.3278356276947017 |
未验证 |
文本生成 |
openai_humaneval(humaneval) |
pass@100 |
0.5719815685597749 |
未验证 |
📄 许可证
本模型使用RAIL许可证v1.0,详情请见链接 / 文章和常见问题解答。