语言:
- 英语
标签:
- pytorch
- 因果语言模型
- pythia
许可证: apache-2.0
数据集:
- EleutherAI/the_pile
Pythia 扩展套件是一系列为促进可解释性研究而开发的模型集合(详见论文)。该套件包含两组共八个规模的模型,分别为70M、160M、410M、1B、1.4B、2.8B、6.9B和12B。每个规模下有两个模型:一个在原始Pile数据集上训练,另一个在全局去重后的Pile数据集上训练。所有八个规模的模型均在完全相同的数据上按相同顺序训练。我们还为每个模型提供了154个中间检查点,托管在Hugging Face的分支中。
Pythia模型套件专为促进大语言模型的科学研究(尤其是可解释性研究)而设计。尽管未将下游性能作为核心设计目标,但我们发现这些模型在性能上匹配或超越了同类同规模模型(如OPT和GPT-Neo系列)。
早期版本及命名规范说明
此前我们曾发布过Pythia套件的早期版本,但为了修正部分超参数差异,我们决定重新训练模型套件。本模型卡列出了变更内容(详见Pythia论文附录B)。两个版本在基准测试中表现无差异。旧版模型仍可获取,但建议新用户使用重新训练的版本。
当前为最新发布版。
请注意,2023年1月我们对Pythia系列所有模型进行了重命名。为便于理解,本模型卡提供了新旧名称对照表及精确参数量。
Pythia-1.4B
模型详情
Pythia模型 |
非嵌入参数量 |
层数 |
模型维度 |
头数 |
批大小 |
学习率 |
等效模型 |
70M |
18,915,328 |
6 |
512 |
8 |
2M |
1.0 × 10-3 |
— |
160M |
85,056,000 |
12 |
768 |
12 |
2M |
6.0 × 10-4 |
GPT-Neo 125M, OPT-125M |
410M |
302,311,424 |
24 |
1024 |
16 |
2M |
3.0 × 10-4 |
OPT-350M |
1.0B |
805,736,448 |
16 |
2048 |
8 |
2M |
3.0 × 10-4 |
— |
1.4B |
1,208,602,624 |
24 |
2048 |
16 |
2M |
2.0 × 10-4 |
GPT-Neo 1.3B, OPT-1.3B |
2.8B |
2,517,652,480 |
32 |
2560 |
32 |
2M |
1.6 × 10-4 |
GPT-Neo 2.7B, OPT-2.7B |
6.9B |
6,444,163,072 |
32 |
4096 |
32 |
2M |
1.2 × 10-4 |
OPT-6.7B |
12B |
11,327,027,200 |
36 |
5120 |
40 |
2M |
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-1.4B进行微调部署,但需自行开展风险评估。模型兼容Hugging Face Transformers库。
非适用场景
Pythia套件不适用于生产部署,不能用于人机交互场景。例如可能生成有害/冒犯性文本。需评估具体用例风险。
本系列仅为英语模型,不适用于其他语言文本生成或翻译任务。
Pythia-1.4B未针对常见下游场景(如文体写作、商业聊天机器人)微调,其响应方式与ChatGPT等产品不同,后者采用RLHF等对齐方法优化指令跟随能力。
局限与偏差
大语言模型的核心功能是文本续写,其输出不一定具备事实准确性。切勿依赖Pythia-1.4B生成事实性内容。
训练数据the Pile包含不雅及冒犯性文本。如Pile论文第6章所述,数据存在性别、宗教、种族等方面的已知偏差。即使提示词无冒犯性,模型仍可能生成社会不可接受的文本。
建议通过Hosted Inference API生成文本时,由人工审核后再展示给他人,并声明文本由Pythia-1.4B生成。
快速开始
以下代码演示如何加载使用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-1.4B使用未去重版本训练。
训练流程
所有模型在相同数据上按相同顺序训练,共处理299,892,736,000个token。每2,097,152,000 token保存一个检查点(从step1000
到step143000
),另提供step0
和step{1,2,4...512}
早期检查点。非去重模型训练约1个epoch,去重模型约1.5个epoch。
所有Pythia模型以2M的批大小训练143000步。
训练细节见GitHub,使用与GPT-NeoX-20B相同的分词器。
评估
使用LM Evaluation Harness评估全部16个模型,结果见GitHub仓库的results/json/*
文件。
LAMBADA – OpenAI
物理交互问答(PIQA)
WinoGrande
AI2推理挑战赛-简单集
SciQ
变更日志
本部分对比此前发布的Pythia v0与当前版本的差异(详见论文附录B)。重新训练未影响基准性能:
- 统一采用2M token批大小(原160M/410M/1.4B模型为4M)
- 新增初始步骤(step 0)及{1,2,4...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 |