模型概述
模型特點
模型能力
使用案例
🚀 GPT-J 6B
GPT-J 6B 是一個基於 Transformer 架構的模型,它使用 Ben Wang 的 Mesh Transformer JAX 進行訓練。“GPT-J” 代表模型類別,“6B” 則表示可訓練參數的數量。
✨ 主要特性
- 該模型能夠學習英語語言的內部表示,可用於提取對下游任務有用的特徵。
- 在文本生成任務上表現出色,能夠根據給定的提示生成文本。
📚 詳細文檔
模型描述
GPT-J 6B 是使用 Ben Wang 的 Mesh Transformer JAX 訓練的 Transformer 模型。“GPT - J” 指的是模型類別,“6B” 代表可訓練參數的數量。
超參數 | 值 |
---|---|
\(n_{parameters}\) | 6053381344 |
\(n_{layers}\) | 28* |
\(d_{model}\) | 4096 |
\(d_{ff}\) | 16384 |
\(n_{heads}\) | 16 |
\(d_{head}\) | 256 |
\(n_{ctx}\) | 2048 |
\(n_{vocab}\) | 50257/50400†(與 GPT - 2/3 使用相同的分詞器) |
位置編碼 | 旋轉位置嵌入 (RoPE) |
RoPE 維度 | 64 |
* 每層由一個前饋塊和一個自注意力塊組成。
† 儘管嵌入矩陣大小為 50400,但 GPT - 2 分詞器僅使用 50257 個條目。
該模型由 28 層組成,模型維度為 4096,前饋維度為 16384。模型維度被劃分為 16 個頭,每個頭的維度為 256。旋轉位置嵌入 (RoPE) 應用於每個頭的 64 個維度。該模型使用 50257 的分詞詞彙表進行訓練,使用與 GPT - 2/GPT - 3 相同的 BPE 集合。
預期用途和限制
超出範圍的使用
GPT - J 6B 不適合在未進行微調、監督和/或審核的情況下進行部署。它本身不是一個產品,不能用於面向人類的交互。例如,該模型可能會生成有害或冒犯性的文本。請評估與您特定用例相關的風險。
GPT - J 6B 僅在英語數據集上進行訓練,因此 不適合 用於翻譯或生成其他語言的文本。
GPT - J 6B 未針對語言模型常見的下游場景進行微調,例如撰寫特定類型的散文或商業聊天機器人。這意味著 GPT - J 6B 不會 像 ChatGPT 這樣的產品那樣對給定的提示做出響應。這是因為,與該模型不同,ChatGPT 使用了諸如基於人類反饋的強化學習 (RLHF) 等方法進行微調,以更好地 “遵循” 人類指令。
限制和偏差
GPT - J 的核心功能是接收一段文本並預測下一個標記。雖然語言模型廣泛用於此之外的任務,但這項工作仍有很多未知因素。在向 GPT - J 輸入提示時,重要的是要記住,統計上最可能的下一個標記通常不是產生最 “準確” 文本的標記。切勿依賴 GPT - J 來產生事實準確的輸出。
GPT - J 在 Pile 數據集上進行訓練,該數據集已知包含褻瀆、低俗和其他冒犯性語言。根據用例的不同,GPT - J 可能會產生社會不可接受的文本。有關 Pile 數據集中偏差的更詳細分析,請參閱 Pile 論文的第 5 和 6 節。
與所有語言模型一樣,很難提前預測 GPT - J 會如何響應特定提示,並且可能會在毫無預警的情況下出現冒犯性內容。我們建議在發佈輸出之前由人工進行審核或過濾,以審查不良內容並提高結果的質量。
訓練數據
GPT - J 6B 在 the Pile 上進行訓練,這是一個由 EleutherAI 創建的大規模精選數據集。
訓練過程
該模型在 TPU v3 - 256 集群上經過 383,500 步,對 4020 億個標記進行了訓練。它作為自迴歸語言模型進行訓練,使用交叉熵損失來最大化正確預測下一個標記的可能性。
評估結果
模型 | 公開 | 訓練 FLOPs | LAMBADA PPL ↓ | LAMBADA 準確率 ↑ | Winogrande ↑ | Hellaswag ↑ | PIQA ↑ | 數據集大小 (GB) |
---|---|---|---|---|---|---|---|---|
隨機猜測 | ✓ | 0 | ~很多 | ~0% | 50% | 25% | 25% | 0 |
GPT - 3 Ada‡ | ✗ | ----- | 9.95 | 51.6% | 52.9% | 43.4% | 70.5% | ----- |
GPT - 2 1.5B | ✓ | ----- | 10.63 | 51.21% | 59.4% | 50.9% | 70.8% | 40 |
GPT - Neo 1.3B‡ | ✓ | 3.0e21 | 7.50 | 57.2% | 55.0% | 48.9% | 71.1% | 825 |
Megatron - 2.5B* | ✗ | 2.4e21 | ----- | 61.7% | ----- | ----- | ----- | 174 |
GPT - Neo 2.7B‡ | ✓ | 6.8e21 | 5.63 | 62.2% | 56.5% | 55.8% | 73.0% | 825 |
GPT - 3 1.3B*‡ | ✗ | 2.4e21 | 5.44 | 63.6% | 58.7% | 54.7% | 75.1% | ~800 |
GPT - 3 Babbage‡ | ✗ | ----- | 5.58 | 62.4% | 59.0% | 54.5% | 75.5% | ----- |
Megatron - 8.3B* | ✗ | 7.8e21 | ----- | 66.5% | ----- | ----- | ----- | 174 |
GPT - 3 2.7B*‡ | ✗ | 4.8e21 | 4.60 | 67.1% | 62.3% | 62.8% | 75.6% | ~800 |
Megatron - 11B† | ✓ | 1.0e22 | ----- | ----- | ----- | ----- | ----- | 161 |
GPT - J 6B‡ | ✓ | 1.5e22 | 3.99 | 69.7% | 65.3% | 66.1% | 76.5% | 825 |
GPT - 3 6.7B*‡ | ✗ | 1.2e22 | 4.00 | 70.3% | 64.5% | 67.4% | 78.0% | ~800 |
GPT - 3 Curie‡ | ✗ | ----- | 4.00 | 69.3% | 65.6% | 68.5% | 77.9% | ----- |
GPT - 3 13B*‡ | ✗ | 2.3e22 | 3.56 | 72.5% | 67.9% | 70.9% | 78.5% | ~800 |
GPT - 3 175B*‡ | ✗ | 3.1e23 | 3.00 | 76.2% | 70.2% | 78.9% | 81.0% | ~800 |
GPT - 3 Davinci‡ | ✗ | ----- | 3.0 | 75% | 72% | 78% | 80% | ----- |
模型大致按性能排序,若性能數據不可用,則按 FLOPs 排序。
* 評估數據由各自的作者報告。所有其他數據通過運行 lm - evaluation - harness
獲得,使用發佈的權重或 API 訪問。由於細微的實現差異以及不同的零樣本任務框架,這些數據可能無法直接比較。更多詳細信息請參閱 此博客文章。
† Megatron - 11B 未提供可比指標,並且使用發佈的權重的多個實現無法重現生成質量和評估結果。(請參閱 1 2 3)因此,未嘗試進行評估。
‡ 這些模型使用的訓練數據可能包含測試集汙染。OpenAI 的 GPT - 3 模型未能對某些測試集的訓練數據進行去重,而 GPT - Neo 模型以及本模型在 Pile 數據集上進行訓練,該數據集未針對任何測試集進行去重。
引用和相關信息
BibTeX 條目
若要引用此模型:
@misc{gpt-j,
author = {Wang, Ben and Komatsuzaki, Aran},
title = {{GPT-J-6B: A 6 Billion Parameter Autoregressive Language Model}},
howpublished = {\url{https://github.com/kingoflolz/mesh-transformer-jax}},
year = 2021,
month = May
}
若要引用訓練此模型的代碼庫:
@misc{mesh-transformer-jax,
author = {Wang, Ben},
title = {{Mesh-Transformer-JAX: Model-Parallel Implementation of Transformer Language Model with JAX}},
howpublished = {\url{https://github.com/kingoflolz/mesh-transformer-jax}},
year = 2021,
month = May
}
如果您使用了此模型,我們很樂意瞭解相關情況!請在 GitHub、Discord 上聯繫我們,或者給 Ben 發送電子郵件。
致謝
如果沒有 Google 通過 TPU 研究雲 慷慨提供的計算資源,以及 Cloud TPU 團隊提前提供 Cloud TPU VM Alpha 版本的訪問權限,這個項目是不可能完成的。
感謝所有以各種方式提供幫助的人(按字母順序排列):
- James Bradbury 在調試 JAX 問題方面提供了寶貴的幫助。
- Stella Biderman、Eric Hallahan、Kurumuz 和 Finetune 將模型轉換為與
transformers
包兼容。 - Leo Gao 為表格中的基線模型運行了零樣本評估。
- Laurence Golding 為網頁演示添加了一些功能。
- Aran Komatsuzaki 在實驗設計和撰寫博客文章方面提供了建議。
- Janko Prester 創建了網頁演示的前端。
💻 使用示例
基礎用法
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("EleutherAI/gpt-j-6B")
model = AutoModelForCausalLM.from_pretrained("EleutherAI/gpt-j-6B")
📄 許可證
本模型使用 Apache - 2.0 許可證。



