模型概述
模型特點
模型能力
使用案例
🚀 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 團隊編寫。



