模型简介
模型特点
模型能力
使用案例
🚀 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许可证。



