语言:
- 英文
标签:
- PyTorch
- 因果语言模型
许可证: Apache-2.0
数据集:
- EleutherAI/pile
GPT-J 6B
模型描述
GPT-J 6B 是基于 Ben Wang 开发的 Mesh Transformer JAX 框架训练的 Transformer 模型。"GPT-J"代表模型类别,"6B"表示可训练参数数量。
超参数 |
值 |
\(n_{参数}\) |
6053381344 |
\(n_{层数}\) |
28* |
\(d_{模型}\) |
4096 |
\(d_{前馈}\) |
16384 |
\(n_{注意力头}\) |
16 |
\(d_{头维度}\) |
256 |
\(n_{上下文}\) |
2048 |
\(n_{词表}\) |
50257/50400† (与GPT-2/3相同分词器) |
位置编码 |
旋转位置嵌入(RoPE) |
RoPE维度 |
64 |
* 每层包含一个前馈块和一个自注意力块。
† 虽然嵌入矩阵大小为50400,但GPT-2分词器仅使用50257个词元。
该模型包含28个层,模型维度4096,前馈维度16384。模型维度被划分为16个头,每个头维度256。旋转位置嵌入(RoPE)应用于每个头的64个维度。模型使用与GPT-2/GPT-3相同的50257个BPE词元进行训练。
用途与限制
GPT-J学习英语语言的内部表示,可用于提取下游任务的有用特征。该模型最擅长其预训练目标——根据提示生成文本。
非适用范围
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论文第5、6节对数据偏差的分析。
与所有语言模型一样,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在Pile上训练,这是由EleutherAI创建的大规模精选数据集。
训练过程
本模型在TPU v3-256 pod上训练了4020亿词元,共383,500步。作为自回归语言模型,通过交叉熵损失最大化预测下一个词元的可能性。
评估结果
模型 |
公开 |
训练FLOPs |
LAMBADA PPL↓ |
LAMBADA Acc↑ |
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: 60亿参数自回归语言模型}},
howpublished = {\url{https://github.com/kingoflolz/mesh-transformer-jax}},
year = 2021,
month = 5月
}
引用训练代码库:
@misc{mesh-transformer-jax,
author = {Wang, Ben},
title = {{Mesh-Transformer-JAX: 使用JAX实现模型并行的Transformer语言模型}},
howpublished = {\url{https://github.com/kingoflolz/mesh-transformer-jax}},
year = 2021,
month = 5月
}
如果您使用本模型,我们很乐意听取反馈!可通过GitHub、Discord或邮件联系Ben。
致谢
本项目得益于Google通过TPU研究云慷慨提供的算力支持,以及Cloud TPU团队提前开放Cloud TPU VM Alpha测试。
感谢所有提供帮助的人员(按字母排序):