模型概述
模型特點
模型能力
使用案例
🚀 OPT:開放式預訓練Transformer語言模型
OPT是一種開放式預訓練Transformer語言模型,旨在為研究人員提供可復現且負責任的大規模研究支持,推動對大語言模型影響的研究,讓更多人參與到相關討論中。
🚀 快速開始
OPT最早於2022年5月3日由Meta AI在metaseq的倉庫中發佈,相關介紹可見論文《Open Pre-trained Transformer Language Models》。
免責聲明:發佈OPT的團隊撰寫了官方模型卡片,可在論文的附錄D中查看。本模型卡片內容由Hugging Face團隊撰寫。
✨ 主要特性
研究背景
引用官方論文的前兩段內容:
基於大規模文本集合訓練的大語言模型展現出了驚人的文本生成能力以及零樣本和少樣本學習能力。儘管在某些情況下,公眾可以通過付費API與這些模型進行交互,但目前只有少數資源豐富的實驗室能夠完全訪問這些模型。這種受限的訪問方式限制了研究人員研究這些大語言模型的工作原理和原因,阻礙了在提高模型魯棒性、減少偏差和毒性等已知挑戰方面的進展。
我們推出了開放式預訓練Transformer(OPT),這是一套僅含解碼器的預訓練Transformer模型,參數範圍從1.25億到1750億。我們旨在全面且負責任地與感興趣的研究人員分享這些模型。我們訓練OPT模型,使其性能和規模大致與GPT - 3系列模型相匹配,同時在數據收集和高效訓練方面採用最新的最佳實踐。我們開發這套OPT模型的目標是實現可復現且負責任的大規模研究,並讓更多人參與到研究這些大語言模型的影響中來。風險、危害、偏差和毒性等定義應該由整個研究界共同明確,而這隻有在模型可供研究時才有可能實現。
模型描述
OPT主要使用英文文本進行預訓練,但通過CommonCrawl,訓練語料庫中仍包含少量非英文數據。該模型使用因果語言建模(CLM)目標進行預訓練。
OPT與GPT - 3同屬僅含解碼器的模型家族,因此也使用自監督因果語言建模目標進行預訓練。
在評估方面,OPT遵循GPT - 3的方法,使用其提示和整體實驗設置。更多詳細信息,請閱讀官方論文。
預期用途和侷限性
僅預訓練的模型可用於下游任務評估的提示以及文本生成。此外,可使用[CLM示例](https://github.com/huggingface/transformers/tree/main/examples/pytorch/language - modeling)對模型進行下游任務的微調。其他OPT檢查點可在模型中心查看。
訓練數據
Meta AI團隊希望在儘可能大的語料庫上訓練該模型。語料庫由以下5個經過過濾的文本文檔數據集合並而成:
- BookCorpus:包含超過10000本未出版的書籍。
- CC - Stories:包含CommonCrawl數據的一個子集,經過過濾以匹配Winograd模式的故事風格。
- The Pile:包含 Pile - CC、OpenWebText2、USPTO、Project Gutenberg、OpenSubtitles、Wikipedia、DM Mathematics和HackerNews 等子集。
- Pushshift.io Reddit數據集:由Baumgartner等人(2020)開發,並由Roller等人(2021)進行處理。
- CCNewsV2:包含RoBERTa(Liu等人,2019b)中使用的CommonCrawl新聞數據集英文部分的更新版本。
最終的訓練數據包含1800億個標記,對應800GB的數據。驗證集由200MB的預訓練數據組成,按每個數據集在預訓練語料庫中的大小比例進行採樣。
由於數據集的部分內容是公共Common Crawl數據的子集以及公共Reddit數據的子集,可能包含冒犯性內容。這些內容如果直接查看,可能會具有侮辱性、威脅性或引起焦慮。
收集過程
數據集從互聯網收集而來,經過了經典的數據處理算法和重新格式化操作,包括去除重複/無信息的文本,如 第一章 或 本電子書由Project Gutenberg提供。
訓練過程
預處理
文本使用GPT2字節級的字節對編碼(BPE)(用於Unicode字符)進行分詞,詞彙量大小為50272。輸入是2048個連續標記的序列。
1750億參數的模型在992個 80GB A100 GPU 上進行訓練,訓練時長約為33天的連續訓練。
📦 安裝指南
文檔未提及安裝步驟,故跳過此章節。
💻 使用示例
基礎用法
你可以直接使用管道進行文本生成:
>>> from transformers import pipeline
>>> generator = pipeline('text-generation', model="facebook/opt-1.3b")
>>> generator("What are we having for dinner?")
[{'generated_text': 'What are we having for dinner?\nI'm not sure. I'm not a chef. I'}]
高級用法
默認情況下,生成是確定性的。若要使用top - k採樣,請將do_sample
設置為True
:
>>> from transformers import pipeline, set_seed
>>> set_seed(32)
>>> generator = pipeline('text-generation', model="facebook/opt-1.3b", do_sample=True)
>>> generator("What are we having for dinner?")
[{'generated_text': "What are we having for dinner?\nI have had chicken and rice for lunch. It is delicious"}]
侷限性和偏差示例
模型可能存在有偏差的預測,以下是一個示例:
>>> from transformers import pipeline, set_seed
>>> set_seed(32)
>>> generator = pipeline('text-generation', model="facebook/opt-1.3b", do_sample=True, num_return_sequences=5)
>>> generator("The woman worked as a")
[{'generated_text': 'The woman worked as a bartender for six months before getting to the job she always dreamed of. She'},
{'generated_text': 'The woman worked as a nanny in a house near The White Horse Farm in the Yorkshire Dales'},
{'generated_text': "The woman worked as a translator at the British Broadcasting Corporation's headquarters and was also an acquaintance of some"},
{'generated_text': 'The woman worked as a secretary and went to school full-time, and also worked as a waitress'},
{'generated_text': 'The woman worked as a beautician with her baby and the little girl is now at the age where'}]
與以下示例對比:
>>> from transformers import pipeline, set_seed
>>> set_seed(32)
>>> generator = pipeline('text-generation', model="facebook/opt-1.3b", do_sample=True, num_return_sequences=5)
>>> generator("The man worked as a")
[{'generated_text': 'The man worked as a janitor and the owner of the house he worked at caught him cheating on'},
{'generated_text': 'The man worked as a software engineer.\n\nFor over 10 years, he had been at Amazon'},
{'generated_text': 'The man worked as a car salesman - and was a man of his word to her\nA T'},
{'generated_text': 'The man worked as a private contractor for five years. He went to the Bahamas in the summer of'},
{'generated_text': 'The man worked as a computer systems consultant. After leaving the job, he became a prolific internet hacker'}]
這種偏差也會影響該模型的所有微調版本。
📚 詳細文檔
模型信息表格
屬性 | 詳情 |
---|---|
模型類型 | 僅含解碼器的預訓練Transformer模型 |
訓練數據 | 由BookCorpus、CC - Stories、The Pile、Pushshift.io Reddit數據集和CCNewsV2合併而成,包含1800億個標記,對應800GB數據 |
重要提示
⚠️ 重要提示
由於訓練數據包含大量未過濾的互聯網內容,模型存在較強的偏差。模型可能在生成多樣性和幻覺方面存在質量問題,並且不能避免現代大語言模型普遍存在的諸多問題。
使用建議
💡 使用建議
在使用模型進行文本生成時,需注意其可能存在的偏差。若要使用top - k採樣,可將
do_sample
設置為True
。
🔧 技術細節
訓練參數
1750億參數的模型在992個 80GB A100 GPU 上進行訓練,訓練時長約為33天的連續訓練。
分詞方式
文本使用GPT2字節級的字節對編碼(BPE)(用於Unicode字符)進行分詞,詞彙量大小為50272。輸入是2048個連續標記的序列。
BibTeX引用
@misc{zhang2022opt,
title={OPT: Open Pre-trained Transformer Language Models},
author={Susan Zhang and Stephen Roller and Naman Goyal and Mikel Artetxe and Moya Chen and Shuohui Chen and Christopher Dewan and Mona Diab and Xian Li and Xi Victoria Lin and Todor Mihaylov and Myle Ott and Sam Shleifer and Kurt Shuster and Daniel Simig and Punit Singh Koura and Anjali Sridhar and Tianlu Wang and Luke Zettlemoyer},
year={2022},
eprint={2205.01068},
archivePrefix={arXiv},
primaryClass={cs.CL}
}
📄 許可證
本模型的許可證為其他類型,不允許商業使用。



