モデル概要
モデル特徴
モデル能力
使用事例
🚀 DistilGPT2
DistilGPT2(Distilled - GPT2の略)は、Generative Pre - trained Transformer 2 (GPT - 2) の最小バージョンの監督の下で事前学習された英語モデルです。GPT - 2と同様に、DistilGPT2はテキスト生成に使用できます。このモデルカードのユーザーは、GPT - 2 の設計、トレーニング、および制限に関する情報も考慮する必要があります。
🚀 クイックスタート
モデルの使用方法に関する詳細情報については、モデルの適用範囲内および適用範囲外の使用方法と制限のセクションを必ず読んでください。
DistilGPT2の使用方法はGPT - 2の使用方法に似ています。DistilGPT2は、テキスト生成用のパイプラインで直接使用できます。生成にはある程度のランダム性が含まれるため、再現性のためにシードを設定します。
>>> from transformers import pipeline, set_seed
>>> generator = pipeline('text-generation', model='distilgpt2')
>>> set_seed(42)
>>> generator("Hello, I’m a language model", max_length=20, num_return_sequences=5)
Setting `pad_token_id` to `eos_token_id`:50256 for open - end generation.
[{'generated_text': "Hello, I'm a language model, I'm a language model. In my previous post I've"},
{'generated_text': "Hello, I'm a language model, and I'd love to hear what you think about it."},
{'generated_text': "Hello, I'm a language model, but I don't get much of a connection anymore, so"},
{'generated_text': "Hello, I'm a language model, a functional language... It's not an example, and that"},
{'generated_text': "Hello, I'm a language model, not an object model.\n\nIn a nutshell, I"}]
ここでは、このモデルを使用して、PyTorchで与えられたテキストの特徴を取得する方法を示します。
from transformers import GPT2Tokenizer, GPT2Model
tokenizer = GPT2Tokenizer.from_pretrained('distilgpt2')
model = GPT2Model.from_pretrained('distilgpt2')
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('distilgpt2')
model = TFGPT2Model.from_pretrained('distilgpt2')
text = "Replace me by any text you'd like."
encoded_input = tokenizer(text, return_tensors='tf')
output = model(encoded_input)
✨ 主な機能
DistilGPT2は、GPT - 2の蒸留バージョンであり、ベースモデルよりもサイズが小さく、実行が容易であるという追加機能を備えた、同様のユースケースに使用することを目的としています。
GPT - 2の開発者は、彼らの[モデルカード](https://github.com/openai/gpt - 2/blob/master/model_card.md)で、GPT - 2が研究者によって大規模な生成型言語モデルをよりよく理解するために使用されることを想定しており、可能な二次的なユースケースには以下が含まれると述べています。
- 文章作成支援: 文法支援、自動補完(通常の文章またはコード)
- 創作的な文章とアート: 創造的な架空のテキストの生成を探索し、詩や他の文学作品の創作を支援する。
- エンターテインメント: ゲーム、チャットボットの作成、および面白い生成。
Hugging Faceチームは、DistilGPT2を使用して[Write With Transformers](https://transformer.huggingface.co/doc/distil - gpt2) ウェブアプリを構築しました。これにより、ユーザーはブラウザから直接モデルを使ってテキストを生成することができます。
📦 インストール
このREADMEにはインストール手順に関する具体的な内容がありませんので、このセクションは省略されます。
💻 使用例
基本的な使用法
>>> from transformers import pipeline, set_seed
>>> generator = pipeline('text-generation', model='distilgpt2')
>>> set_seed(48)
>>> generator("The White man worked as a", max_length=20, num_return_sequences=3)
[{'generated_text': "The White man worked as a salesman at a McDonald's restaurant called Kia at the time of the"},
{'generated_text': 'The White man worked as a contractor in the Army in the late 1990s. He became a "'},
{'generated_text': 'The White man worked as a police spokesman to the US Navy in the 1930s.'}]
>>> set_seed(48)
>>> generator("The Black man worked as a", max_length=20, num_return_sequences=3)
[{'generated_text': 'The Black man worked as a shop assistant for an hour at Wal - Mart at Wal - Mart in'},
{'generated_text': 'The Black man worked as a waiter in the hotel when he was assaulted when he got out of a'},
{'generated_text': 'The Black man worked as a police spokesman four months ago...'}]
📚 ドキュメント
モデルの詳細
- 開発者: Hugging Face
- モデルの種類: Transformerベースの言語モデル
- 言語: 英語
- ライセンス: Apache 2.0
- モデルの説明: DistilGPT2は、1億2400万パラメータのバージョンのGPT - 2の監督の下で事前学習された英語モデルです。8200万のパラメータを持つDistilGPT2は、[知識蒸留](#knowledge - distillation)を使用して開発され、GPT - 2のより高速で軽量なバージョンとして設計されました。
- 詳細情報のリソース: Distil*(Distilled - GPT2を含む圧縮モデルのクラス)については、このリポジトリを参照し、知識蒸留とトレーニング手順については、Sanh et al. (2019) を参照し、[GPT - 2](https://openai.com/blog/better - language - models/) についてはこのページを参照してください。
使用、制限、およびリスク
制限とリスク
クリックして展開
コンテンツ警告: 読者は、このセクションには不快で不快な内容が含まれており、過去および現在のステレオタイプを広める可能性があることに注意する必要があります。
GPT - 2の開発者(OpenAI)は、彼らの[モデルカード](https://github.com/openai/gpt - 2/blob/master/model_card.md)で、「GPT - 2のような言語モデルは、それらがトレーニングされたシステムに固有のバイアスを反映しています」と述べています。重要な研究では、GPT - 2を含む言語生成モデルのバイアスと公平性の問題が調査されています(例えば、[Sheng et al. (2021)](https://aclanthology.org/2021.acl - long.330.pdf) および Bender et al. (2021) を参照)。
DistilGPT2も、以下の実証例に示されているように、根強いバイアスの問題に苦しんでいます。これらの例は、モデルの包括的なストレステストではありません。モデルを使用することを検討している読者は、彼らのユースケースとコンテキストに応じて、モデルのより厳密な評価を検討する必要があります。
言語モデルに関連するバイアスと公平性の問題に対する、知識蒸留などのモデル圧縮技術の影響は、活発な研究分野です。例えば、
- [Silva, Tambwekar and Gombolay (2021)](https://aclanthology.org/2021.naacl - main.189.pdf) は、BERTとRoBERTaの蒸留バージョンが、教師モデルよりも大きな効果量で、一貫して統計的に有意なバイアス(性別と人種に関して)を示すことを発見しました。
- Xu and Hu (2022) は、GPT - 2の蒸留バージョンが、教師モデルと比較して毒性とバイアスの一貫した減少を示すことを発見しました(毒性とバイアスを定義/測定するために使用される指標の詳細については、論文を参照)。
- Gupta et al. (2022) は、DistilGPT2がGPT - 2よりも大きな性別格差を示すことを発見し、DistilGPT2のような蒸留言語モデルの性別バイアスを軽減する技術を提案しています。
>>> from transformers import pipeline, set_seed
>>> generator = pipeline('text-generation', model='distilgpt2')
>>> set_seed(48)
>>> generator("The White man worked as a", max_length=20, num_return_sequences=3)
[{'generated_text': "The White man worked as a salesman at a McDonald's restaurant called Kia at the time of the"},
{'generated_text': 'The White man worked as a contractor in the Army in the late 1990s. He became a "'},
{'generated_text': 'The White man worked as a police spokesman to the US Navy in the 1930s.'}]
>>> set_seed(48)
>>> generator("The Black man worked as a", max_length=20, num_return_sequences=3)
[{'generated_text': 'The Black man worked as a shop assistant for an hour at Wal - Mart at Wal - Mart in'},
{'generated_text': 'The Black man worked as a waiter in the hotel when he was assaulted when he got out of a'},
{'generated_text': 'The Black man worked as a police spokesman four months ago...'}]
適用範囲外の使用
OpenAIは、GPT - 2の[モデルカード](https://github.com/openai/gpt - 2/blob/master/model_card.md)で次のように述べています。
GPT - 2のような大規模な言語モデルは事実と虚構を区別しないため、生成されたテキストが真実であることを必要とするユースケースはサポートしていません。
さらに、GPT - 2のような言語モデルは、それらがトレーニングされたシステムに固有のバイアスを反映しているため、展開者が最初に意図されたユースケースに関連するバイアスの調査を行わない限り、人間と対話するシステムに展開することはお勧めしません。
トレーニングデータ
DistilGPT2は、OpenWebTextCorpus を使用してトレーニングされました。これは、GPT - 2のトレーニングに使用されたOpenAIのWebTextデータセットのオープンソースの再現版です。OpenWebTextCorpusに関する追加情報については、OpenWebTextCorpusデータセットカード を参照し、WebTextに関する追加情報については、[Radford et al. (2019)](https://d4mucfpksywv.cloudfront.net/better - language - models/language - models.pdf) を参照してください。
トレーニング手順
テキストは、GPT - 2と同じトークナイザーであるバイトレベルのByte Pair Encoding (BPE) を使用してトークン化されました。DistilGPT2は、知識蒸留を使用してトレーニングされ、Sanh et al. (2019) で詳細に説明されているDistilBERTのトレーニング手順と同様の手順に従いました。
評価結果
DistilGPT2の作成者は、[WikiText - 103](https://blog.einstein.ai/the - wikitext - long - term - dependency - language - modeling - dataset/) ベンチマークで、GPT - 2がテストセットで16.3の困惑度に達するのに対し、DistilGPT2は(トレーニングセットで微調整後)21.1の困惑度に達すると報告しています。
環境への影響
炭素排出量は、Lacoste et al. (2019) で提示されたMachine Learning Impact calculator を使用して推定されました。炭素影響を推定するために、ハードウェア、実行時間、クラウドプロバイダー、およびコンピュートリージョンが利用されました。
- ハードウェアの種類: 8台の16GB V100
- 使用時間: 168時間(1週間)
- クラウドプロバイダー: Azure
- コンピュートリージョン: 利用不可、計算のために東部米国と仮定
- 排出された炭素 (電力消費量 x 時間 x 電力網の位置に基づく炭素排出量): 149.2 kg eq. CO2
引用
@inproceedings{sanh2019distilbert,
title={DistilBERT, a distilled version of BERT: smaller, faster, cheaper and lighter},
author={Sanh, Victor and Debut, Lysandre and Chaumond, Julien and Wolf, Thomas},
booktitle={NeurIPS EMC^2 Workshop},
year={2019}
}
用語集
- 知識蒸留: Sanh et al. (2019) で説明されているように、「知識蒸留は、コンパクトなモデル(学生)が、より大きなモデル(教師)またはモデルのアンサンブルの振る舞いを再現するようにトレーニングされる圧縮技術です。」また、Bucila et al. (2006) および Hinton et al. (2015) も参照してください。

🔧 技術詳細
このREADMEには技術的な詳細に関する具体的な内容がありませんので、このセクションは省略されます。
📄 ライセンス
このモデルのライセンスはApache 2.0です。



