英文

GPT-J 6B

模型描述

GPT-J 6B 是一个使用Ben Wang的 Mesh Transformer JAX 进行训练的Transformer模型。"GPT-J"代表模型类别,而"6B"表示可训练参数的数量。

Hyperparameter Value
n p a r a m e t e r s n_{parameters} n p a r a m e t e r s ​ 6053381344
n l a y e r s n_{layers} n l a y e r s ​ 28*
d m o d e l d_{model} d m o d e l ​ 4096
d f f d_{ff} d f f ​ 16384
n h e a d s n_{heads} n h e a d s ​ 16
d h e a d d_{head} d h e a d ​ 256
n c t x n_{ctx} n c t x ​ 2048
n v o c a b n_{vocab} n v o c a b ​ 50257/50400† (same tokenizer as GPT-2/3)
Positional Encoding 1234321
RoPE Dimensions 1235321

* 每个层由一个前馈块和一个自注意力块组成。

† 尽管嵌入矩阵的大小为50400,但GPT-2标记器只使用50257个条目。

该模型由28层组成,模型维度为4096,前馈维度为16384。模型维度被分成16个头部,每个头部的维度为256。每个头部的64个维度都应用了Rotary Position Embedding (RoPE)。该模型使用50257个标记的标记化词汇进行训练,使用与GPT-2/GPT-3相同的BPE集合。

预期用途和限制

GPT-J学习了英语语言的内部表示,可以用于提取对下游任务有用的特征。然而,该模型最擅长的是根据提示生成文本。

不在范围内的用途

GPT-J-6B不能在没有微调、监督和/或监管的情况下部署。它本身不是一种产品,不能用于面向人的交互。例如,该模型可能生成有害或冒犯性的文本。请评估与您特定用例相关的风险。

GPT-J-6B是在仅包含英语的数据集上进行训练的,因此不能用于翻译或生成其他语言的文本。

GPT-J-6B没有在常见的下游环境中进行微调,这些环境通常部署语言模型,如写作流派散文或商业聊天机器人。这意味着与ChatGPT等产品不同,GPT-J-6B不会按照给定的提示做出回应。这是因为ChatGPT等模型使用了强化学习等方法对它们进行了微调,以更好地“遵循”人类指令。

限制和偏差

GPT-J的核心功能是接收一串文本并预测下一个标记。尽管语言模型除此之外还可以用于其他任务,但是关于这项工作还有很多未知之处。当给出提示时,重要的一点是要记住,统计上最有可能的下一个标记通常不是产生最“准确”的文本的标记。永远不要依赖于GPT-J生成准确的输出文本。

GPT-J是在包含亵渎性、淫秽和其他粗鲁语言的数据集Pile上进行训练的。根据使用情况,GPT-J可能会生成社会不可接受的文本。有关Pile中偏见的更详细分析,请参阅 Sections 5 and 6 of the Pile paper

与所有语言模型一样,很难预先预测GPT-J对特定提示的回应,可能会出现冒犯性内容而没有警告。我们建议在发布之前由人工对输出进行审查或过滤,既可以对不良内容进行审查,也可以改善结果的质量。

如何使用

可以使用AutoModelForCausalLM功能轻松加载此模型:

from transformers import AutoTokenizer, AutoModelForCausalLM

tokenizer = AutoTokenizer.from_pretrained("EleutherAI/gpt-j-6B")
model = AutoModelForCausalLM.from_pretrained("EleutherAI/gpt-j-6B")

训练数据

GPT-J 6B 是在 the Pile 的大规模策划数据集上进行的训练,该数据集由 EleutherAI 创建。

训练过程

此模型是作为自回归语言模型进行训练的,使用交叉熵损失来最大化正确预测下一个标记的可能性。它在TPU v3-256 pod上进行了383500步的训练,总共训练了4020亿个标记。

评估结果

Model Public Training FLOPs LAMBADA PPL ↓ LAMBADA Acc ↑ Winogrande ↑ Hellaswag ↑ PIQA ↑ Dataset Size (GB)
Random Chance 0 ~a lot ~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大致排序,如果没有提供可比较的指标,则根据其各自作者报告的评估数字进行排序。其他所有数字都是通过使用已发布的权重或使用API访问运行 lm-evaluation-harness 得出的。由于细微的实现差异以及不同的零样本任务框架,这些数字可能无法直接进行比较。有关更多详细信息,请参阅 this blog post

† 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 Research Cloud 慷慨地提供的计算资源,以及Cloud TPU团队提供的 Cloud TPU VM Alpha早期访问权限。

感谢所有以某种方式帮助过的人(按字母顺序列出):