language: zh
license: mit
OpenAI GPT
目录
模型详情
模型描述: openai-gpt
是由OpenAI创建并发布的基于Transformer的语言模型。该模型是一种因果(单向)Transformer,通过在大规模长距离依赖语料库上进行语言建模预训练而成。
- 开发者: Alec Radford, Karthik Narasimhan, Tim Salimans, Ilya Sutskever。详见相关研究论文和GitHub仓库了解开发者及贡献者信息。
- 模型类型: 基于Transformer的语言模型
- 语言: 英语
- 许可证: MIT许可证
- 更多信息资源:
如何开始使用该模型
使用以下代码快速上手该模型。您可以直接通过文本生成管道使用该模型。由于生成过程存在随机性,我们设置了随机种子以确保结果可复现:
>>> from transformers import pipeline, set_seed
>>> generator = pipeline('text-generation', model='lgaalves/gpt1')
>>> set_seed(42)
>>> generator("你好,我是一个语言模型,", max_length=30, num_return_sequences=5)
[{'generated_text': "你好,我是一个语言模型,'他说,当我完成时。'啊好吧,'那人说,'这就是"},
{'generated_text': '你好,我是一个语言模型,"她说。\n她到达井底,稍微向外探身。那是'},
{'generated_text': '你好,我是一个语言模型,"她笑道。"我们称之为\'白女孩\'或我们被那些'},
{'generated_text': '你好,我是一个语言模型,"Pin先生说。"那些戴滑稽帽子的人不会。"其余'},
{'generated_text': '你好,我是一个语言模型,正准备跳更多舞,"他说,然后压低声音'}]
在PyTorch中使用该模型的方式如下:
from transformers import OpenAIGPTTokenizer, OpenAIGPTModel
import torch
tokenizer = OpenAIGPTTokenizer.from_pretrained("lgaalves/gpt1")
model = OpenAIGPTModel.from_pretrained("lgaalves/gpt1")
inputs = tokenizer("你好,我的狗很可爱", 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("你好,我的狗很可爱", return_tensors="tf")
outputs = model(inputs)
last_hidden_states = outputs.last_hidden_state
用途
直接使用
该模型可用于语言建模任务。
下游应用
该模型的潜在下游应用包括利用语言模型的任务。在相关论文中,开发者讨论了模型在自然语言推理(NLI)、问答、语义相似度和文本分类等任务上的评估。
滥用与超范围使用
该模型未针对生成关于人物或事件的真实表述进行训练,因此用于生成此类内容超出了该模型的能力范围。
风险、局限性与偏见
偏见
内容警告:读者应注意,该模型生成的语言可能令人不安或冒犯,并可能传播历史和当前存在的刻板印象。
大量研究已探讨了语言模型中的偏见和公平性问题(参见Sheng等人(2021)和Bender等人(2021))。该模型的预测可能包含针对受保护群体、身份特征以及敏感社会职业群体的有害刻板印象,例如:
>>> generator("男性从事的职业是", max_length=10, num_return_sequences=5)
[{'generated_text': '男性从事的职业是大学教师'},
{'generated_text': '男性从事的职业是俱乐部清洁工'},
{'generated_text': '男性从事的职业是美国保镖'},
{'generated_text': '男性从事的职业是公司职员'},
{'generated_text': '男性从事的职业是护士'}]
>>> generator("女性从事的职业是", max_length=10, num_return_sequences=5)
[{'generated_text': '女性从事的职业是医学实习生但现在是'},
{'generated_text': '女性从事的职业是助产士我知道'},
{'generated_text': '女性从事的职业是性俱乐部的性工作者'},
{'generated_text': '女性从事的职业是公司秘书'},
{'generated_text': '女性从事的职业是护士但她'}]
这种偏见也可能影响该模型的微调版本。用户(包括直接使用者和下游使用者)应了解该模型的风险、偏见和局限性。
风险与局限性
模型开发者在博客文章中写道:
- 计算需求: 许多先前的NLP方法在单GPU上从头训练相对较小的模型。我们的方法需要昂贵的预训练步骤——8块GPU上训练1个月。幸运的是,这只需做一次,我们已发布模型以避免重复。与先前工作相比,这也是一个大模型,因此需要更多计算和内存——我们使用37层(12块)Transformer架构,训练序列长达512个token。大多数实验在4和8GPU系统上进行。该模型能快速微调至新任务,有助于缓解额外资源需求。
- 通过文本了解世界的局限与偏见: 互联网上的书籍和文本不包含关于世界的完整甚至准确信息。近期研究(Lucy和Gauthier,2017)表明某些信息难以仅通过文本学习,其他工作(Gururangan等人,2018)显示模型会学习并利用数据分布中的偏见。
- 仍脆弱的泛化能力: 虽然我们的方法在广泛任务上提升性能,但当前深度学习NLP模型仍表现出令人惊讶和反直觉的行为——特别是在系统化、对抗性或分布外评估时。我们的方法虽未免疫这些问题,但观察到一些进步迹象。在文本蕴含任务上,我们的方法比先前纯神经方法展现出更好的词汇鲁棒性。在Glockner等人(2018)引入的数据集上,我们的模型达到83.75%,与通过WordNet整合外部知识的KIM表现相当。
训练
训练数据
开发者写道:
我们使用BooksCorpus数据集(Zhu等人,2015)训练语言模型。它包含7,000多本未出版的各类型书籍,包括冒险、奇幻和浪漫等。关键的是,它包含大量连续文本,使生成模型能学习长距离信息条件。
训练过程
开发者写道:
我们的模型基本遵循原始Transformer工作[62]。我们训练了12层仅解码器Transformer,带掩码自注意力头(768维状态和12个注意力头)。对于位置前馈网络,我们使用3072维内部状态。我们采用Adam优化方案[27],最大学习率2.5e-4。学习率在前2000次更新中从零线性增加,之后通过余弦调度衰减至0。我们在64个随机采样、连续512token序列的小批量上训练100轮。由于整个模型广泛使用层归一化[2],简单的N(0,0.02)权重初始化已足够。我们使用40,000合并的字节对编码(BPE)词汇表[53],以及残差、嵌入和注意力dropout(比率0.1)进行正则化。我们还采用[37]提出的修改版L2正则化,对所有非偏置或增益权重w=0.01。激活函数使用高斯误差线性单元(GELU)[18]。我们使用学习的位置嵌入而非原始工作中的正弦版本。使用ftfy库清理BooksCorpus原始文本,标准化部分标点和空格,并使用spaCy分词器。
详见论文获取更多细节及引用链接。
评估
以下评估信息摘自相关博客文章。详见相关论文获取更多细节。
测试数据、因素与指标
开发者报告模型在以下任务和数据集上使用所列指标进行评估:
-
任务: 文本蕴含
-
任务: 语义相似度
-
任务: 阅读理解
-
任务: 常识推理
-
任务: 情感分析
-
任务: 语言可接受性
-
任务: 多任务基准
结果
该模型在零样本(无微调)情况下取得以下结果:
任务 |
文本蕴含 |
文本蕴含 |
文本蕴含 |
文本蕴含 |
文本蕴含 |
文本蕴含 |
语义相似 |
语义相似 |
语义相似 |
阅读理解 |
常识推理 |
常识推理 |
情感分析 |
语言可接受性 |
多任务基准 |
数据集 |
SNLI |
MNLI匹配 |
MNLI不匹配 |
SciTail |
QNLI |
RTE |
STS-B |
QQP |
MPRC |
RACE |
ROC故事 |
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-days)。
8块P600 GPU * 30天 * 12 TFLOPS/GPU * 0.33利用率 = 0.96 pfs-days
可使用Lacoste等人(2019)提出的机器学习影响计算器估算碳排放。
- 硬件类型: 8块P600 GPU
- 使用时长: 720小时(30天)
- 云服务商: 未知
- 计算区域: 未知
- 碳排放量: 未知
技术规格
详见相关论文获取建模架构、目标函数、计算基础设施和训练细节。
引用信息
@article{radford2018improving,
title={通过生成式预训练提升语言理解能力},
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). 通过生成式预训练提升语言理解能力.
模型卡片作者
本模型卡片由Hugging Face团队撰写。