模型简介
模型特点
模型能力
使用案例
🚀 OpenAI GPT
OpenAI GPT 是一个基于 Transformer 的语言模型,由 OpenAI 开发并发布。它通过在大型语料库上进行语言建模预训练,能够处理长距离依赖关系,可用于多种自然语言处理任务。
🚀 快速开始
使用以下代码即可开始使用该模型。你可以直接使用 pipeline
进行文本生成。由于生成过程存在一定随机性,为保证结果可复现,我们设置了随机种子:
>>> from transformers import pipeline, set_seed
>>> generator = pipeline('text-generation', model='lgaalves/gpt1')
>>> 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,'he said, when i was finished.'ah well,'said the man,'that's"},
{'generated_text': 'Hello, I\'m a language model, " she said. \n she reached the bottom of the shaft and leaned a little further out. it was'},
{'generated_text': 'Hello, I\'m a language model, " she laughed. " we call that a\'white girl.\'or as we are called by the'},
{'generated_text': 'Hello, I\'m a language model, " said mr pin. " an\'the ones with the funny hats don\'t. " the rest of'},
{'generated_text': 'Hello, I\'m a language model, was\'ere \'bout to do some more dancin \', " he said, then his voice lowered to'}]
以下是在 PyTorch 中使用该模型的方法:
from transformers import OpenAIGPTTokenizer, OpenAIGPTModel
import torch
tokenizer = OpenAIGPTTokenizer.from_pretrained("lgaalves/gpt1")
model = OpenAIGPTModel.from_pretrained("lgaalves/gpt1")
inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
outputs = model(**inputs)
last_hidden_states = outputs.last_hidden_state
在 TensorFlow 中的使用方法如下:
from transformers import OpenAIGPTTokenizer, TFOpenAIGPTModel
tokenizer = OpenAIGPTTokenizer.from_pretrained("lgaalves/gpt1")
model = TFOpenAIGPTModel.from_pretrained("lgaalves/gpt1")
inputs = tokenizer("Hello, my dog is cute", return_tensors="tf")
outputs = model(inputs)
last_hidden_states = outputs.last_hidden_state
✨ 主要特性
- 基于 Transformer 架构:利用 Transformer 的强大能力处理长距离依赖关系。
- 可直接用于文本生成:通过
pipeline
可快速实现文本生成任务。 - 多任务适用性:可应用于自然语言推理、问答、语义相似度、文本分类等多种任务。
📚 详细文档
模型详情
属性 | 详情 |
---|---|
模型类型 | 基于 Transformer 的语言模型 |
支持语言 | 英语 |
许可证 | MIT 许可证 |
更多信息资源 | 研究论文、OpenAI 博客文章、GitHub 仓库、测试完整生成能力 |
模型用途
直接使用
该模型可用于语言建模任务。
下游使用
该模型的潜在下游用途包括利用语言模型的任务。在相关论文中,模型开发者讨论了该模型在自然语言推理(NLI)、问答、语义相似度和文本分类等任务中的评估情况。
误用和超出范围使用
该模型并非用于生成关于人物或事件的事实性或真实性内容,因此使用该模型生成此类内容超出了其能力范围。
风险、局限性和偏差
偏差
⚠️ 重要提示
读者应该注意,该模型生成的语言可能会让某些人感到不安或冒犯,并且可能会传播历史和当前的刻板印象。
大量研究已经探讨了语言模型的偏差和公平性问题(例如,参见 Sheng 等人 (2021) 和 Bender 等人 (2021))。该模型生成的预测可能包括对受保护类别、身份特征以及敏感、社会和职业群体的令人不安和有害的刻板印象。例如:
>>> from transformers import pipeline, set_seed
>>> generator = pipeline('text-generation', model='lgaalves/gpt1')
>>> set_seed(42)
>>> generator("The man worked as a", max_length=10, num_return_sequences=5)
[{'generated_text': 'The man worked as a teacher for the college he'},
{'generated_text': 'The man worked as a janitor at the club.'},
{'generated_text': 'The man worked as a bodyguard in america. the'},
{'generated_text': 'The man worked as a clerk for one of the'},
{'generated_text': 'The man worked as a nurse, but there was'}]
>>> set_seed(42)
>>> generator("The woman worked as a", max_length=10, num_return_sequences=5)
[{'generated_text': 'The woman worked as a medical intern but is a'},
{'generated_text': 'The woman worked as a midwife, i know that'},
{'generated_text': 'The woman worked as a prostitute in a sex club'},
{'generated_text': 'The woman worked as a secretary for one of the'},
{'generated_text': 'The woman worked as a nurse, but she had'}]
这种偏差也可能影响该模型的微调版本。用户(直接用户和下游用户)应该了解该模型的风险、偏差和局限性。
风险和局限性
模型开发者还在博客文章中提到了该模型的风险和局限性,包括:
- 计算要求:许多先前的自然语言处理任务方法是在单个 GPU 上从头开始训练相对较小的模型。我们的方法需要一个昂贵的预训练步骤——在 8 个 GPU 上训练 1 个月。幸运的是,这只需要做一次,并且我们正在发布我们的模型,以便其他人可以避免这一步。该模型也是一个大型模型(与先前的工作相比),因此需要更多的计算和内存——我们使用了一个 37 层(12 个块)的 Transformer 架构,并在长达 512 个标记的序列上进行训练。大多数实验是在 4 和 8 个 GPU 系统上进行的。该模型可以非常快速地微调以适应新任务,这有助于减轻额外的资源需求。
- 通过文本学习世界的局限性和偏差:互联网上容易获取的书籍和文本并不包含关于世界的完整甚至准确的信息。最近的研究(Lucy 和 Gauthier, 2017)表明,某些类型的信息很难仅通过文本学习,而其他研究(Gururangan 等人, 2018)表明,模型会学习并利用数据分布中的偏差。
- 泛化能力仍然脆弱:尽管我们的方法在广泛的任务中提高了性能,但当前的深度学习自然语言处理模型仍然表现出令人惊讶和违反直觉的行为——尤其是在系统、对抗或分布外的评估中。我们的方法也不能避免这些问题,尽管我们已经观察到了一些进展的迹象。我们的方法在文本蕴含任务上比先前的纯神经方法表现出更好的词汇鲁棒性。在 Glockner 等人 (2018) 引入的数据集上,我们的模型达到了 83.75% 的准确率,与通过 WordNet 结合外部知识的 KIM 模型表现相似。
训练
训练数据
模型开发者在论文中提到: 我们使用 BooksCorpus 数据集(Zhu 等人, 2015)来训练语言模型。它包含了来自各种类型(包括冒险、幻想和浪漫)的 7000 多本未出版的独特书籍。关键的是,它包含了长段的连续文本,这使得生成模型能够学习对长距离信息进行条件处理。
训练过程
模型开发者在论文中提到: 我们的模型在很大程度上遵循了原始的 Transformer 工作 [62]。我们训练了一个 12 层的仅解码器 Transformer,带有掩码自注意力头(768 维状态和 12 个注意力头)。对于位置前馈网络,我们使用了 3072 维的内部状态。我们使用了 Adam 优化方案 [27],最大学习率为 2.5e - 4。学习率在前 2000 次更新中从 0 线性增加,并使用余弦调度退火到 0。我们在 64 个随机采样的、连续的 512 个标记序列的小批量上训练了 100 个 epoch。由于层归一化 [2] 在整个模型中被广泛使用,简单的权重初始化 N (0, 0.02) 就足够了。我们使用了一个有 40,000 次合并的字节对编码(BPE)词汇表 [53],并使用了残差、嵌入和注意力丢弃,丢弃率为 0.1 以进行正则化。我们还采用了 [37] 中提出的修改版 L2 正则化,对所有非偏置或增益权重设置 w = 0.01。对于激活函数,我们使用了高斯误差线性单元(GELU)[18]。我们使用了学习的位置嵌入,而不是原始工作中提出的正弦版本。我们使用 ftfy 库 2 来清理 BooksCorpus 中的原始文本,标准化一些标点符号和空格,并使用 spaCy 分词器。
评估
测试数据、因素和指标
模型开发者报告称,该模型在以下任务和数据集上使用所列指标进行了评估:
任务 | 数据集 | 指标 |
---|---|---|
文本蕴含 | SNLI、MNLI Matched、MNLI Mismatched、SciTail、QNLI、RTE | 准确率 |
语义相似度 | STS - B、QQP、MRPC | 准确率 |
阅读理解 | RACE | 准确率 |
常识推理 | ROCStories、COPA | 准确率 |
情感分析 | SST - 2 | 准确率 |
语言可接受性 | CoLA | 准确率 |
多任务基准测试 | GLUE | 准确率 |
评估结果
该模型在没有任何微调(零样本)的情况下取得了以下结果:
任务 | 文本蕴含 | 文本蕴含 | 文本蕴含 | 文本蕴含 | 文本蕴含 | 文本蕴含 | 语义相似度 | 语义相似度 | 语义相似度 | 阅读理解 | 常识推理 | 常识推理 | 情感分析 | 语言可接受性 | 多任务基准测试 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
数据集 | SNLI | MNLI 匹配 | MNLI 不匹配 | SciTail | QNLI | RTE | STS - B | QQP | MRPC | RACE | ROCStories | COPA | SST - 2 | CoLA | GLUE |
准确率 | 89.9 | 82.1 | 81.4 | 88.3 | 88.1 | 56.0 | 82.0 | 70.3 | 82.3 | 59.0 | 86.5 | 78.6 | 91.3 | 45.4 | 72.8 |
环境影响
模型开发者报告称: 训练该模型总共使用了 0.96 petaflop 天(pfs - 天)的计算资源。
8 个 P600 GPU * 30 天 * 12 TFLOPS/GPU * 0.33 利用率 = 0.96 pfs - 天
可以使用 Lacoste 等人 (2019) 中提出的机器学习影响计算器来估算碳排放。
属性 | 详情 |
---|---|
硬件类型 | 8 个 P600 GPU |
使用时长 | 720 小时(30 天) |
云服务提供商 | 未知 |
计算区域 | 未知 |
碳排放 | 未知 |
技术细节
具体技术细节请参阅相关论文。
引用信息
@article{radford2018improving,
title={Improving language understanding by generative pre-training},
author={Radford, Alec and Narasimhan, Karthik and Salimans, Tim and Sutskever, Ilya and others},
year={2018},
publisher={OpenAI}
}
APA 格式:Radford, A., Narasimhan, K., Salimans, T., & Sutskever, I. (2018). Improving language understanding by generative pre-training.
模型卡片作者
本模型卡片由 Hugging Face 团队编写。



