模型概述
模型特點
模型能力
使用案例
🚀 DistilGPT2
DistilGPT2(Distilled-GPT2的縮寫)是一個英文語言模型,它在最小版本的生成式預訓練變換器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基於知識蒸餾技術開發,擁有8200萬個參數,是GPT - 2的輕量級版本,運行速度更快。
- 文本生成能力:和GPT - 2一樣,可用於文本生成任務。
📚 詳細文檔
模型詳情
屬性 | 詳情 |
---|---|
開發者 | Hugging Face |
模型類型 | 基於變換器的語言模型 |
語言 | 英文 |
許可證 | Apache 2.0 |
模型描述 | DistilGPT2是一個英文語言模型,在擁有1.24億參數版本的GPT - 2的監督下進行預訓練。它使用知識蒸餾技術開發,旨在成為GPT - 2更快、更輕量級的版本。 |
更多信息資源 | 有關Distil*(包括Distilled - GPT2的一類壓縮模型)的更多信息,請參閱此倉庫;有關知識蒸餾和訓練過程的更多信息,請參閱Sanh等人(2019);有關GPT - 2的更多信息,請參閱此頁面。 |
使用場景、侷限性和風險
侷限性和風險
點擊展開
內容警告:讀者應注意,本節包含令人不安、冒犯性的內容,可能會傳播歷史和當前的刻板印象。
正如GPT - 2的開發者(OpenAI)在其[模型卡片](https://github.com/openai/gpt - 2/blob/master/model_card.md)中指出的那樣,“像GPT - 2這樣的語言模型反映了它們所訓練系統中固有的偏見。”大量研究已經探討了包括GPT - 2在內的語言生成模型的偏見和公平性問題(例如,參見[Sheng等人(2021)](https://aclanthology.org/2021.acl - long.330.pdf)和Bender等人(2021))。
DistilGPT2也存在持續的偏見問題,如下所示的示例突出了這一點。請注意,這些示例並非對模型進行全面的壓力測試。考慮使用該模型的讀者應根據其用例和上下文對模型進行更嚴格的評估。
模型壓縮技術(如知識蒸餾)對與語言模型相關的偏見和公平性問題的影響是一個活躍的研究領域。例如:
- [Silva、Tambwekar和Gombolay(2021)](https://aclanthology.org/2021.naacl - main.189.pdf)發現,BERT和RoBERTa的蒸餾版本在性別和種族方面始終表現出統計學上顯著的偏見,且效應大小大於教師模型。
- Xu和Hu(2022)發現,與教師模型相比,GPT - 2的蒸餾版本在毒性和偏見方面持續降低(有關定義/衡量毒性和偏見的指標的更多詳細信息,請參閱該論文)。
- Gupta等人(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...'}]
潛在用途
由於DistilGPT2是GPT - 2的蒸餾版本,它旨在用於與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)網絡應用程序,允許用戶直接從瀏覽器中使用該模型生成文本。
非適用場景
OpenAI在GPT - 2的[模型卡片](https://github.com/openai/gpt - 2/blob/master/model_card.md)中指出:
由於像GPT - 2這樣的大規模語言模型無法區分事實和虛構,我們不支持要求生成文本為真實內容的用例。 此外,像GPT - 2這樣的語言模型反映了它們所訓練系統中固有的偏見,因此我們不建議將它們部署到與人類交互的系統中,除非部署者首先對與預期用例相關的偏見進行研究。
訓練數據
DistilGPT2使用OpenWebTextCorpus進行訓練,這是OpenAI的WebText數據集的開源複製品,該數據集用於訓練GPT - 2。有關OpenWebTextCorpus的更多信息,請參閱OpenWebTextCorpus數據集卡片;有關WebText的更多信息,請參閱[Radford等人(2019)](https://d4mucfpksywv.cloudfront.net/better - language - models/language - models.pdf)。
訓練過程
文本使用與GPT - 2相同的分詞器進行分詞,即字節對編碼(BPE)的字節級版本。DistilGPT2使用知識蒸餾進行訓練,訓練過程與DistilBERT的訓練過程類似,更多詳細信息請參閱Sanh等人(2019)。
評估結果
DistilGPT2的創建者報告稱,在[WikiText - 103](https://blog.einstein.ai/the - wikitext - long - term - dependency - language - modeling - dataset/)基準測試中,GPT - 2在測試集上的困惑度達到16.3,而DistilGPT2(在訓練集上微調後)為21.1。
環境影響
碳排放量使用Lacoste等人(2019)中提出的機器學習影響計算器進行估算。硬件、運行時間、雲服務提供商和計算區域用於估算碳影響。
- 硬件類型:8個16GB V100
- 使用時長:168小時(1周)
- 雲服務提供商:Azure
- 計算區域:不可用,計算時假設為美國東部
- 碳排放 (功耗×時間×基於電網位置產生的碳量):149.2千克二氧化碳當量
引用
@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等人(2019)所描述的,“知識蒸餾是一種壓縮技術,其中一個緊湊的模型(學生模型)被訓練來重現一個更大的模型(教師模型)或一組模型的行為。”另見Bucila等人(2006)和Hinton等人(2015)。

📄 許可證
本模型使用Apache 2.0許可證。



