BLOOM
BLOOM,HuggingFace推出的大型语言模型(LLM)
BLOOM官网,HuggingFace推出的大型语言模型(LLM)
什么是BLOOM?
人人都能用的多语种大模型来了!支持59种语言,参数1760亿,1000名科学家联合发起! 一直以来,很多大模型都由造它们出来的大型私营科技公司垄断着。比如GPT-3等,对于普通人来说,再香也只能眼巴巴看着。不过现在,为了给你解馋,由近1000名科学家联合发起的一个志愿项目,耗时一年多炼出了一个号称和GPT-3一样强大的语言模型。它的名字叫BLOOM,参数1760亿,不光支持英文或者中文,连西班牙语、法语等59种语言都支持,是目前最大的多语言开源语言模型。是的,从现在起,从代码到数据集,BLOOM全部对外开放,所有人都可使用。
BLOOM官网: https://huggingface.co/bigscience/bloom
BLOOM参考文档:
https://huggingface.co/docs/transformers/model_doc/bloom
动用法国超算、花费384块A100
BLOOM是一个BigScience项目,去年5月启动,由Hugging Face主导,收到了700万美元的公共捐款。共有来自全球60个国家、超过250个机构,以及超过1000名研究人员参与其中,其中包括以个人名义参加的Meta、谷歌等大厂员工。它的训练在法国超级计算机Jean Zay上进行,共花费了384块A100 GPU,其中每块有80 GB内存,训练吞吐量约150 TFLOP(该超算由低碳的核能提供动力,释放的热量还用来给学校供暖)。
BLOOM优势
然而,直到达到102%的时候,BLOOM才正式停止训练。在经过耗时117天的训练后,BLOOM在预定计划时间内顺利完成。
最终,BLOOM具备以下特点:
- 参数数量达到了1760亿,比GPT-3还多10亿。
- 模型包含70层,每层具有112个注意力头。
- Token序列长度为2048。
- 采用了GeLU激活函数。
- 使用了总计3416亿条token(1.5TB文本数据)的数据集进行训练。
- 支持13种编程语言和46种自然语言。
值得一提的是,对于许多语言而言,如法语、西班牙语和阿拉伯语等,这是首次拥有自己的开源模型(尽管目前尚不支持日语,一些网友已经发现了这一点)。
此外,为了尽量减少生成结果中的偏见,参与项目的人员还经过了一轮人工过滤,对抓取到的数据进行了筛选。
目前,BLOOM的训练对硬件设备有一定要求:
为了保证最佳效果,最好配备8块80GB的A100显卡或16块40GB的A100显卡。
这意味着只有规模稍大的团队才能承担这样的训练需求。
当然,也可以选择在云平台上进行训练,每小时最高费用为40美元。
最后,BLOOM表示将降低使用门槛,并计划开发一个分布式系统,允许实验室之间共享模型。
BLOOM将成为一个不断发展的模型家族,而非一劳永逸的项目。
BLOOM模型已通过 BigScience Workshop 提出了各种版本。BigScience 受到其他开放科学计划的启发,在这些计划中,研究人员汇集了他们的时间和资源,共同实现更高的影响。 BLOOM 的架构本质上类似于 GPT3(用于下一个令牌预测的自回归模型),但已经在 46 种不同的语言和 13 种编程语言上进行了训练。 模型的几个较小版本已在同一数据集上进行了训练。BLOOM 有以下版本:
- 绽放-560m
- 绽放-1B1
- 布鲁姆-1B7
- 布鲁姆-3B
- 布鲁姆-7B1
- 绽放 (176B 参数)
资源
官方拥抱面孔和社区(由 表示)🌎资源列表,可帮助您开始使用 BLOOM。如果您有兴趣提交要包含在此处的资源,请随时打开拉取请求,我们将对其进行审核!理想情况下,资源应演示新内容,而不是复制现有资源。
- BloomForCausalLM 由此 因果语言建模示例脚本 和 笔记本 支持。
另请参阅:
- 因果语言建模任务指南
- 文本分类任务指南
- 令牌分类任务指南
- 问答任务指南
⚡️ 推理
- 关于 优化故事的博客:绽放推理 。
- 一篇关于 DeepSpeed和Accelerate的令人难以置信的快速BLOOM推理的 博客。
⚙️ 训练
- 关于 BLOOM 培训背后的技术的 博客。
布隆配置
类 变压器。 布隆配置
< 来源 >
( vocab_size = 250880 hidden_size = 64 n_layer = 2 n_head = 8 layer_norm_epsilon = 1e-05 initializer_range = 0.0 = 0.02 use_cache = 真 bos_token_id = 1 eos_token_id = 2 apply_residual_connection_post_layernorm = 假 hidden_dropout = 0.0