o
openMind/bloom_1b1
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

BLOOM LM

大型开放科学开放获取多语种语言模型 BigScience Large Open-science Open-access Multilingual Language Model

模型概述

版本 1.0 / 2022年5月26日

目录

  1. 模型详情
  2. 应用场景
  3. 训练数据
  4. 风险与限制
  5. 评估
  6. 建议
  7. 术语与计算
  8. 更多信息
  9. 模型概述撰写者

修改记录

添加了示例代码并修改了链接路径

模型详情

快速入门

以下代码展示了与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代码):

  • 仅解码器架构

  • 词向量层应用层归一化(StableEmbedding; 详见代码, paper)

  • ALiBI位置编码(详见paper),带有GeLU激活函数

  • 1,065,314,304个参数:

    • 385,351,680个嵌入参数

    • 24层,16个注意力头

    • 隐藏层为1536维

    • 使用2048个token的序列长度(详见BLOOM分词器, 分词描述)

目标函数: 带均值缩减的交叉熵(详见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网络:与其他类型节点共享的网络

  • 软件:

    • Megatron-DeepSpeed (GitHub链接)

    • DeepSpeed (GitHub链接)

    • PyTorch (pytorch-1.11 w/ CUDA-11.5; 详见GitHub链接)

    • apex (GitHub链接)

训练

  • 训练周期数:1

  • 训练日期:

    • 开始于2022年3月11日 11:42am PST

    • 结束于2022年7月5日

  • 训练估计成本:相当于200万至500万美元的云计算费用(包括初步实验和其他模型大小)

  • 服务器训练位置:法国 Île-de-France

分词

BLOOM分词器(链接)是一个学习的子词分词器,通过以下方式训练:

  • 字节级别的字节对编码(BPE)算法

  • 简单的预分词规则,无归一化

  • 词汇表大小为250,680

它是在预览版语料库的一个子集上,按语言alpha加权训练的。

环境影响

点击展开

训练超级计算机,Jean Zay (网站),主要使用核能。它产生的热量被重新用于校园宿舍的供暖。

预计碳排放: (训练完成后即将公布。)

预计用电量: (训练完成后即将公布。)

 

使用范围

本节讨论模型预期用途,预测使用模型的人员(包括受模型影响的人员),以及被视为超出范围或滥用模型的使用方式。它为任何考虑使用模型或受模型影响的人员提供信息。

点击展开

预定用途

本模型的创建旨在使公众能够对大型语言模型(LLMs)进行研究所用。LLMs旨在用于语言生成或作为预训练的基础模型,可以进一步针对特定任务进行微调。以下用例并不详尽。

直接使用

  • 文本生成

  • 探索由语言模型生成的语言特性

    • 例如:Cloze测试、反事实情况、带有重新构架的生成

下游应用

  • 利用语言模型的任务包括:信息提取、问题回答、文本摘要

滥用和超出范围的使用

本节讨论用户不应如何使用模型。

请参阅BLOOM许可,附件A,详细了解使用限制。以下列表并不详尽,但列出了一些容易预见的问题用法。

超出范围的使用

在高风险环境中使用模型超出了本模型的范围。模型未设计用于关键决策或对个人生计或福祉产生任何实质性影响的用途。模型输出的内容看似真实,但并不正确。

超出范围的使用包括:
  • 在生物医学领域、政治和法律领域或金融领域使用

  • 用于评估或评分个人,如就业、教育或信贷

  • 将模型应用于关键自动决策,生成事实内容,创建可靠的摘要或生成必须正确的预测

滥用

故意使用模型造成伤害、侵犯人权或进行其他恶意活动是滥用本模型。这包括:

  • 生成垃圾邮件

  • 制造虚假信息和影响操作

  • 诽谤和中伤

  • 恐吓和滥用

  • 欺骗

  • 未授权模仿和冒充

  • 未授权监视

  • 生成未注明模型来源的内容,如RAIL许可,使用限制所述。

目标用户

直接用户

  • 普通大众

  • 研究人员

  • 学生

  • 教育工作者

  • 工程师/开发者

  • 非商业实体

  • 社区倡导者,包括人权和公民权利团体

间接用户

  • 使用直接用户创建的派生产品的用户,例如使用具有预期用途的软件的用户

  • 使用模型派生物,如许可证中所述的用户

受影响的其他方(利益相关者)

  • 被大型语言模型提及的人和团体

  • 暴露于模型输出或基于模型的决策的人和团体

  • 原创作品被包含在大型语言模型中的人和团体

 

训练数据

本节提供了训练数据的高级概述。对于任何想要了解模型学习基础内容的人来说,这是相关的。

点击展开

每个数据集的详细信息都提供在单独的[数据卡](Data Cards)中。

训练数据包括:

  • 45种自然语言

  • 12种编程语言

  • 在1.5TB的预处理文本中,转换为350B个唯一标记(更多细节见标记化部分)。

语言

饼图显示了训练数据中语言分布。

饼图显示训练数据中语言的分布

以下表格显示了尼日尔-刚果语系和印欧语系在训练数据中的进一步分布。

点击展开
尼日尔-刚果语系百分比印欧语系百分比
Chi Tumbuka0.00002阿萨姆语0.01
Kikuyu0.00004奥里亚语0.04
巴姆巴拉语0.00004古吉拉特语0.04
Akan0.00007马拉地语0.05
Xitsonga0.00007旁遮普语0.05
Sesotho0.00007卡纳达语0.06
Chi Chewa0.0001尼泊尔语0.07
Setswana0.0002泰卢固语0.09
北索托语0.0002马拉雅拉姆语0.10
Fon0.0002乌尔都语0.10
Kirundi0.0003泰米尔语0.20
Wolof0.0004孟加拉语0.50
Kuganda0.0004印地语0.70
Chi Shona0.001
Isi Zulu0.001
Igbo0.001
Xhosa0.001
Kinyarwanda0.003
Yoruba0.006
斯瓦希里语0.02

以下表格显示了编程语言的分布。

点击展开
扩展名语言文件数量
javaJava5,407,724
phpPHP4,942,186
cppC++2,503,930
pyPython2,435,072
jsJavaScript1,905,518
csC#1,577,347
rbRuby678,413
ccC++443,054
hppC++391,048
luaLua352,317
goGO227,763
tsTypeScript195,254
CC134,537
scalaScala92,052
hhC++67,161
HC++55,899
tsxTypeScript33,107
rsRust29,693
phptPHP9,702
c++C++1,342
h++C++791
php3PHP540
phpsPHP270
php5PHP166
php4PHP29

 

风险和限制

本节确定了可预见的伤害和误解。

点击展开

模型可能会:

  • 过度代表一些观点而低估其他观点

  • 包含刻板印象

  • 包含个人信息

  • 生成:

    • 仇恨、虐待或暴力语言

    • 歧视性或偏见语言

    • 可能不适合所有场合的内容,包括色情内容

  • 出现错误,包括将错误信息当作事实产生

  • 生成不相关或重复的输出

 

评估

本节描述了评估协议并提供了结果。

点击展开

指标

本节描述了性能计算的不同的方式以及为什么选择它们。

包括:

指标为什么选择它
困惑度训练期间量化模型改进的标准指标
交叉熵 损失语言模型的标准目标。

以及针对特定任务的多个不同指标。 (更多评估指标将在评估协议完成后提供。)

因素

本节列出了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