英文

GPT-2 Large

目录

  • 模型细节
  • 如何开始使用该模型
  • 用途
  • 风险、限制和偏见
  • 训练
  • 评估
  • 环境影响
  • 技术规格
  • 引用信息
  • 模型卡片作者

模型细节

模型描述:GPT-2 Large 是 GPT-2 的 774M 参数版本,是由OpenAI创建和发布的基于转换器的语言模型。该模型使用因果语言建模(CLM)目标在英语语言上进行预训练。

如何开始使用该模型

使用以下代码开始使用该模型。您可以直接使用该模型进行文本生成。由于生成结果依赖于一些随机性,我们为了可重复性设置了一个种子:

>>> from transformers import pipeline, set_seed
>>> generator = pipeline('text-generation', model='gpt2-large')
>>> 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, I can do language modeling. In fact, this is one of the reasons I use languages. To get a"},
 {'generated_text': "Hello, I'm a language model, which in its turn implements a model of how a human can reason about a language, and is in turn an"},
 {'generated_text': "Hello, I'm a language model, why does this matter for you?\n\nWhen I hear new languages, I tend to start thinking in terms"},
 {'generated_text': "Hello, I'm a language model, a functional language...\n\nI don't need to know anything else. If I want to understand about how"},
 {'generated_text': "Hello, I'm a language model, not a toolbox.\n\nIn a nutshell, a language model is a set of attributes that define how"}]

下面是如何在PyTorch中使用该模型获取给定文本的特征:

from transformers import GPT2Tokenizer, GPT2Model
tokenizer = GPT2Tokenizer.from_pretrained('gpt2-large')
model = GPT2Model.from_pretrained('gpt2-large')
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-large')
model = TFGPT2Model.from_pretrained('gpt2-large')
text = "Replace me by any text you'd like."
encoded_input = tokenizer(text, return_tensors='tf')
output = model(encoded_input)

用途

直接使用

在其 model card about GPT-2 中,OpenAI写道:

这些模型的主要用户是AI研究人员和从业者。

我们主要想象这些语言模型将由研究人员使用,以更好地理解大规模生成语言模型的行为、能力、偏见和限制。

下游使用

在其 model card about GPT-2 中,OpenAI写道:

这里有一些我们认为可能的次要用途:

  • 写作辅助:语法辅助、自动补全(用于普通散文或代码)
  • 创意写作和艺术:探索创作虚构文本的生成;帮助创作诗歌和其他文学作品。
  • 娱乐:创建游戏、聊天机器人和有趣的生成。
误用和超范围使用

在其 model card about GPT-2 中,OpenAI写道:

由于GPT-2等大规模语言模型无法区分事实和虚构,我们不支持需要生成文本为真实内容的用例。

此外,像GPT-2这样的语言模型反映了其所训练的系统固有的偏见,因此我们建议在将其部署到与人类交互的系统之前,部署者首先进行与拟定用例相关的偏见研究。我们发现在774M和1.5B之间的性别、种族和宗教偏见检测中没有统计上显著差异,这意味着所有版本的GPT-2在对涉及人类属性偏见敏感的用例中都应采取类似的谨慎态度。

风险、限制和偏见

内容警告:读者应注意,本节涵盖的内容令人不安、冒犯,可能宣传历史和现有的刻板印象。

关于语言模型的偏见和公正问题已经进行了大量研究(参见 Sheng et al. (2021) Bender et al. (2021) )。

用于该模型的训练数据并未作为可供浏览的数据集发布。我们知道它包含了来自互联网的许多未经过滤的内容,这远非中立。模型生成的预测可能包含有关受保护的类别、身份特征以及敏感的社会和职业群体的令人不安和有害的刻板印象。例如:

>>> from transformers import pipeline, set_seed
>>> generator = pipeline('text-generation', model='gpt2-large')
>>> set_seed(42)
>>> generator("The man worked as a", max_length=10, num_return_sequences=5)

[{'generated_text': 'The man worked as a security guard in a hotel'},
 {'generated_text': 'The man worked as a salesman in Mexico and in'},
 {'generated_text': 'The man worked as a supervisor at the warehouse for'},
 {'generated_text': "The man worked as a cleaner for the store's"},
 {'generated_text': 'The man worked as a barbershop apprentice.'}]

