说明文档
GPT-2 Medium
模型详情
模型描述: GPT-2 Medium 是 GPT-2 的 3.55亿参数 版本,GPT-2 是由 OpenAI 创建并发布的基于 Transformer 的语言模型。该模型是使用因果语言建模(CLM)目标在英语语言上进行预训练的模型。
- 开发者: OpenAI,参见相关研究论文和 GitHub 仓库。
- 模型类型: 基于 Transformer 的语言模型
- 语言: 英语
- 许可证: 修改版 MIT 许可证
- 相关模型: GPT2、GPT2-Large 和 GPT2-XL
- 更多信息资源:
- 研究论文
- OpenAI 博客文章
- GitHub 仓库
- GPT-2 的 OpenAI 模型卡
- 在此处测试完整生成能力:https://transformer.huggingface.co/doc/gpt2-large
如何开始使用模型
使用以下代码开始使用模型。您可以直接使用管道(pipeline)进行文本生成来使用此模型。由于生成涉及一些随机性,我们设置了种子以确保可重复性:
>>> from transformers import pipeline, set_seed
>>> generator = pipeline('text-generation', model='gpt2-medium')
>>> 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'm a language. I'm a compiler, I'm a parser, I'm a server process. I"},
{'generated_text': "Hello, I'm a language model, and I'd like to join an existing team. What can I do to get started?\n\nI'd"},
{'generated_text': "Hello, I'm a language model, why does my code get created? Can't I just copy it? But why did my code get created when"},
{'generated_text': "Hello, I'm a language model, a functional language...\n\nI'm a functional language. Is it hard? A little, yes. But"},
{'generated_text': "Hello, I'm a language model, not an object model.\n\nIn a nutshell, I need to give me objects from which I can get"}]
以下是如何在 PyTorch 中使用此模型获取给定文本的特征:
from transformers import GPT2Tokenizer, GPT2Model
tokenizer = GPT2Tokenizer.from_pretrained('gpt2-medium')
model = GPT2Model.from_pretrained('gpt2-medium')
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-medium')
model = TFGPT2Model.from_pretrained('gpt2-medium')
text = "Replace me by any text you'd like."
encoded_input = tokenizer(text, return_tensors='tf')
output = model(encoded_input)
用途
直接使用
OpenAI 在其 GPT-2 模型卡 中写道:
这些模型的主要预期用户是 AI 研究人员和从业者。
我们主要设想这些语言模型将被研究人员用于更好地理解大规模生成式语言模型的行为、能力、偏见和约束。
下游使用
OpenAI 在其 GPT-2 模型卡 中写道:
以下是我们认为可能的一些次要用例:
- 写作辅助:语法辅助、自动补全(用于普通散文或代码)
- 创意写作和艺术:探索创意虚构文本的生成;帮助创作诗歌和其他文学艺术。
- 娱乐:创建游戏、聊天机器人和有趣的生成内容。
误用和超出范围的使用
OpenAI 在其 GPT-2 模型卡 中写道:
由于大规模语言模型如 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-medium')
>>> 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 military'},
{'generated_text': 'The man worked as a salesman in Mexico and eventually'},
{'generated_text': 'The man worked as a supervisor at the department for'},
{'generated_text': 'The man worked as a cleaner for the same corporation'},
{'generated_text': 'The man worked as a barman and was involved'}]
>>> set_seed(42)
>>> generator("The woman worked as a", max_length=10, num_return_sequences=5)
[{'generated_text': 'The woman worked as a social worker in a children'},
{'generated_text': 'The woman worked as a marketing manager, and her'},
{'generated_text': 'The woman worked as a customer service agent in a'},
{'generated_text': 'The woman worked as a cleaner for the same corporation'},
{'generated_text': 'The woman worked as a barista and was involved'}]
这种偏见也会影响此模型的所有微调版本。用户(无论是直接使用还是下游使用)都应该了解模型的风险、偏见和局限性。
训练
训练数据
OpenAI 团队希望在一个尽可能大的语料库上训练此模型。为了构建它,他们抓取了 Reddit 上所有收到至少 3 个 karma 的外向链接的网页。请注意,所有维基百科页面都从该数据集中删除,因此该模型没有在维基百科的任何部分上进行训练。结果数据集(称为 WebText)包含 40GB 的文本,但尚未公开发布。您可以在这里找到 WebText 中前 1,000 个域的列表。
训练程序
该模型在非常大的英语数据语料库上进行自监督预训练。这意味着它仅在原始文本上进行预训练,没有人类以任何方式对它们进行标注(这就是为什么它可以使用大量公开可用的数据),并使用自动过程从这些文本生成输入和标签。更准确地说,它被训练来预测句子中的下一个单词。
更准确地说,输入是一定长度的连续文本序列,目标是相同的序列,向右移动一个标记(单词或单词的一部分)。模型在内部使用掩码机制来确保对标记 i 的预测只使用来自 1 到 i 的输入,而不是未来的标记。
这样,模型学习了英语的内部表示,然后可以将其用于提取对下游任务有用的特征。
文本使用字节级字节对编码(BPE)(用于 Unicode 字符)和 50,257 的词汇量进行标记化。输入是 1024 个连续标记的序列。
评估
以下评估信息摘自相关论文。
测试数据、因素和指标
模型作者在相关论文中写道:
由于我们的模型在字节级别上运行,不需要有损预处理或标记化,我们可以在任何语言模型基准上评估它。语言建模数据集上的结果通常以平均每个规范预测单位的负对数概率的缩放或指数版本来报告——通常是字符、字节或单词。我们通过计算 WebText LM 对数据集的对数概率并除以规范单位的数量来评估相同的量。对于许多这些数据集,WebText LM 将在明显分布外进行测试,需要预测高度标准化的文本、标记化工件(如断开的标点符号和缩写词)、打乱的句子,甚至字符串 <UNK>,这在 WebText 中极为罕见——在 400 亿字节中仅出现 26 次。我们使用可逆去标记化器报告我们的主要结果......这些去标记化器尽可能多地去除这些标记化/预处理工件。由于这些去标记化器是可逆的,我们仍然可以计算数据集的对数概率,它们可以被认为是简单形式的领域适应。
结果
该模型在无需任何微调的情况下获得以下结果(零样本):
| 数据集 | LAMBADA | LAMBADA | CBT-CN | CBT-NE | WikiText2 | PTB | enwiki8 | text8 | WikiText103 | 1BW |
|---|---|---|---|---|---|---|---|---|---|---|
| (指标) | (PPL) | (ACC) | (ACC) | (ACC) | (PPL) | (PPL) | (BPB) | (BPC) | (PPL) | (PPL) |
| 15.60 | 55.48 | 92.35 | 87.1 | 22.76 | 47.33 | 1.01 | 1.06 | 26.37 | 55.72 |
环境影响
碳排放可以使用 机器学习影响计算器(如 Lacoste et al. (2019) 中所述)进行估算。
- 硬件类型: 未知
- 使用时长: 未知
- 云服务提供商: 未知
- 计算区域: 未知
- 碳排放量: 未知
技术规格
请参阅相关论文以获取模型架构、目标、计算基础设施和训练详情的详细信息。
引用信息
@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 团队编写。
openai-community/gpt2-medium
作者 openai-community
创建时间: 2022-03-02 23:29:04+00:00
更新时间: 2024-02-19 12:39:04+00:00
在 Hugging Face 上查看