版本 1.0 / 2022年5月26日
添加了示例代码并修改了链接路径
以下代码展示了与 bloom_1b7 交互的示例:
import torch
from openmind import AutoModelForCausalLM, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("PyTorch-NPU/bloom_1b7", trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained("PyTorch-NPU/bloom_1b7", 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日(星期一)
资助方:
法国政府。
Hugging Face。
贡献者所在的组织。(组织的进一步细分信息即将公布。)
本节解答有关模型预期用途的问题,讨论可预见的模型用户(包括受模型影响的用户),并描述被视为超出范围或误用模型的情况。 本节为任何考虑使用该模型或受该模型影响的人士提供信息。
创建此模型旨在支持对大型语言模型(LLMs)的公开研究。LLMs 旨在用于语言生成,或作为可进一步微调以适应特定任务的预训练基础模型。以下用例并非详尽无遗。
文本生成
探索语言模型生成文本的特性
本节说明用户不应将模型用于哪些方面。
有关详细的使用限制,请参见BLOOM 许可证的附件A。以下列表并非详尽无遗,但列出了一些易于预见的有问题的用例。
将本模型用于高风险场景超出了本模型的适用范围。该模型并非为关键决策或对个人生计或福祉有任何实质性影响的用途而设计。模型输出的内容可能看似真实,但实际上并不准确。
在生物医学领域、政治和法律领域或金融领域的使用
用于评估或评分个人,例如用于就业、教育或信贷评估
将模型应用于关键自动决策、生成事实性内容、创建可靠摘要或生成必须准确的预测
故意使用模型造成伤害、违反人权或进行其他恶意活动,均属于对本模型的误用。这包括:
生成垃圾信息
虚假信息和影响操作
贬低和诽谤
骚扰和虐待
未经同意的冒充和模仿
未经同意的监视
未按RAIL 许可证的使用限制要求对模型生成的内容进行归属标注
本节指出可预见的危害和误解。
模型可能会:
本节提供有关警告和潜在缓解措施的信息。
本节提供训练数据的高层概述。对于任何希望了解模型学习基础内容的人来说,这都具有相关性。
每个数据集的详细信息在各个[数据卡片]中提供。
训练数据包括:
饼图显示了训练数据中语言的分布情况。
下表显示了训练数据中尼日尔-刚果语系和印度语系语言的进一步分布情况。
| 尼日尔-刚果语系 | 百分比 | 印度语系 | 百分比 | |
|---|---|---|---|---|
| 通布卡语 | 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.0003 | 泰米尔语 | 0.20 | |
| 沃洛夫语 | 0.0004 | 孟加拉语 | 0.50 | |
| 卢干达语 | 0.0004 | 印地语 | 0.70 | |
| 齐绍纳语 | 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 |
本节介绍评估协议并提供结果。
本节描述计算性能的不同方式及其原因。
包括:
| 指标 | 选择原因 |
|---|---|
| Perplexity | 用于量化训练期间模型改进的标准指标 |
| Cross Entropy Loss | 语言模型的标准目标函数。 |
以及针对特定任务的多种不同指标。(更多评估指标将在评估协议完成后推出。)
本节列出了 BLOOM 模型的一些不同方面。重点关注那些可能导致模型行为出现高方差的方面。
语言,如英语或约鲁巴语
领域,如新闻专线或故事
人口统计特征,如性别或国籍
训练时评估:
截至 2022 年 5 月 25 日,太平洋标准时间 15:00:
训练损失:2.0
验证损失:2.2
Perplexity:8.9
(更多评估分数将在模型训练结束时提供。)
训练用超级计算机 Jean Zay(网站)主要使用核能。其产生的热量被重新用于校园住房供暖。
估计碳排放: (训练完成后提供。)
估计电力使用: (训练完成后提供。)
本节为从事模型开发的人员提供信息。
有关复制训练的完整详细信息,请参见 BLOOM 训练 README。
模型架构: 基于 Megatron-LM GPT2 修改(参见 论文,BLOOM Megatron 代码):
仅解码器架构
ALiBI 位置编码(参见 论文),使用 GeLU 激活函数
1,722,408,960 个参数:
513,802,240 个嵌入参数
24 层,16 个注意力头
隐藏层为 2048 维
使用的序列长度为 2048 个 token(参见 BLOOM tokenizer,分词器说明)
目标函数: 带均值归约的交叉熵(参见 API 文档)。
计算基础设施: Jean Zay 公共超级计算机,由法国政府提供(参见 公告)。
硬件:64 块 V100 16/32GB GPU(16 个节点):
每个节点 4 块 GPU
每个任务 40 个 CPU
每个节点 1 个任务
CPU:AMD
CPU 内存:每个节点 160GB
GPU 内存:每个节点 64GB 或 128GB(取决于训练期间节点的可用性)
节点间连接:Omni-Path Architecture (OPA)
NCCL 通信网络:完全专用的子网
磁盘 IO 网络:与其他类型节点共享的网络
软件:
检查点大小:
Fp16 权重:2.6GB(参数数量 * 2)
包含优化器状态的完整检查点:--
训练吞吐量:--
训练轮次:1
日期:
开始:2022年3月11日 上午11:42(太平洋标准时间)
结束:2022年5月20日
服务器训练地点:法国法兰西岛大区
BLOOM 分词器(链接)是一种经过训练的子词分词器,其训练方式如下:
基于字节级别的字节对编码(BPE)算法
采用简单的预分词规则,无归一化处理
词汇表大小为 250,680
它是在语料库初步版本的一个子集上进行训练的,并对每种语言采用 alpha 加权。
引用格式: BigScience, BigScience Language Open-science Open-access Multilingual (BLOOM) Language Model. International, May 2021-May 2022
本节定义常见术语及指标计算方式。
损失(Loss): 用于计算模型已学习内容与数据所示内容(“真实值”)之间的差异。损失值越低越好。训练过程旨在最小化损失。
困惑度(Perplexity): 基于模型对新数据概率的估计。困惑度越低越好。如果模型能 100% 准确预测下一个将要出现的 token,那么困惑度为 1。其数学计算基于熵。
高风险场景(High-stakes settings): 例如欧盟拟议的《人工智能法案》(Artificial Intelligence (AI) Act)中认定的“高风险 AI 系统”和“不可接受风险 AI 系统”。
关键决策(Critical decisions): 例如美国拟议的《算法问责法案》(Algorithmic Accountability Act)中定义的决策。
人权(Human rights): 包括《世界人权宣言》(Universal Declaration of Human Rights)中定义的各项权利。
个人数据和个人信息(Personal Data and Personal Information): 个人数据和个人信息在多项数据保护法规中均有定义,例如欧盟《通用数据保护条例》(General Data Protection Regulation)中的“个人数据”;南非共和国《个人信息保护法》(Protection of Personal Information Act)以及中华人民共和国《个人信息保护法》(Personal information protection law)中的“个人信息”。
敏感特征(Sensitive characteristics): 包括人权(参见《世界人权宣言》第 2 条 UHDR, Article 2)和个人信息法规(参见《通用数据保护条例》第 9 条;《个人信息保护法》第一章 Protection of Personal Information Act, Chapter 1)中特别保护的类别。
欺骗(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