🚀 BLOOMZ & mT0模型项目
BLOOMZ和mT0是一系列能够以零样本方式遵循多种语言人类指令的模型。通过在跨语言任务混合数据集上对预训练的多语言模型进行微调,这些模型能够在未见过的任务和语言上实现跨语言泛化。

📚 目录
- 模型概述
- 使用方法
- 局限性
- 训练详情
- 评估结果
- 引用信息
📋 模型概述
我们推出了BLOOMZ和mT0模型家族,这些模型能够以零样本的方式遵循几十种语言的人类指令。我们在跨语言任务混合数据集(xP3)上对BLOOM和mT5预训练的多语言模型进行微调,发现得到的模型能够在未见过的任务和语言上实现跨语言泛化。
📦 安装指南
文档中未提及具体安装步骤,可参考使用部分代码中的依赖安装命令:
- CPU环境:
pip install -q transformers
- GPU环境:
pip install -q transformers accelerate
- 8bit GPU环境:
pip install -q transformers accelerate bitsandbytes
💻 使用示例
预期用途
建议使用该模型执行以自然语言表达的任务。例如,给定提示“Translate to English: Je t’aime.”,模型很可能会回答“I love you.”。以下是论文中的一些提示示例:
- 一个传奇的开端,一个不灭的神话,这不仅仅是一部电影,而是作为一个走进新时代的标签,永远彪炳史册。你认为这句话的立场是赞扬、中立还是批评?
- Suggest at least five related search terms to "Mạng neural nhân tạo".
- Write a fairy tale about a troll saving a princess from a dangerous dragon. The fairy tale is a masterpiece that has achieved praise worldwide and its moral is "Heroes Come in All Shapes and Sizes". Story (in Spanish):
- Explain in a sentence in Telugu what is backpropagation in neural networks.
欢迎在社区板块分享你的生成结果!
基础用法
CPU环境
点击展开
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer
checkpoint = "bigscience/mt0-large"
tokenizer = AutoTokenizer.from_pretrained(checkpoint)
model = AutoModelForSeq2SeqLM.from_pretrained(checkpoint)
inputs = tokenizer.encode("Translate to English: Je t’aime.", return_tensors="pt")
outputs = model.generate(inputs)
print(tokenizer.decode(outputs[0]))
GPU环境
点击展开
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer
checkpoint = "bigscience/mt0-large"
tokenizer = AutoTokenizer.from_pretrained(checkpoint)
model = AutoModelForSeq2SeqLM.from_pretrained(checkpoint, torch_dtype="auto", device_map="auto")
inputs = tokenizer.encode("Translate to English: Je t’aime.", return_tensors="pt").to("cuda")
outputs = model.generate(inputs)
print(tokenizer.decode(outputs[0]))
8bit GPU环境
点击展开
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer
checkpoint = "bigscience/mt0-large"
tokenizer = AutoTokenizer.from_pretrained(checkpoint)
model = AutoModelForSeq2SeqLM.from_pretrained(checkpoint, device_map="auto", load_in_8bit=True)
inputs = tokenizer.encode("Translate to English: Je t’aime.", return_tensors="pt").to("cuda")
outputs = model.generate(inputs)
print(tokenizer.decode(outputs[0]))
🔧 局限性
提示工程:模型性能可能会因提示的不同而有所差异。对于BLOOMZ模型,建议明确告知输入的结束位置,以避免模型继续生成内容。例如,提示“Translate to English: Je t'aime” 若没有句点结尾,模型可能会继续生成法语句子。更好的提示示例有 “Translate to English: Je t'aime.”、“Translate to English: Je t'aime. Translation:”、“What is "Je t'aime." in English?” ,这些提示能让模型明确何时开始回答。此外,建议为模型提供尽可能多的上下文信息。例如,若希望模型用泰卢固语回答,可告知模型,如 “Explain in a sentence in Telugu what is backpropagation in neural networks.”。
🔧 训练详情
模型
- 架构:与 mt5-large 相同,也可参考
config.json
文件。
- 微调步数:25000
- 微调令牌数:46.2亿
- 精度:bfloat16
硬件
软件
🔧 评估结果
关于未见过任务的零样本结果,可参考论文 Crosslingual Generalization through Multitask Finetuning 中的表7以及 bigscience/evaluation-results。侧边栏展示了每个数据集配置下最佳提示的零样本性能。
📄 许可证
本项目使用 apache - 2.0
许可证。
📄 引用信息
@article{muennighoff2022crosslingual,
title={Crosslingual generalization through multitask finetuning},
author={Muennighoff, Niklas and Wang, Thomas and Sutawika, Lintang and Roberts, Adam and Biderman, Stella and Scao, Teven Le and Bari, M Saiful and Shen, Sheng and Yong, Zheng-Xin and Schoelkopf, Hailey and others},
journal={arXiv preprint arXiv:2211.01786},
year={2022}
}