ONNX 模型库
返回模型

说明文档

GPT-2

在此测试完整的生成能力:https://transformer.huggingface.co/doc/gpt2-large

在英文语料上使用因果语言建模(CLM)目标预训练的模型。该模型在这篇论文中首次提出,并于此页面首次发布。

免责声明:发布GPT-2的团队也为他们的模型编写了一份模型卡。该模型卡的内容由Hugging Face团队编写,以补充他们提供的信息并给出偏见的具体示例。

模型描述

GPT-2是一个基于Transformer的预训练模型,采用自监督方式在非常大的英文数据语料上进行预训练。这意味着它仅在原始文本上进行预训练,没有任何人工标注(这也是它能使用大量公开数据的原因),使用自动流程从这些文本中生成输入和标签。更准确地说,它的训练目标是预测句子中的下一个词。

更准确地说,输入是一定长度的连续文本序列,目标是将相同的序列向右移动一个token(词或词的片段)。模型内部使用掩码机制来确保对token i的预测只使用从1i的输入,而不使用后续的token。

通过这种方式,模型学习到英语的内部表示,然后可以用于提取对下游任务有用的特征。然而,该模型最擅长的是它预训练的目标,即根据提示生成文本。

这是GPT-2的最小版本,拥有1.24亿参数。

相关模型: GPT-LargeGPT-MediumGPT-XL

预期用途与局限性

您可以将原始模型用于文本生成,或对其进行微调以用于下游任务。请查看模型市场以寻找您感兴趣的任务的微调版本。

如何使用

您可以直接使用管道进行文本生成。由于生成依赖于一些随机性,我们设置了一个种子以确保可重复性:

>>> 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)

局限性与偏见

用于训练此模型的数据尚未作为可浏览的数据集发布。我们知道它包含大量来自互联网的未过滤内容,这远非中立。正如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中存在的前1000个域名的列表。

训练过程

预处理

文本使用字节级字节对编码(BPE)(用于Unicode字符)进行分词,词汇表大小为50,257。输入是1024个连续token的序列。

较大的模型在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}
}

<a href="https://huggingface.co/exbert/?model=gpt2"> <img width="300px" src="https://cdn-media.huggingface.co/exbert/button.png"> </a>

openai-community/gpt2

作者 openai-community

text-generation transformers
↓ 11.6M ♥ 3.1K

创建时间: 2022-03-02 23:29:04+00:00

更新时间: 2024-02-19 10:57:45+00:00

在 Hugging Face 上查看

文件 (26)

.gitattributes
64-8bits.tflite
64-fp16.tflite
64.tflite
README.md
config.json
flax_model.msgpack
generation_config.json
merges.txt
model.safetensors
onnx/config.json
onnx/decoder_model.onnx ONNX
onnx/decoder_model_merged.onnx ONNX
onnx/decoder_with_past_model.onnx ONNX
onnx/generation_config.json
onnx/merges.txt
onnx/special_tokens_map.json
onnx/tokenizer.json
onnx/tokenizer_config.json
onnx/vocab.json
pytorch_model.bin
rust_model.ot
tf_model.h5
tokenizer.json
tokenizer_config.json
vocab.json