模型简介
模型特点
模型能力
使用案例
🚀 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 许可证。



