语言:
- 英语
标签:
- 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-4.1亿参数模型
模型详情
Pythia模型 |
非嵌入参数 |
层数 |
模型维度 |
注意力头 |
批大小 |
学习率 |
等效模型 |
7000万 |
18,915,328 |
6 |
512 |
8 |
200万 |
1.0e-3 |
— |
1.6亿 |
85,056,000 |
12 |
768 |
12 |
200万 |
6.0e-4 |
GPT-Neo 125M, OPT-125M |
4.1亿 |
302,311,424 |
24 |
1024 |
16 |
200万 |
3.0e-4 |
OPT-350M |
10亿 |
805,736,448 |
16 |
2048 |
8 |
200万 |
3.0e-4 |
— |
14亿 |
1,208,602,624 |
24 |
2048 |
16 |
200万 |
2.0e-4 |
GPT-Neo 1.3B, OPT-1.3B |
28亿 |
2,517,652,480 |
32 |
2560 |
32 |
200万 |
1.6e-4 |
GPT-Neo 2.7B, OPT-2.7B |
69亿 |
6,444,163,072 |
32 |
4096 |
32 |
200万 |
1.2e-4 |
OPT-6.7B |
120亿 |
11,327,027,200 |
36 |
5120 |
40 |
200万 |
1.2e-4 |
— |
Pythia套件工程细节。同规模去重与非去重模型超参数相同。"等效"模型指具有完全一致的架构和非嵌入参数量。
用途与限制
预期用途
Pythia主要面向大语言模型行为、功能及局限性的研究。该套件旨在为科学实验提供受控环境。我们为每个模型提供154个检查点:初始step0
、10个对数间隔检查点step{1,2,4...512}
,以及从step1000
到step143000
的143个均匀间隔检查点。这些检查点以分支形式托管在Hugging Face平台。注意143000
分支对应各模型main
分支的最终检查点。
用户可根据Apache 2.0许可证对Pythia-4.1亿进行微调部署。使用Hugging Face Transformers库时,请自行进行风险与偏见评估。
非适用场景
Pythia套件不适用于生产部署。其本身并非产品,不能用于人机交互场景。例如,模型可能生成有害或冒犯性文本。请根据具体用例评估风险。
Pythia仅支持英语,不适用于翻译或其他语言文本生成。
Pythia-4.1亿未针对写作辅助、商业聊天机器人等下游场景进行微调,因此其响应方式与ChatGPT等产品不同。后者采用了RLHF等方法来优化指令跟随能力。
局限性与偏见
大语言模型的核心功能是预测文本序列的下一个token,其输出不一定具备事实准确性。切勿依赖Pythia-4.1亿生成事实性内容。
该模型训练数据the Pile包含亵渎、淫秽等冒犯性内容。数据集中存在已知的性别、宗教和种族偏见(详见Pile论文第6章)。即使提示词不含冒犯内容,模型仍可能生成社会不可接受的文本。
若通过托管API使用生成文本,建议人工审核后再公开。请向受众说明文本由Pythia-4.1亿生成。
快速开始
以下代码演示如何加载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个来源的数据(详见Pile论文)。训练Pythia-4.1亿时未对数据进行去重处理。
训练过程
所有模型使用相同数据和训练顺序。每个模型训练时处理2999亿token,每处理20.97亿token保存一个检查点(从step1000
到step143000
共143个),另提供step0
和step{1,2,4...512}
等早期检查点。非去重模型训练约1个epoch,去重模型约1.5个epoch。
所有Pythia模型以200万token的批大小训练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万token批大小(原160M/410M/1.4B模型为400万)
- 新增初始化检查点(step0)及step{1,2,4...512}检查点
- 新版本使用Flash Attention
- 统一学习率衰减策略:所有模型现均衰减至最大学习率的10%(原6.9B/12B模型衰减至0)
命名规范与参数统计
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 |