🚀 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 版本的訪問權限,這個項目是不可能完成的。
感謝所有以各種方式提供幫助的人(按字母順序排列):
💻 使用示例
基礎用法
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("EleutherAI/gpt-j-6B")
model = AutoModelForCausalLM.from_pretrained("EleutherAI/gpt-j-6B")
📄 許可證
本模型使用 Apache - 2.0 許可證。