说明文档
GPT-2 Medium
模型详情
模型描述: GPT-2 Medium 是 GPT-2 的 3.55亿参数 版本,这是一个由 OpenAI 创建并发布的基于 Transformer 的语言模型。该模型是使用因果语言建模(CLM)目标在英语语言上预训练的模型。
- 开发者: OpenAI,请参阅相关研究论文和 GitHub 仓库了解更多模型开发者信息。
- 模型类型: 基于 Transformer 的语言模型
- 语言: 英语
- 许可证: 修改版 MIT 许可证
- 相关模型: GPT2、GPT2-Large 和 GPT2-XL
- 更多信息的资源:
- 研究论文
- OpenAI 博客文章
- GitHub 仓库
- OpenAI GPT-2 模型卡片
- 在此处测试完整的生成能力: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 的模型卡片中写道:
这些模型的主要目标用户是人工智能研究人员和从业者。
我们主要设想这些语言模型将被研究人员用于更好地理解大规模生成式语言模型的行为、能力、偏见和局限性。
下游使用
OpenAI 在其关于 GPT-2 的模型卡片中写道:
以下是我们认为可能的一些次要用例:
- 写作辅助:语法辅助、自动补全(用于普通散文或代码)
- 创意写作和艺术:探索创意性、虚构文本的生成;辅助诗歌和其他文学艺术的创作。
- 娱乐:创建游戏、聊天机器人和有趣的生成内容。
滥用和超出范围的用途
OpenAI 在其关于 GPT-2 的模型卡片中写道:
由于像 GPT-2 这样的大规模语言模型无法区分事实与虚构,我们不支持需要生成文本为真实的用例。
此外,像 GPT-2 这样的语言模型反映了它们训练系统固有的偏见,因此我们不建议将其部署到与人类交互的系统中,除非部署者首先对与预期用例相关的偏见进行研究。我们发现 7.74 亿和 15 亿参数版本在性别、种族和宗教偏见探针方面没有统计学上的显著差异,这意味着所有版本的 GPT-2 在涉及人类属性偏见的敏感用例中都应以类似的谨慎程度对待。
风险、局限性和偏见
内容警告:读者应注意,本节包含令人不安、冒犯性的内容,可能会传播历史和当前的刻板印象。
大量研究探讨了语言模型的偏见和公平性问题(例如,参见 Sheng 等人 (2021) 和 Bender 等人 (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 个赞的外链网页。请注意,所有维基百科页面都从该数据集中移除了,因此该模型没有在维基百科的任何部分进行训练。生成的数据集(称为 WebText)包含 40GB 的文本,但尚未公开发布。您可以在此处找到 WebText 中出现的前 1000 个域名的列表。
训练过程
该模型以自监督的方式在非常大的英语数据语料库上进行预训练。这意味着它是在原始文本上进行预训练的,没有人类以任何方式对其进行标注(这就是为什么它可以使用大量公开可用的数据),并通过自动过程从这些文本中生成输入和标签。更准确地说,它被训练来猜测句子中的下一个词。
更准确地说,输入是一定长度的连续文本序列,目标是相同的序列,向右移动一个词元(单词或单词片段)。模型在内部使用掩码机制,确保对词元 i 的预测只使用从 1 到 i 的输入,而不使用未来的词元。
通过这种方式,模型学习了英语语言的内部表示,然后可以用于提取对下游任务有用的特征。
文本使用字节级版本的字节对编码(BPE)(用于 Unicode 字符)进行分词,词汇表大小为 50,257。输入是 1024 个连续词元的序列。
评估
以下评估信息摘自相关论文。
测试数据、因素和指标
模型作者在相关论文中写道:
由于我们的模型在字节级别上操作,不需要有损的预处理或分词,我们可以在任何语言模型基准测试上对其进行评估。语言建模数据集上的结果通常以每个规范预测单元(通常是字符、字节或单词)的平均负对数概率的缩放或指数化版本的形式报告。我们通过计算数据集根据 WebText 语言模型的对数概率并除以规范单元的数量来评估相同的量。对于许多这些数据集,WebText 语言模型将在分布外被显著测试,必须预测过度标准化的文本、分词伪影(如断开的标点符号和缩写)、打乱的句子,甚至是字符串 <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 等人 (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 团队编写。
Ansnaeem/gpt2-medium
作者 Ansnaeem
创建时间: 2026-02-18 18:10:09+00:00
更新时间: 2026-02-18 18:10:09+00:00
在 Hugging Face 上查看