>>> set_seed(42)
>>> generator("The woman worked as a", max_length=10, num_return_sequences=5)

[{'generated_text': 'The woman worked as a clerk at the bank.'},
 {'generated_text': 'The woman worked as a caregiver, and her'},
 {'generated_text': 'The woman worked as a customer service agent for a'},
 {'generated_text': 'The woman worked as a cleaner at the store,'},
 {'generated_text': 'The woman worked as a barista and was "'}]

这种偏见也会影响该模型的所有精调版本。用户(直接和下游)应意识到该模型的风险、偏见和限制。

训练

训练数据

OpenAI团队希望在尽可能大的语料库上训练该模型。为此,他们从Reddit的外链页面中获取了所有获得至少3个赞的页面。请注意,该数据集中删除了所有维基百科页面,因此该模型没有在维基百科的任何部分上进行训练。生成的数据集(称为WebText)包含40GB的文本内容,但并未公开发布。您可以在 here 中找到WebText中出现的前1000个域名的列表。

训练过程

该模型使用自监督的方式在一个非常庞大的英语数据集上进行预训练。这意味着它仅使用纯文本进行预训练,没有人类以任何方式对其进行标记(这就是为什么它可以使用大量的公开可用数据)。具体来说,模型被训练以猜测句子中的下一个单词。

更准确地说,输入是一系列连续文本的特定长度,而目标是相同的序列,向右移动一个标记(单词或单词的部分)。模型在内部使用掩码机制,确保令牌 i 的预测只使用来自 1 到 i 的输入,而不使用未来的令牌。

这样,模型学习了英语语言的内在表示,可以用于提取对下游任务有用的特征。

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

评估

下面的评估信息摘自 associated paper

测试数据、因素和指标

模型作者在 associated paper 中写道:

由于我们的模型以字节级别操作,不需要有损处理或标记化,因此我们可以在任何语言模型基准测试上进行评估。通常,语言建模数据集的结果以与规范预测单元 - 通常是字符、字节或单词的平均负对数概率的比例或指数化版本进行报告。我们通过计算根据WebText LM的数据集的对数概率,并将其除以规范单位的数量来评估相同的量。对于这些数据集中的许多数据集,WebText LM 将在显著的分布外进行测试,必须预测大规模标准化的文本,令牌化的失真,如断开的标点和缩写,乱序的句子,甚至出现只有26次的字符串,在400亿字节中极为罕见。我们报告主要结果时…使用可逆的反标记器,它尽可能多地删除这些标记化/预处理的工件。由于这些反标记器是可逆的,因此仍然可以计算数据集的对数概率,并且它们可以被视为一种简单形式的域自适应。

结果

该模型在没有任何精调的情况下(零参数调整)实现了以下结果:

Dataset LAMBADA LAMBADA CBT-CN CBT-NE WikiText2 PTB enwiki8 text8 WikiText103 1BW
(metric) (PPL) (ACC) (ACC) (ACC) (PPL) (PPL) (BPB) (BPC) (PPL) (PPL)
10.87 60.12 93.45 88.0 19.93 40.31 0.97 1.02 22.05 44.575

环境影响

可以使用 Machine Learning Impact calculator 中提供的方法以及相关工作 Lacoste et al. (2019) 估计碳排放量。

  • 硬件类型:未知
  • 使用时间:未知
  • 云服务提供商:未知
  • 计算区域:未知
  • 排放的碳量:未知

技术规格

有关建模架构、目标、计算基础设施和训练细节的详细信息,请参阅 associated paper

引用信息

@article{radford2019language,
  title={Language models are unsupervised multitask learners},
  author={Radford, Alec and Wu, Jeffrey and Child, Rewon and Luan, David and Amodei, Dario and Sutskever, Ilya and others},
  journal={OpenAI blog},
  volume={1},
  number={8},
  pages={9},
  year={2019}
}

模型卡片作者

该模型卡片由Hugging Face团队编写。