🚀 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}
}