模型:
openai-gpt
模型描述:openai-gpt 是由OpenAI创建和发布的基于transformer的语言模型。该模型是通过在大型语料库上进行语言建模训练的因果(单向)transformer预训练模型,能够考虑长程依赖。
使用下面的代码开始使用该模型。您可以直接使用该模型进行文本生成。由于生成过程涉及到一些随机性,为了可重复性,我们设置了一个种子:
>>> from transformers import pipeline, set_seed >>> generator = pipeline('text-generation', model='openai-gpt') >>> 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("openai-gpt") model = OpenAIGPTModel.from_pretrained("openai-gpt") 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("openai-gpt") model = TFOpenAIGPTModel.from_pretrained("openai-gpt") inputs = tokenizer("Hello, my dog is cute", return_tensors="tf") outputs = model(inputs) last_hidden_states = outputs.last_hidden_state
该模型可用于语言建模任务。
下游使用该模型的潜在下游使用包括利用语言模型的任务。在 associated paper 中,模型的开发者讨论了对该模型进行自然语言推理(NLI)、问答、语义相似性和文本分类等任务的评估。
误用和超出范围的使用该模型不是为生成事实或真实的人物或事件表达而训练的,因此使用该模型生成此类内容超出了该模型的能力范围。
注意:读者应意识到该模型生成的语言可能对某些人来说具有煽动性或冒犯性,并可能传播历史和当前的刻板印象。
关于语言模型的偏见和公平性问题已有大量研究(参见,例如, Sheng et al. (2021) 和 Bender et al. (2021) )。该模型生成的预测可能包含针对受保护类别、身份特征以及敏感的社会和职业群体的冒犯和有害的刻板印象。例如:
>>> from transformers import pipeline, set_seed >>> generator = pipeline('text-generation', model='openai-gpt') >>> 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'}]
此偏见也可能影响到该模型的微调版本。用户(直接和下游用户)应意识到该模型的风险、偏见和局限性。
风险和局限性模型的开发者还在一篇 blog post 中提到了该模型的风险和局限性,包括:
模型的开发者在 write 中提到:
我们使用BooksCorpus数据集( Zhu et al., 2015 )来训练语言模型。该数据集包含来自各种流派(包括冒险、幻想和浪漫)的7000多本未发表的图书。关键是,它包含了长段连续的文本,使得生成模型能够学习如何对长程信息进行条件建模。
训练过程模型的开发者在 write 中写道:
我们的模型在很大程度上遵循了最初的transformer工作[62]。我们训练了一个12层的仅解码的transformer,使用掩码的自注意力头(768维状态和12个注意力头)。对于位置感知的前馈网络,我们使用了3072维的内部状态。我们使用Adam优化方案[27],最大学习率为2.5e-4。学习率在前2000次更新中线性增加,然后使用余弦调度将其减少到0。我们使用64个随机抽样的连续512个标记的小批量数据对模型进行了100个时期的训练。由于模型中广泛使用了layernorm[2],简单的权重初始化N(0, 0.02)就足够了。我们使用了一个带有40,000个合并的字节对编码(BPE)词汇表[53],并使用了残差、嵌入和注意力丢弃来进行正则化,丢弃率为0.1。我们还采用了[37]中提出的一种修改过的L2正则化方法,对所有非偏差或增益权重采用w = 0.01。对于激活函数,我们使用了高斯误差线性单元(GELU)[18]。我们使用学习的位置嵌入代替了原始工作中提出的正弦版本。我们使用ftfy库2来清理BooksCorpus中的原始文本、标准化一些标点符号和空格,并使用spaCy分词器。
更多详细信息和引文链接请参见该论文。
以下评估信息摘自 associated blog post 。有关更多详细信息,请参考 associated paper 。
测试数据、因素和度量模型的开发者报告称,在以下任务和数据集上使用了列出的度量对该模型进行了评估:
任务:文本蕴含
任务:语义相似性
任务:阅读理解
任务:常识推理
任务:情感分析
任务:语言可接受性
任务:多任务基准
该模型在没有任何微调(零样本)的情况下取得了以下结果:
Task | TE | TE | TE | TE | TE | TE | SS | SS | SS | RC | CR | CR | SA | LA | MTB |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Dataset | SNLI | MNLI Matched | MNLI Mismatched | SciTail | QNLI | RTE | STS-B | QQP | MPRC | 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 |
模型的开发者在 report that 中写道:
用于训练该模型的总计算量为0.96千万亿次(pfs-days)。
8个P600 GPU * 30天 * 12 TFLOPS/GPU * 0.33利用率 = 0.96 pfs-days
可以使用 Lacoste et al. (2019) 中提到的方法估计碳排放量。
有关建模架构、目标、计算基础设施和训练细节,请参见 associated paper 。
@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)。通过生成式预训练改善语言理解。
此模型说明书由Hugging Face团队编写。