语言:
- 英语
标签:
- pytorch
- 因果语言模型
- pythia
许可证: apache-2.0
数据集:
- EleutherAI/pile
Pythia扩展套件是一系列旨在促进可解释性研究的模型集合(详见论文)。该套件包含两组共八个不同规模的模型,分别为7000万、1.6亿、4.1亿、10亿、14亿、28亿、69亿和120亿参数。每个规模下有两种模型:一种在原始Pile数据集上训练,另一种在全局去重后的Pile数据集上训练。所有8个规模的模型均采用完全相同的数据并按相同顺序训练。我们还为每个模型提供了154个中间检查点,托管在Hugging Face的分支上。
Pythia模型套件专为促进大型语言模型(尤其是可解释性研究)的科研工作而设计。尽管未将下游性能作为核心设计目标,但我们发现这些模型在性能上达到或超越了同类规模模型(如OPT和GPT-Neo系列)。
早期版本与命名规范的说明
此前我们曾公开发布过Pythia套件的早期版本。为解决部分超参数不一致问题,我们决定重新训练模型套件。本模型卡列出了具体变更(详见Pythia论文附录B)。两个版本在基准测试中表现无差异。旧版模型仍可获取,但建议新用户使用重新训练的版本。
当前为最新发布版。
请注意,2023年1月我们对Pythia系列所有模型进行了重命名。为便于理解,本模型卡提供了新旧名称对照表及精确参数计数。
Pythia-69亿参数版
模型详情
Pythia模型 |
非嵌入参数量 |
层数 |
模型维度 |
注意力头数 |
批大小 |
学习率 |
等效模型 |
7000万 |
18,915,328 |
6 |
512 |
8 |
200万 |
1.0×10-3 |
— |
1.6亿 |
85,056,000 |
12 |
768 |
12 |
200万 |
6.0×10-4 |
GPT-Neo 1.25亿, OPT-1.25亿 |
4.1亿 |
302,311,424 |
24 |
1024 |
16 |
200万 |
3.0×10-4 |
OPT-3.5亿 |
10亿 |
805,736,448 |
16 |
2048 |
8 |
200万 |
3.0×10-4 |
— |
14亿 |
1,208,602,624 |
24 |
2048 |
16 |
200万 |
2.0×10-4 |
GPT-Neo 13亿, OPT-13亿 |
28亿 |
2,517,652,480 |
32 |
2560 |
32 |
200万 |
1.6×10-4 |
GPT-Neo 27亿, OPT-27亿 |
69亿 |
6,444,163,072 |
32 |
4096 |
32 |
200万 |
1.2×10-4 |
OPT-67亿 |
120亿 |
11,327,027,200 |
36 |
5120 |
40 |
200万 |
1.2×10-4 |
— |
*Pythia套件*工程细节。同规模去重与非去重模型超参数相同。"等效"模型指具有完全相同的架构与非嵌入参数量
使用范围与限制
预期用途
Pythia主要面向大型语言模型行为、功能与局限性的研究。该套件旨在为科学实验提供受控环境。我们为每个模型提供154个检查点:初始step0
、10个对数间隔检查点step{1,2,4...512}
,以及从step1000
到step143000
的143个均匀间隔检查点。这些检查点以分支形式托管在Hugging Face。注意143000
分支对应各模型main
分支上的最终检查点。
您可根据Apache 2.0许可证对Pythia-69亿进行微调与适配部署。该模型兼容Hugging Face Transformers库。若基于预训练模型进行微调,请自行开展风险与偏见评估。
非适用场景
Pythia套件不适用于生产部署,其本身并非产品且不可用于人机交互。例如,模型可能生成有害或冒犯性文本。请根据具体使用场景评估风险。
Pythia模型仅支持英语,不适用于翻译或其他语言文本生成。
Pythia-69亿未针对常见下游场景(如文体写作、商业聊天机器人)进行微调,因此其响应方式与ChatGPT等产品不同。后者采用RLHF等方法来更好地遵循人类指令。
局限性与偏见
大型语言模型的核心功能是预测文本序列的下一个标记,其输出不一定具有事实准确性。切勿依赖Pythia-69亿生成事实性内容。
该模型训练数据the Pile包含亵渎、淫秽及其他冒犯性文本。数据集中存在关于性别、宗教和种族的已知偏见(详见Pile论文第6节)。即使提示词不含明显冒犯内容,模型仍可能生成社会不可接受的文本。
若通过托管API生成文本,建议人工审核后再向他人展示。请告知受众文本由Pythia-69亿生成。
快速入门
以下代码演示如何加载使用Pythia模型(以pythia-70m-deduped
的第三个检查点为例):
from transformers import GPTNeoXForCausalLM, AutoTokenizer
model = GPTNeoXForCausalLM.from_pretrained(
"EleutherAI/pythia-70m-deduped",
revision="step3000",
cache_dir="./pythia-70m-deduped/step3000",
)
tokenizer = AutoTokenizer.from_pretrained(
"EleutherAI/pythia-70m-deduped",
revision="step3000",
cache_dir="./pythia-70m-deduped/step3000",
)
inputs = tokenizer("你好,我是", return_tensors="pt")
tokens = model.generate(**inputs)
tokenizer.decode(tokens[0])
step143000
分支对应各模型main
分支的最终检查点。
完整使用指南参见GitHub文档。
训练过程
训练数据
The Pile是825GB的通用英语数据集,包含22个不同来源的文本,分为五大类:学术文献(如arXiv)、互联网内容(如CommonCrawl)、散文(如古登堡计划)、对话(如YouTube字幕)和杂项(如GitHub、安然邮件)。Pile数据集未经去重处理即用于训练Pythia-69亿。
训练配置
所有模型采用相同数据和训练顺序,共处理299,892,736,000个标记。每个模型保存143个检查点,均匀分布在step1000
至step143000
(即main
)之间。额外提供早期检查点step0
和step{1,2,4...512}
。非去重模型训练约1个epoch,去重模型约1.5个epoch。
所有Pythia模型以200万标记的批大小训练143000步。
训练复现方法参见GitHub。
Pythia使用与GPT-NeoX-20B相同的分词器。
评估结果
16个Pythia模型均通过LM评估工具包测试。完整结果见GitHub仓库的results/json/*
文件。
以下可展开区域展示Pythia与OPT、BLOOM的对比评估图表:
LAMBADA – OpenAI
物理交互问答(PIQA)
WinoGrande
AI2推理挑战-简易版
SciQ
变更日志
本节比较Pythia v0与当前版本的差异(详见论文附录B)。重新训练未影响基准性能:
- 所有模型现采用统一的200万标记批大小(原160M/410M/1.4B模型为400万)
- 新增初始检查点
step0
和step{1,2,4,8,16,32,64,128,256,512}
- 新版采用Flash Attention
- 统一学习率衰减策略:所有模型现均衰减至最大学习率的10%(原6.9B/12B模型衰减至0)
命名规范与参数计数
2023年1月更新命名规范(现基于总参数量):
当前后缀 |
旧后缀 |
总参数量 |
非嵌入参数量 |
70M |
19M |
70,426,624 |
18,915,328 |
160M |
125M |
162,322,944 |
85,056,000 |
410M |
350M |
405,334,016 |
302,311,424 |
1B |
800M |
1,011,781,632 |
805,736,448 |
1.4B |
1.3B |
1,414,647,808 |
1,208,602,624 |
2.8B |
2.7B |
2,775,208,960 |
2,517,652,480 |
6.9B |
6.7B |
6,857,302,016 |
6,444,163,072 |
12B |
13B |
11,846,072,320 |
11,327,027,200 |