语言:
- 英语
标签:
- pytorch
- 因果语言模型
- pythia
许可证: apache-2.0
数据集:
- the_pile
Pythia规模套件是为促进可解释性研究而开发的一系列模型集合(详见论文)。该套件包含两组共八个模型,规模分别为70M、160M、410M、1B、1.4B、2.8B、6.9B和12B。每个规模对应两个模型:一个在原始Pile数据集上训练,另一个在全局去重后的Pile数据集上训练。所有8个规模的模型均采用完全相同的训练数据和顺序。我们还提供了每个模型的154个中间检查点,以分支形式托管在Hugging Face平台。
Pythia模型套件专为促进大语言模型(尤其是可解释性研究)的科研工作而设计。尽管未将下游性能作为核心设计目标,但我们发现这些模型在性能上达到或超越了同类规模模型(如OPT和GPT-Neo系列)。
早期版本与命名规范说明
此前我们曾发布过Pythia套件的早期版本,但为修正部分超参数差异决定重新训练。本模型卡列出了变更内容(详见变更日志),更详细讨论可参考Pythia论文附录B。两个版本在基准测试中表现无差异。旧版模型仍可获取,但建议新用户使用重训版本。
当前版本即为此重训版本。
请注意,2023年1月我们对Pythia系列所有模型进行了重命名。为便于对照,本模型卡提供了新旧名称对照表及精确参数计数。
Pythia-1B
模型详情
Pythia模型 |
非嵌入参数量 |
层数 |
模型维度 |
头数 |
批大小 |
学习率 |
等效模型 |
70M |
18,915,328 |
6 |
512 |
8 |
2M |
1.0e-3 |
— |
160M |
85,056,000 |
12 |
768 |
12 |
2M |
6.0e-4 |
GPT-Neo 125M, OPT-125M |
410M |
302,311,424 |
24 |
1024 |
16 |
2M |
3.0e-4 |
OPT-350M |
1.0B |
805,736,448 |
16 |
2048 |
8 |
2M |
3.0e-4 |
— |
1.4B |
1,208,602,624 |
24 |
2048 |
16 |
2M |
2.0e-4 |
GPT-Neo 1.3B, OPT-1.3B |
2.8B |
2,517,652,480 |
32 |
2560 |
32 |
2M |
1.6e-4 |
GPT-Neo 2.7B, OPT-2.7B |
6.9B |
6,444,163,072 |
32 |
4096 |
32 |
2M |
1.2e-4 |
OPT-6.7B |
12B |
11,327,027,200 |
36 |
5120 |
40 |
2M |
1.2e-4 |
— |
*Pythia套件*工程细节。同规模去重与非去重模型超参数相同。"等效"模型指架构完全相同且非嵌入参数量完全一致。
用途与限制
预期用途
Pythia主要面向大语言模型行为、功能及局限性的科学研究。该套件旨在为科学实验提供受控环境。我们为每个模型提供154个检查点:初始step0
、10个对数间隔检查点step{1,2,4...512}
,以及从step1000
到step143000
的143个均匀间隔检查点,这些检查点以分支形式托管于Hugging Face。注意143000
分支对应各模型main
分支的最终检查点。
用户可根据Apache 2.0许可证对Pythia-1B进行微调与适配部署。Pythia模型兼容Hugging Face的Transformers库。若基于预训练模型进行微调,请自行开展风险与偏见评估。
非适用场景
Pythia套件不适用于生产部署,其本身并非产品级解决方案,不可用于人机交互场景。例如,模型可能生成有害或冒犯性文本。请根据具体用例评估风险。
Pythia模型仅支持英语,不适用于其他语言的翻译或文本生成任务。
Pythia-1B未针对常见下游场景(如文体写作、商业聊天机器人等)进行微调,因此其响应方式与ChatGPT等产品不同。后者采用了RLHF等微调方法以更好遵循人类指令。
局限性与偏见
大语言模型的核心功能是预测文本序列的下一个标记,但该预测不一定产生最"准确"的内容。切勿依赖Pythia-1B输出事实性准确内容。
本模型训练数据the Pile包含亵渎、低俗及其他冒犯性文本。关于性别、宗教和种族偏见的讨论详见Pile论文第6节。即使提示词不含明显冒犯内容,Pythia-1B仍可能生成不符合社会规范的内容。
若通过托管API等渠道使用生成文本,建议人工审核后再向他人展示,并告知文本由Pythia-1B生成。
快速开始
以下代码演示如何加载使用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是825GiB的通用英语数据集,专为大语言模型训练而构建,包含学术文献、网络文本、散文、对话等22类数据源(详见Pile论文)。训练Pythia-1B时未对原始Pile数据进行去重处理。
训练流程
所有模型采用相同数据和训练顺序,每个模型训练过程中处理299,892,736,000个标记,保存143个检查点(每处理2,097,152,000标记保存一次)。此外还提供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
- 修正学习率衰减不一致问题:原2.8B及以下模型衰减至最大学习率的10%,而6.9B/12B衰减至0。现全部统一为衰减至最大学习率的10%
命名规范与参数计数
2023年1月Pythia模型采用新命名规范(可能仍有文档误用旧名称)。现行规范基于总参数量:
现行后缀 |
旧后缀 |
总参数量 |
非嵌入参数量 |
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 |