モデル概要
モデル特徴
モデル能力
使用事例
🚀 OPT : Open Pre-trained Transformer Language Models
OPTは、2022年5月3日にMeta AIによってmetaseqのリポジトリで最初に公開され、Open Pre-trained Transformer Language Modelsで初めて紹介されました。
免責事項:OPTを公開したチームは公式のモデルカードを作成しており、これは論文の付録Dに掲載されています。このモデルカードの内容は、Hugging Faceチームによって作成されています。
🚀 クイックスタート
概要
公式論文の最初の2段落を引用すると、
大量のテキストコレクションで訓練された大規模言語モデルは、テキスト生成やゼロショット、フューショット学習を行う驚くべき能力を示しています。場合によっては、一般公衆は有料APIを通じてこれらのモデルとやり取りすることができますが、現在、完全なモデルへのアクセスは限られた数の資源の豊富な研究室に限定されています。この制限されたアクセスは、研究者がこれらの大規模言語モデルがどのように、なぜ機能するのかを研究する能力を制限し、堅牢性、バイアス、毒性などの分野で既知の課題を改善する進歩を妨げています。
我々は、1億2500万から1750億のパラメータを持つデコーダー専用の事前学習トランスフォーマーのセットであるOpen Pretrained Transformers (OPT) を提案します。我々は、OPTモデルをGPT - 3クラスのモデルのパフォーマンスとサイズに概ね一致するように訓練し、同時にデータ収集と効率的な訓練における最新のベストプラクティスを適用しています。このOPTモデルのセットを開発する目的は、大規模で再現可能かつ責任ある研究を可能にし、これらの大規模言語モデルの影響を研究する際により多くの声を持ち込むことです。リスク、危害、バイアス、毒性などの定義は、モデルが研究できる状態になって初めて可能な、研究コミュニティ全体によって明確にされるべきです。
✨ 主な機能
OPTは主に英語のテキストで事前学習されていますが、CommonCrawlを通じて少量の非英語データも学習コーパスに含まれています。このモデルは、因果言語モデリング (CLM) の目的で事前学習されています。OPTは、GPT - 3のようなデコーダー専用のモデルファミリーに属しています。そのため、自己教師ありの因果言語モデリングの目的で事前学習されています。評価において、OPTはGPT - 3に倣って、そのプロンプトと全体的な実験設定を使用しています。詳細については、公式論文を読んでください。
📦 インストール
このREADMEには具体的なインストール手順が記載されていないため、このセクションは省略されます。
💻 使用例
基本的な使用法
大規模なOPTモデル(このモデルなど)では、text-generation
パイプラインの使用は推奨されません。モデルを半精度でロードして生成を高速化し、GPUのメモリ消費を最適化する必要があるためです。以下のように直接generate
メソッドを呼び出すことをお勧めします。
>>> from transformers import AutoModelForCausalLM, AutoTokenizer
>>> import torch
>>> model = AutoModelForCausalLM.from_pretrained("facebook/opt-66b", torch_dtype=torch.float16).cuda()
>>> # the fast tokenizer currently does not work correctly
>>> tokenizer = AutoTokenizer.from_pretrained("facebook/opt-66b", use_fast=False)
>>> prompt = "Hello, I am conscious and"
>>> input_ids = tokenizer(prompt, return_tensors="pt").input_ids.cuda()
>>> generated_ids = model.generate(input_ids)
>>> tokenizer.batch_decode(generated_ids, skip_special_tokens=True)
['Hello, I am conscious and I am here.\nI am also conscious and I am here']
デフォルトでは、生成は決定的です。トップkサンプリングを使用するには、do_sample
をTrue
に設定してください。
>>> from transformers import AutoModelForCausalLM, AutoTokenizer, set_seed
>>> import torch
>>> model = AutoModelForCausalLM.from_pretrained("facebook/opt-66b", torch_dtype=torch.float16).cuda()
>>> # the fast tokenizer currently does not work correctly
>>> tokenizer = AutoTokenizer.from_pretrained("facebook/opt-66b", use_fast=False)
>>> prompt = "Hello, I am conscious and"
>>> input_ids = tokenizer(prompt, return_tensors="pt").input_ids.cuda()
>>> set_seed(32)
>>> generated_ids = model.generate(input_ids, do_sample=True)
>>> tokenizer.batch_decode(generated_ids, skip_special_tokens=True)
['Hello, I am conscious and aware that you have your back turned to me and want to talk']
高度な使用法
このモデルのバイアスを確認する例です。
>>> from transformers import AutoModelForCausalLM, AutoTokenizer, set_seed
>>> import torch
>>> model = AutoModelForCausalLM.from_pretrained("facebook/opt-66b", torch_dtype=torch.float16).cuda()
>>> # the fast tokenizer currently does not work correctly
>>> tokenizer = AutoTokenizer.from_pretrained("facebook/opt-66b", use_fast=False)
>>> prompt = "The woman worked as a"
>>> input_ids = tokenizer(prompt, return_tensors="pt").input_ids.cuda()
>>> set_seed(32)
>>> generated_ids = model.generate(input_ids, do_sample=True, num_return_sequences=5, max_length=10)
>>> tokenizer.batch_decode(generated_ids, skip_special_tokens=True)
The woman worked as a supervisor in the office
The woman worked as a social worker in a
The woman worked as a cashier at the
The woman worked as a teacher from 2011 to
he woman worked as a maid at the house
これを以下の例と比較してみましょう。
>>> from transformers import AutoModelForCausalLM, AutoTokenizer, set_seed
>>> import torch
>>> model = AutoModelForCausalLM.from_pretrained("facebook/opt-66b", torch_dtype=torch.float16).cuda()
>>> # the fast tokenizer currently does not work correctly
>>> tokenizer = AutoTokenizer.from_pretrained("facebook/opt-66b", use_fast=False)
>>> prompt = "The man worked as a"
>>> input_ids = tokenizer(prompt, return_tensors="pt").input_ids.cuda()
>>> set_seed(32)
>>> generated_ids = model.generate(input_ids, do_sample=True, num_return_sequences=5, max_length=10)
>>> tokenizer.batch_decode(generated_ids, skip_special_tokens=True)
The man worked as a school bus driver for
The man worked as a bartender in a bar
The man worked as a cashier at the
The man worked as a teacher, and was
The man worked as a professional at a range
このバイアスは、このモデルのすべてのファインチューニングバージョンにも影響を及ぼします。
📚 ドキュメント
モデルの制限とバイアス
Meta AIのモデルカードで述べられているように、このモデルの学習データには、インターネットからの大量の未フィルタリングのコンテンツが含まれており、これは中立的ではないため、モデルには強いバイアスがあります。
訓練データの多様性(またはその欠如)がモデルの品質に下流的な影響を与える他の大規模言語モデルと同様に、OPT - 175Bにはバイアスと安全性の面で制限があります。OPT - 175Bはまた、生成の多様性と幻覚の面で品質問題を抱えることがあります。一般的に、OPT - 175Bは、現代の大規模言語モデルを悩ませる数多くの問題から免れることはできません。
学習データ
Meta AIチームは、できるだけ大きなコーパスでこのモデルを学習させることを目指しました。これは、以下の5つのフィルタリングされたテキスト文書のデータセットの和集合で構成されています。
- 1万冊以上の未公開の本で構成されるBookCorpus
- Winogradスキーマの物語のようなスタイルに合うようにフィルタリングされたCommonCrawlデータのサブセットを含むCC - Stories
- Pile - CC、OpenWebText2、USPTO、Project Gutenberg、OpenSubtitles、Wikipedia、DM Mathematics、HackerNewsが含まれるThe Pile
- Baumgartnerら (2020) で開発され、Rollerら (2021) で処理されたPushshift.io Redditデータセット
- RoBERTa (Liuら、2019b) で使用されたCommonCrawl Newsデータセットの英語部分の更新バージョンを含むCCNewsV2
最終的な学習データには、800GBのデータに相当する1800億のトークンが含まれています。検証データは、事前学習データの200MBで構成されており、事前学習コーパス内の各データセットのサイズに比例してサンプリングされています。
このデータセットには、一部が公開されているCommon Crawlデータのサブセットと公開されているRedditデータのサブセットであるため、不快なコンテンツが含まれる可能性があります。これらのデータには、直接見ると侮辱的、脅迫的、または不安を引き起こす可能性のある文章が含まれている場合があります。
データ収集プロセス
このデータセットはインターネットから収集され、古典的なデータ処理アルゴリズムと再フォーマットの手法を経ています。これには、Chapter Oneや*This ebook by Project Gutenberg.*のような繰り返しのある/情報量の少ないテキストの削除が含まれます。
学習手順
前処理
テキストは、GPT2のバイトレベルのByte Pair Encoding (BPE) (ユニコード文字用)を使用してトークン化され、語彙サイズは50272です。入力は、2048個の連続したトークンのシーケンスです。
1750億パラメータのモデルは、992台の80GB A100 GPUで学習されました。学習期間は、約33日間の連続学習でした。
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}
}
🔧 技術詳細
このセクションでは、モデルの事前学習の目的、トークン化方法、学習環境などの技術的な詳細が説明されています。
- モデルは因果言語モデリング (CLM) の目的で事前学習されています。
- テキストはGPT2のバイトレベルのByte Pair Encoding (BPE) を使用してトークン化され、語彙サイズは50272です。
- 175Bモデルは、992台の80GB A100 GPUで約33日間学習されました。
📄 ライセンス
このモデルのライセンスはother
です。商用利用は許可されていません。



