版本 1.0 / 2022年5月26日
添加了示例代码并修改了链接路径
以下代码展示了与bloom_1b1进行交互的示例:
import torch
from openmind import AutoModelForCausalLM, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("PyTorch-NPU/bloom_1b1", trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained("PyTorch-NPU/bloom_1b1", trust_remote_code=True, device_map="auto")
input = "Give three tips for staying healthy."
prompt = ("Below is an instrunction that describes a task. "
"Write a response that appropriately completes the requests\n\n"
f"### Instruction:\n{input}\n\n### Response:")
inputs = tokenizer(prompt, return_tensors="pt")
inputs = inputs.to(model.device)
pred = model.generate(**inputs, max_new_tokens=512, repetition_penalty=1.1)
print(tokenizer.decode(pred.cpu()[0], skip_special_tokens=True))本节为任何希望了解模型信息的人士提供相关资料。
开发者: BigScience
模型类型: 基于Transformer的语言模型
版本: 1.0.0
支持语言: 多种语言;具体见训练数据
许可: RAIL License v1.0 (链接)
预计发布日期: 2022年7月11日,星期一
问题反馈至: bigscience-contact@googlegroups.com
引用方式: BigScience, BigScience Language Open-science Open-access Multilingual (BLOOM) Language Model. 国际,2021年5月-2022年5月
资助方:
法国政府。
Hugging Face。
贡献者所在组织。 (组织的进一步细分即将公布。)
本节为参与模型开发的人员提供信息。
请查看BLOOM训练README获取复制训练的详细信息。
模型架构: 从Megatron-LM GPT2修改而来(详见paper, BLOOM Megatron代码):
仅解码器架构
ALiBI位置编码(详见paper),带有GeLU激活函数
1,065,314,304个参数:
目标函数: 带均值缩减的交叉熵(详见API文档)。
计算基础设施: 由法国政府提供的Jean Zay公共超级计算机(详见公告)。
硬件:384个A100 80GB GPU(48个节点):
额外32个A100 80GB GPU(4个节点)作为备用
每个节点8个GPU,使用4个NVLink GPU间连接,4个OmniPath连接
CPU: AMD
CPU内存:每个节点512GB
GPU内存:每个节点640GB
节点间连接:Omni-Path架构(OPA)
NCCL通信网络:完全专用的子网
磁盘IO网络:与其他类型节点共享的网络
软件:
训练周期数:1
训练日期:
开始于2022年3月11日 11:42am PST
结束于2022年7月5日
训练估计成本:相当于200万至500万美元的云计算费用(包括初步实验和其他模型大小)
服务器训练位置:法国 Île-de-France
BLOOM分词器(链接)是一个学习的子词分词器,通过以下方式训练:
字节级别的字节对编码(BPE)算法
简单的预分词规则,无归一化
词汇表大小为250,680
它是在预览版语料库的一个子集上,按语言alpha加权训练的。
本节讨论模型预期用途,预测使用模型的人员(包括受模型影响的人员),以及被视为超出范围或滥用模型的使用方式。它为任何考虑使用模型或受模型影响的人员提供信息。
本模型的创建旨在使公众能够对大型语言模型(LLMs)进行研究所用。LLMs旨在用于语言生成或作为预训练的基础模型,可以进一步针对特定任务进行微调。以下用例并不详尽。
文本生成
探索由语言模型生成的语言特性
本节讨论用户不应如何使用模型。
请参阅BLOOM许可,附件A,详细了解使用限制。以下列表并不详尽,但列出了一些容易预见的问题用法。
在高风险环境中使用模型超出了本模型的范围。模型未设计用于关键决策或对个人生计或福祉产生任何实质性影响的用途。模型输出的内容看似真实,但并不正确。
在生物医学领域、政治和法律领域或金融领域使用
用于评估或评分个人,如就业、教育或信贷
将模型应用于关键自动决策,生成事实内容,创建可靠的摘要或生成必须正确的预测
故意使用模型造成伤害、侵犯人权或进行其他恶意活动是滥用本模型。这包括:
生成垃圾邮件
制造虚假信息和影响操作
诽谤和中伤
恐吓和滥用
未授权模仿和冒充
未授权监视
生成未注明模型来源的内容,如RAIL许可,使用限制所述。
普通大众
研究人员
学生
教育工作者
工程师/开发者
非商业实体
社区倡导者,包括人权和公民权利团体
使用直接用户创建的派生产品的用户,例如使用具有预期用途的软件的用户
使用模型派生物,如许可证中所述的用户
被大型语言模型提及的人和团体
暴露于模型输出或基于模型的决策的人和团体
原创作品被包含在大型语言模型中的人和团体
本节提供了训练数据的高级概述。对于任何想要了解模型学习基础内容的人来说,这是相关的。
每个数据集的详细信息都提供在单独的[数据卡](Data Cards)中。
训练数据包括:
45种自然语言
12种编程语言
在1.5TB的预处理文本中,转换为350B个唯一标记(更多细节见标记化部分)。
饼图显示了训练数据中语言分布。
以下表格显示了尼日尔-刚果语系和印欧语系在训练数据中的进一步分布。
| 尼日尔-刚果语系 | 百分比 | 印欧语系 | 百分比 | |
|---|---|---|---|---|
| Chi Tumbuka | 0.00002 | 阿萨姆语 | 0.01 | |
| Kikuyu | 0.00004 | 奥里亚语 | 0.04 | |
| 巴姆巴拉语 | 0.00004 | 古吉拉特语 | 0.04 | |
| Akan | 0.00007 | 马拉地语 | 0.05 | |
| Xitsonga | 0.00007 | 旁遮普语 | 0.05 | |
| Sesotho | 0.00007 | 卡纳达语 | 0.06 | |
| Chi Chewa | 0.0001 | 尼泊尔语 | 0.07 | |
| Setswana | 0.0002 | 泰卢固语 | 0.09 | |
| 北索托语 | 0.0002 | 马拉雅拉姆语 | 0.10 | |
| Fon | 0.0002 | 乌尔都语 | 0.10 | |
| Kirundi | 0.0003 | 泰米尔语 | 0.20 | |
| Wolof | 0.0004 | 孟加拉语 | 0.50 | |
| Kuganda | 0.0004 | 印地语 | 0.70 | |
| Chi Shona | 0.001 | |||
| Isi Zulu | 0.001 | |||
| Igbo | 0.001 | |||
| Xhosa | 0.001 | |||
| Kinyarwanda | 0.003 | |||
| Yoruba | 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模型的各个方面。其重点是可能导致模型行为高方差的因素。
语言,例如英语或约鲁巴语
领域,例如新闻或故事
人口统计特征,例如性别或国籍
训练时评估:
截至2022年5月25日,15:00 PST:
训练损失:2.7
验证损失:3.1
困惑度:21.9
(更多评估得分将在模型训练结束时提供。)
本节提供了关于警告和潜在缓解的信息。
间接用户应该意识到他们正在处理的内容是由大型语言模型创建的。
用户应该了解风险和限制,并在必要时包括适当的年龄声明或阻止界面。
使用大型语言模型预训练的模型应该包含更新的模型卡。
模型的用户应该提供受影响方提供反馈的机制,例如用于评论的电子邮件地址。
本节定义了常见术语以及如何计算度量指标。
损失(Loss): 模型学习结果与数据表现(“真实值”)之间的差异计算。损失值越低,效果越好。训练过程旨在最小化损失。
困惑度(Perplexity): 模型估计新数据的概率。困惑度越低,效果越好。如果模型在预测下一个看到的标记时完全正确,困惑度为1。数学上这是通过熵来计算的。
高风险场景(High-stakes settings): 如欧盟提议的《人工智能(AI)法案》中定义的“高风险AI系统”和“不可接受风险AI系统”。
关键决策(Critical decisions): 如美国提议的《算法责任法案》中定义的。
人权(Human rights): 包括《世界人权宣言》中定义的权利。
个人数据与个人信息: 个人数据和信息在多个数据保护法规中有所定义,如欧盟《通用数据保护条例》中的“个人数据”;以及南非共和国《个人数据保护法案》中的“个人信息”。
敏感特征(Sensitive characteristics): 包括人权中特别保护的类别(参见《世界人权宣言》第二条款)和个人信息规定(参见GDPR第9条款;《个人数据保护法案》第一章)。
欺骗(Deception): 故意误导个人相信某些虚假事物,例如通过在社交媒体上创建冒充真实用户的死机器人或聊天机器人,或生成消费者没有意识到是机器生成的文本文档。
博客文章,详细说明数据集创建过程中的设计选择
博客文章,总结如何选择架构、大小、形状和预训练持续时间
架构/优化器的更多详情:https://github.com/bigscience-workshop/bigscience/tree/master/train/tr11-176B-ml
硬件/工程方面的博客文章
训练过程中使用的分布式设置的详情:https://github.com/bigscience-workshop/bigscience/tree/master/train/tr11-176B-ml
训练期间更新的Tensorboard
关于如何进行训练、负面结果的见解: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
使用临时检查点的初步提示实验
大致按时间顺序和投入时间排序。
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