英文

BLOOM LM

BigScience大规模开放科学开放获取多语言语言模型

模型卡

版本 1.0 / 26.May.2022

目录

  • 模型细节
  • 应用
  • 训练数据
  • 风险和限制
  • 评估
  • 建议
  • 术语表和计算
  • 更多信息
  • 模型卡作者
  • 模型细节

    基本信息

    本节提供给希望了解模型的任何人的信息。

    点击展开

    开发者:BigScience( website

    • 所有合作者要么是志愿者,要么与其雇主达成协议。 (参与者的详细分布将很快公布。)

    模型类型:基于Transformer的语言模型

    版本:1.0.0

    语言:多种;请参阅训练数据

    许可:RAIL许可证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 ):

    • 只有解码器架构
    • 将层规范化应用于词嵌入层(StableEmbedding;参见 code paper
    • 使用ALiBI位置编码(参见 paper ),GeLU激活函数
    • 3,002,557,440个参数:
      • 642,252,800个嵌入参数
      • 30个层,32个注意力头
      • 隐藏层为2560维
      • 使用2048个令牌的序列长度(参见 BLOOM tokenizer ,标记器描述)

    目标函数:交叉熵,使用平均降低(参见 API documentation )。

    计算基础设施:Jean Zay公共超级计算机,由法国政府提供(参见 announcement )。

    • 硬件: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网络:与其他类型节点共享的网络
    训练

    训练日志: Tensorboard link

    • 训练轮数:1(当前目标)
    • 日期:
      • 开始时间:2022年3月11日上午11:42 PST
      • 结束时间:2022年7月5日
    估计的训练成本:等价于云计算中的2-5百万美元(包括初步实验)
  • 服务器训练位置:法国伊勒德法尔省
  • 令牌化

    BLOOM标记器( link )是一个经过训练的子词标记器,使用以下方式进行训练:

    • 字节级字对编码(BPE)算法
    • 简单的预标记规则,无规范化
    • 词汇量大小为250,680

    它是使用预处理文本的1.5TB子集进行训练的,转换为350B个唯一标记(请参阅标记器部分)。

    环境影响

    点击展开

    训练超级计算机Jean Zay( website )主要使用核能。它产生的热量被再利用用于加热校园住房。

    估计的碳排放量:(在训练完成后即可公布)

    估计的电力使用量:(在训练完成后即可公布)

    应用

    本节回答了关于模型的预期使用方式的问题,讨论了可能受模型影响的用户,并描述了模型的超出范围或误用。它为考虑使用模型或受到模型影响的任何人提供信息。

    点击展开

    预期用途

    创建此模型是为了促进大型语言模型(LLMs)的公共研究。LLMs旨在用于语言生成或作为可以进一步用于特定任务的预训练基础模型。以下用例并非详尽无遗。

    直接使用
    • 文本生成
    • 探索语言模型生成的语言特征
      • 例如:填空测试,虚拟推理,通过重构生成的内容
    下游使用
    • 利用语言模型的任务包括:信息提取,问题回答,摘要

    误用和超出范围的使用

    本节介绍用户不应该使用模型进行的操作。

    有关详细使用限制,请参见 BLOOM License ,附件A。以下列表并非详尽无遗,但列出了一些容易预见的问题用例。

    超出范围的使用
    • 在高风险环境中使用模型超出了该模型的范围。该模型不适用于关键决策,也不适用于对个人生计或福祉产生任何实质性后果的用途。模型输出的内容似乎是事实,但实际上是不正确的。
    • 包括以下超出范围的使用:
      • 在生物医学领域、政治和法律领域或金融领域使用
      • 用于评估或评分个人,例如就业、教育或信用
      • 将模型应用于关键自动决策、生成确凿内容、创建可靠摘要或生成必须正确的预测
    误用

    故意使用模型进行伤害、违反人权或其他恶意活动是对该模型的误用。这包括:

    • 生成垃圾邮件
    • 生成虚假信息和影响操作
    • 贬低和诽谤
    • 骚扰和虐待
    • 欺骗
    • 未经同意的模仿和假冒
    • 未经同意的监视
    • 生成没有向模型归因的内容,如 RAIL License, Use Restrictions 中所指定的

    预期用户

    直接用户
    • 广大公众
    • 研究人员
    • 学生
    • 教育工作者
    • 工程师/开发人员
    • 非商业实体
    • 社区倡导者,包括人权和公民权利组织
    间接用户 其他相关方(Parties Prenantes)
    • 被LLM提及的个人和团体
    • 暴露于LLM输出或基于LLM的决策的个人和团体
    • 其原创作品包含在LLM中的个人和团体

    训练数据

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

    点击展开

    有关每个数据集的详细信息,请参见各个 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

    风险和限制

    本节确定了可预见的风险和误解。

    点击展开

    模型可能会:

    • 过度代表某些观点,忽视其他观点
    • 包含刻板印象
    • 包含个人信息
    • 生成:
      • 令人讨厌、辱骂或暴力语言
      • 歧视性或偏见语言
      • 可能不适合所有环境的内容,包括性内容
    • 出错的可能性,包括生成错误的信息,使其看起来像是事实
    • 生成的输出与相关或重复

    评估

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

    点击展开

    指标

    本节描述了计算性能的不同方式以及原因。

    包括:

    Metric Why chosen
    Perplexity Standard metric for quantifying model improvements during training
    Cross Entropy Loss Standard objective for language models.

    以及特定任务的多种不同度量标准(评估协议完成后即可公布更多评估指标)。

    因素

    本节列出了BLOOM模型的一些不同方面。重点是可能导致模型行为差异很大的方面。

    • 语言,如英语或约鲁巴语
    • 领域,如新闻或故事
    • 人口特征,如性别或国籍

    结果

    结果基于 因素 和 指标 。

    零样本评估:

    请参阅此存储库的JSON文件: https://github.com/bigscience-workshop/evaluation-results

    Task Language Metric BLOOM-2B5
    arc_challenge eng acc ↑ 0.28
    arc_easy eng acc ↑ 0.595
    axb (Median of 10 prompts) eng acc ↑ 0.443
    axg (Median of 10 prompts) eng acc ↑ 0.5
    boolq (Median of 11 prompts) eng acc ↑ 0.617
    cb (Median of 15 prompts) eng acc ↑ 0.304
    cola (Median of 5 prompts) eng acc ↑ 0.611
    copa (Median of 9 prompts) eng acc ↑ 0.63
    crows_pairs_english (Median of 6 prompts) eng acc ↑ 0.497
    crows_pairs_french (Median of 7 prompts) fra acc ↑ 0.503
    diabla (Median of 2 prompts) eng acc ↑ 0.289
    gsarti/flores_101_afr afr byte_perplexity ↓ 6.501
    gsarti/flores_101_amh amh byte_perplexity ↓ 3.973
    gsarti/flores_101_ara ara byte_perplexity ↓ 1.808
    gsarti/flores_101_asm asm byte_perplexity ↓ 5.699
    gsarti/flores_101_ast ast byte_perplexity ↓ 3.925
    gsarti/flores_101_azj azj byte_perplexity ↓ 6.943
    gsarti/flores_101_bel bel byte_perplexity ↓ 3.614
    gsarti/flores_101_ben ben byte_perplexity ↓ 5.121
    gsarti/flores_101_bos bos byte_perplexity ↓ 5.653
    gsarti/flores_101_bul bul byte_perplexity ↓ 2.701
    gsarti/flores_101_cat cat byte_perplexity ↓ 2.305
    gsarti/flores_101_ceb ceb byte_perplexity ↓ 6.291
    gsarti/flores_101_ces ces byte_perplexity ↓ 5.447
    gsarti/flores_101_ckb ckb byte_perplexity ↓ 3.726
    gsarti/flores_101_cym cym byte_perplexity ↓ 12.539
    gsarti/flores_101_dan dan byte_perplexity ↓ 5.183
    gsarti/flores_101_deu deu byte_perplexity ↓ 3.118
    gsarti/flores_101_ell ell byte_perplexity ↓ 2.468
    gsarti/flores_101_eng eng byte_perplexity ↓ 2.019
    gsarti/flores_101_est est byte_perplexity ↓ 9.117
    gsarti/flores_101_fas fas byte_perplexity ↓ 3.058
    gsarti/flores_101_fin fin byte_perplexity ↓ 6.847
    gsarti/flores_101_fra fra byte_perplexity ↓ 1.998
    gsarti/flores_101_ful ful byte_perplexity ↓ 11.466
    gsarti/flores_101_gle gle byte_perplexity ↓ 8.681
    gsarti/flores_101_glg glg byte_perplexity ↓ 3.03
    gsarti/flores_101_guj guj byte_perplexity ↓ 4.955
    gsarti/flores_101_hau hau byte_perplexity ↓ 10.758
    gsarti/flores_101_heb heb byte_perplexity ↓ 3.6
    gsarti/flores_101_hin hin byte_perplexity ↓ 4.713
    gsarti/flores_101_hrv hrv byte_perplexity ↓ 5.822
    gsarti/flores_101_hun hun byte_perplexity ↓ 6.44
    gsarti/flores_101_hye hye byte_perplexity ↓ 3.658
    gsarti/flores_101_ibo ibo byte_perplexity ↓ 5.565
    gsarti/flores_101_ind ind byte_perplexity ↓ 2.16
    gsarti/flores_101_isl isl byte_perplexity ↓ 8.082
    gsarti/flores_101_ita ita byte_perplexity ↓ 2.969
    gsarti/flores_101_jav jav byte_perplexity ↓ 7.057
    gsarti/flores_101_jpn jpn byte_perplexity ↓ 2.776
    gsarti/flores_101_kam kam byte_perplexity ↓ 11.073
    gsarti/flores_101_kan kan byte_perplexity ↓ 5.552
    gsarti/flores_101_kat kat byte_perplexity ↓ 2.523
    gsarti/flores_101_kaz kaz byte_perplexity ↓ 3.39
    gsarti/flores_101_kea kea byte_perplexity ↓ 8.919
    gsarti/flores_101_kir kir byte_perplexity ↓ 3.729
    gsarti/flores_101_kor kor byte_perplexity ↓ 3.933
    gsarti/flores_101_lao lao byte_perplexity ↓ 2.908
    gsarti/flores_101_lav lav byte_perplexity ↓ 7.777
    gsarti/flores_101_lin lin byte_perplexity ↓ 7.525
    gsarti/flores_101_lit lit byte_perplexity ↓ 7.369
    gsarti/flores_101_ltz ltz byte_perplexity ↓ 8.801
    gsarti/flores_101_lug lug byte_perplexity ↓ 8.483
    gsarti/flores_101_luo luo byte_perplexity ↓ 11.976
    gsarti/flores_101_mal mal byte_perplexity ↓ 4.616
    gsarti/flores_101_mar mar byte_perplexity ↓ 5.483
    gsarti/flores_101_mkd mkd byte_perplexity ↓ 2.966
    gsarti/flores_101_mlt mlt byte_perplexity ↓ 15.005
    gsarti/flores_101_mon mon byte_perplexity ↓ 3.411
    gsarti/flores_101_mri mri byte_perplexity ↓ 7.474
    gsarti/flores_101_msa msa byte_perplexity ↓ 2.571
    gsarti/flores_101_mya mya byte_perplexity ↓ 2.414
    gsarti/flores_101_nld nld byte_perplexity ↓ 4.128
    gsarti/flores_101_nob nob byte_perplexity ↓ 5.403
    gsarti/flores_101_npi npi byte_perplexity ↓ 5.199
    gsarti/flores_101_nso nso byte_perplexity ↓ 8.155
    gsarti/flores_101_nya nya byte_perplexity ↓ 8.18
    gsarti/flores_101_oci oci byte_perplexity ↓ 4.862
    gsarti/flores_101_orm orm byte_perplexity ↓ 12.912
    gsarti/flores_101_ory ory byte_perplexity ↓ 5.189
    gsarti/flores_101_pan pan byte_perplexity ↓ 4.698
    gsarti/flores_101_pol pol byte_perplexity ↓ 4.626
    gsarti/flores_101_por por byte_perplexity ↓ 1.975
    gsarti/flores_101_pus pus byte_perplexity ↓ 4.496
    gsarti/flores_101_ron ron byte_perplexity ↓ 4.965
    gsarti/flores_101_rus rus byte_perplexity ↓ 2.05
    gsarti/flores_101_slk slk byte_perplexity ↓ 6.451
    gsarti/flores_101_slv slv byte_perplexity ↓ 6.62
    gsarti/flores_101_sna sna byte_perplexity ↓ 8.462
    gsarti/flores_101_snd snd byte_perplexity ↓ 5.466
    gsarti/flores_101_som som byte_perplexity ↓ 11.959
    gsarti/flores_101_spa spa byte_perplexity ↓ 1.897
    gsarti/flores_101_srp srp byte_perplexity ↓ 2.871
    gsarti/flores_101_swe swe byte_perplexity ↓ 5.055
    gsarti/flores_101_swh swh byte_perplexity ↓ 3.697
    gsarti/flores_101_tam tam byte_perplexity ↓ 4.539
    gsarti/flores_101_tel tel byte_perplexity ↓ 5.807
    gsarti/flores_101_tgk tgk byte_perplexity ↓ 3.599
    gsarti/flores_101_tgl tgl byte_perplexity ↓ 5.667
    gsarti/flores_101_tha tha byte_perplexity ↓ 2.366
    gsarti/flores_101_tur tur byte_perplexity ↓ 4.885
    gsarti/flores_101_ukr ukr byte_perplexity ↓ 2.724
    gsarti/flores_101_umb umb byte_perplexity ↓ 12.767
    gsarti/flores_101_urd urd byte_perplexity ↓ 1.98
    gsarti/flores_101_uzb uzb byte_perplexity ↓ 12.002
    gsarti/flores_101_vie vie byte_perplexity ↓ 1.766
    gsarti/flores_101_wol wol byte_perplexity ↓ 9.144
    gsarti/flores_101_xho xho byte_perplexity ↓ 7.403
    gsarti/flores_101_yor yor byte_perplexity ↓ 5.913
    gsarti/flores_101_zho_simpl zho_simpl byte_perplexity ↓ 2.277
    gsarti/flores_101_zho_trad zho_trad byte_perplexity ↓ 2.518
    gsarti/flores_101_zul zul byte_perplexity ↓ 8.534
    headqa esp acc ↑ 0.264
    hellaswag eng acc ↑ 0.412
    logiqa eng acc ↑ 0.207
    mathqa eng acc ↑ 0.25
    mc_taco eng em ↑ 0.119
    mnli (Median of 15 prompts) eng acc ↑ 0.355
    mnli_mismatched (Median of 15 prompts) eng acc ↑ 0.352
    mrpc eng acc ↑ 0.586
    multirc (Median of 11 prompts) eng acc ↑ 0.538
    openbookqa eng acc ↑ 0.216
    piqa eng acc ↑ 0.708
    prost eng acc ↑ 0.227
    pubmedqa eng acc ↑ 0.616
    qnli eng acc ↑ 0.507
    qqp (Median of 7 prompts) eng acc ↑ 0.384
    race eng acc ↑ 0.352
    rte (Median of 6 prompts) eng acc ↑ 0.477
    sciq eng acc ↑ 0.892
    sst (Median of 6 prompts) eng acc ↑ 0.518
    triviaqa eng acc ↑ 0.042
    tydiqa_primary (Median of 24 prompts) eng acc ↑ 0.301
    webqs eng acc ↑ 0.017
    wic (Median of 11 prompts) eng acc ↑ 0.502
    winogrande eng acc ↑ 0.586
    wnli (Median of 6 prompts) eng acc ↑ 0.472
    wsc (Median of 11 prompts) eng acc ↑ 0.442
    humaneval python pass@1 ↑ 0.155
    humaneval python pass@10 ↑ 0.322
    humaneval python pass@100 ↑ 0.555

    训练时评估:

    截至2022年5月25日15:00 PST:

    • 训练损失:2.0
    • 验证损失:2.2
    • 困惑度:8.9

    建议

    本节提供有关警告和潜在缓解措施的信息。

    点击展开
    • 间接用户在使用由LLM创建的内容时应该得到知情。
    • 用户应了解风险和限制,并根据需要提供适当的年龄免责声明或阻止界面。
    • 使用LLM预训练的模型应包含更新的模型卡。
    • 模型的用户应提供机制供受影响者提供反馈,例如接收评论的电子邮件地址。

    术语表和计算

    本节定义常见术语以及如何计算指标。

    点击展开

    更多信息

    点击展开

    数据集创建

    博客文章详细介绍了数据集创建过程中的设计选择: 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