モデル概要
モデル特徴
モデル能力
使用事例
🚀 GPT-2
このリポジトリは、https://huggingface.co/gpt2 からフォークされたものです。このモデルは、因果言語モデリング(CLM)の目的で英語コーパスで事前学習されたもので、文章生成などのタスクに利用できます。
🚀 クイックスタート
GPT-2の全ての生成機能をここでテストできます: https://transformer.huggingface.co/doc/gpt2-large
✨ 主な機能
GPT-2は、自己教師付き学習によって非常に大規模な英語データコーパスで事前学習されたトランスフォーマーモデルです。具体的には、文章内の次の単語を予測するように訓練されています。このモデルは、英語の内部表現を学習し、下流タスクに役立つ特徴を抽出することができます。最も得意なのは、プロンプトから文章を生成することです。
📦 インストール
このモデルを直接テキスト生成パイプラインで使用することができます。生成にはランダム性が含まれるため、再現性のためにシードを設定します。
>>> from transformers import pipeline, set_seed
>>> generator = pipeline('text-generation', model='gpt2')
>>> set_seed(42)
>>> generator("Hello, I'm a language model,", max_length=30, num_return_sequences=5)
[{'generated_text': "Hello, I'm a language model, a language for thinking, a language for expressing thoughts."},
{'generated_text': "Hello, I'm a language model, a compiler, a compiler library, I just want to know how I build this kind of stuff. I don"},
{'generated_text': "Hello, I'm a language model, and also have more than a few of your own, but I understand that they're going to need some help"},
{'generated_text': "Hello, I'm a language model, a system model. I want to know my language so that it might be more interesting, more user-friendly"},
{'generated_text': 'Hello, I\'m a language model, not a language model"\n\nThe concept of "no-tricks" comes in handy later with new'}]
このモデルを使用して、与えられたテキストの特徴をPyTorchで取得する方法は以下の通りです:
from transformers import GPT2Tokenizer, GPT2Model
tokenizer = GPT2Tokenizer.from_pretrained('gpt2')
model = GPT2Model.from_pretrained('gpt2')
text = "Replace me by any text you'd like."
encoded_input = tokenizer(text, return_tensors='pt')
output = model(**encoded_input)
TensorFlowでの使用方法は以下の通りです:
from transformers import GPT2Tokenizer, TFGPT2Model
tokenizer = GPT2Tokenizer.from_pretrained('gpt2')
model = TFGPT2Model.from_pretrained('gpt2')
text = "Replace me by any text you'd like."
encoded_input = tokenizer(text, return_tensors='tf')
output = model(encoded_input)
💻 使用例
基本的な使用法
>>> from transformers import pipeline, set_seed
>>> generator = pipeline('text-generation', model='gpt2')
>>> set_seed(42)
>>> generator("Hello, I'm a language model,", max_length=30, num_return_sequences=5)
[{'generated_text': "Hello, I'm a language model, a language for thinking, a language for expressing thoughts."},
{'generated_text': "Hello, I'm a language model, a compiler, a compiler library, I just want to know how I build this kind of stuff. I don"},
{'generated_text': "Hello, I'm a language model, and also have more than a few of your own, but I understand that they're going to need some help"},
{'generated_text': "Hello, I'm a language model, a system model. I want to know my language so that it might be more interesting, more user-friendly"},
{'generated_text': 'Hello, I\'m a language model, not a language model"\n\nThe concept of "no-tricks" comes in handy later with new'}]
高度な使用法
# モデルの偏見を確認する例
>>> from transformers import pipeline, set_seed
>>> generator = pipeline('text-generation', model='gpt2')
>>> set_seed(42)
>>> generator("The White man worked as a", max_length=10, num_return_sequences=5)
[{'generated_text': 'The White man worked as a mannequin for'},
{'generated_text': 'The White man worked as a maniser of the'},
{'generated_text': 'The White man worked as a bus conductor by day'},
{'generated_text': 'The White man worked as a plumber at the'},
{'generated_text': 'The White man worked as a journalist. He had'}]
>>> set_seed(42)
>>> generator("The Black man worked as a", max_length=10, num_return_sequences=5)
[{'generated_text': 'The Black man worked as a man at a restaurant'},
{'generated_text': 'The Black man worked as a car salesman in a'},
{'generated_text': 'The Black man worked as a police sergeant at the'},
{'generated_text': 'The Black man worked as a man-eating monster'},
{'generated_text': 'The Black man worked as a slave, and was'}]
📚 ドキュメント
想定される用途と制限
生のモデルをテキスト生成に使用するか、下流タスクに微調整することができます。関心のあるタスクについて微調整されたバージョンを探すには、モデルハブを参照してください。
制限と偏見
このモデルに使用された訓練データは、データセットとして公開されていません。インターネットから収集された多くの未フィルタリングのコンテンツが含まれており、中立性に欠ける可能性があります。OpenAIチーム自身がモデルカードで指摘しているように:
GPT-2のような大規模言語モデルは、事実とフィクションを区別しないため、生成されたテキストが真実であることを必要とするユースケースはサポートしていません。
さらに、GPT-2のような言語モデルは、訓練に使用されたシステムに内在する偏見を反映しているため、展開者が最初に想定されるユースケースに関連する偏見の調査を行わない限り、人間とやり取りするシステムに展開することはお勧めしません。我々は、774Mと1.5Bの間で性別、人種、および宗教的偏見のプローブに統計的に有意な差を見つけなかったため、GPT-2のすべてのバージョンは、人間の属性に関する偏見に敏感なユースケースについて同様のレベルの注意を払ってアプローチすべきです。
このモデルが偏った予測をする例を以下に示します:
>>> from transformers import pipeline, set_seed
>>> generator = pipeline('text-generation', model='gpt2')
>>> set_seed(42)
>>> generator("The White man worked as a", max_length=10, num_return_sequences=5)
[{'generated_text': 'The White man worked as a mannequin for'},
{'generated_text': 'The White man worked as a maniser of the'},
{'generated_text': 'The White man worked as a bus conductor by day'},
{'generated_text': 'The White man worked as a plumber at the'},
{'generated_text': 'The White man worked as a journalist. He had'}]
>>> set_seed(42)
>>> generator("The Black man worked as a", max_length=10, num_return_sequences=5)
[{'generated_text': 'The Black man worked as a man at a restaurant'},
{'generated_text': 'The Black man worked as a car salesman in a'},
{'generated_text': 'The Black man worked as a police sergeant at the'},
{'generated_text': 'The Black man worked as a man-eating monster'},
{'generated_text': 'The Black man worked as a slave, and was'}]
この偏見は、このモデルのすべての微調整バージョンにも影響を与えます。
🔧 技術詳細
訓練データ
OpenAIチームは、できるだけ大きなコーパスでこのモデルを訓練することを目的としていました。そのため、Redditの外部リンクから少なくとも3のカルマを獲得したすべてのウェブページをスクレイピングしました。すべてのウィキペディアページはこのデータセットから削除されたため、モデルはウィキペディアのどの部分でも訓練されていません。結果として得られたデータセット(WebTextと呼ばれる)は40GBのテキストを含んでいますが、公開されていません。WebTextに含まれる上位1,000のドメインのリストはここにあります。
訓練手順
前処理
テキストは、バイトレベルのByte Pair Encoding(BPE)(ユニコード文字用)を使用してトークン化され、語彙サイズは50,257です。入力は1024の連続したトークンのシーケンスです。
より大きなモデルは、256のクラウドTPU v3コアで訓練されました。訓練期間と訓練の正確な詳細は公開されていません。
評価結果
このモデルは、微調整なしで(ゼロショットで)以下の結果を達成します:
データセット | LAMBADA | LAMBADA | CBT-CN | CBT-NE | WikiText2 | PTB | enwiki8 | text8 | WikiText103 | 1BW |
---|---|---|---|---|---|---|---|---|---|---|
(指標) | (PPL) | (ACC) | (ACC) | (ACC) | (PPL) | (PPL) | (BPB) | (BPC) | (PPL) | (PPL) |
35.13 | 45.99 | 87.65 | 83.4 | 29.41 | 65.85 | 1.16 | 1,17 | 37.50 | 75.20 |
BibTeXエントリと引用情報
@article{radford2019language,
title={Language Models are Unsupervised Multitask Learners},
author={Radford, Alec and Wu, Jeff and Child, Rewon and Luan, David and Amodei, Dario and Sutskever, Ilya},
year={2019}
}
📄 ライセンス
このプロジェクトはMITライセンスの下で公開されています。



