语言:
英语
标签:
pytorch
因果语言模型
pythia
许可证: apache-2.0
数据集:
EleutherAI/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-160M
模型详情
Pythia模型
非嵌入参数量
层数
模型维度
头数
批大小
学习率
等效模型
70M
18,915,328
6
512
8
2M
1.0 x 10-3
—
160M
85,056,000
12
768
12
2M
6.0 x 10-4
GPT-Neo 125M, OPT-125M
410M
302,311,424
24
1024
16
2M
3.0 x 10-4
OPT-350M
1.0B
805,736,448
16
2048
8
2M
3.0 x 10-4
—
1.4B
1,208,602,624
24
2048
16
2M
2.0 x 10-4
GPT-Neo 1.3B, OPT-1.3B
2.8B
2,517,652,480
32
2560
32
2M
1.6 x 10-4
GPT-Neo 2.7B, OPT-2.7B
6.9B
6,444,163,072
32
4096
32
2M
1.2 x 10-4
OPT-6.7B
12B
11,327,027,200
36
5120
40
2M
1.2 x 10-4
—
Pythia套件 工程细节。同规模去重与非去重模型具有相同超参数。"等效"模型具有完全一致 的架构和非嵌入参数量
用途与限制
预期用途
Pythia主要面向大语言模型行为、功能及局限性的科学研究。该套件旨在为科学实验提供受控环境。我们为每个模型提供154个检查点:初始step0
、10个对数间隔检查点step{1,2,4...512}
,以及从step1000
到step143000
均匀分布的143个检查点。这些检查点以分支形式托管于Hugging Face。注意143000
分支对应各模型main
分支的最终检查点。
您可根据Apache 2.0许可证对Pythia-160M进行微调部署。Pythia模型兼容Hugging FaceTransformers库 。若基于预训练模型进行微调,请自行开展风险与偏见评估。
非适用场景
Pythia套件不 适用于生产部署。其本身并非产品,不可用于人机交互。例如,模型可能生成有害或冒犯性文本。请评估具体用例风险。
Pythia模型仅支持英语,不适用于翻译或其他语言文本生成。
Pythia-160M未针对流派文本创作、商业聊天机器人等下游场景进行微调。因此其响应方式不同于 ChatGPT等产品。后者通过人类反馈强化学习(RLHF)等方法来更好地"遵循"人类指令。
局限与偏见
大语言模型的核心功能是预测文本序列的下一个token。模型选择的token未必产生最"准确"的文本。切勿依赖Pythia-160M输出事实准确内容。
该模型训练数据the Pile 包含亵渎及低俗内容。Pile论文第6节 讨论了关于性别、宗教和种族的已知偏见。即使提示词不含冒犯内容,Pythia-160M仍可能生成社会不可接受的文本。
若通过托管API使用生成文本,建议人工审核后再向他人展示。请告知受众文本由Pythia-160M生成。
快速开始
以下代码演示如何加载使用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("Hello, I am" , return_tensors="pt" )
tokens = model.generate(**inputs)
tokenizer.decode(tokens[0 ])
step143000
分支对应各模型main
分支的最终检查点。
更多使用说明参见GitHub文档 。
训练
训练数据
The Pile 是825GiB的通用英语数据集,专为训练大语言模型而创建。包含来自22个不同来源的文本,可分为五类:学术文献(如arXiv)、互联网内容(如CommonCrawl)、散文(如古登堡计划)、对话(如YouTube字幕)和杂项(如GitHub、安然邮件)。详见Pile论文 的数据源构成、方法论及伦理讨论。数据表 提供更详细文档。数据集可从官网 或社区镜像 下载。
训练Pythia-160M时未 对Pile进行去重处理。
训练流程
所有模型采用完全相同的训练数据和顺序。每个模型训练过程中处理299,892,736,000个token,保存143个检查点(每2,097,152,000个token保存一次),均匀分布在step1000
至step143000
(等同于main
分支)。额外提供早期检查点:step0
和step{1,2,4...512}
。这相当于在原始Pile上训练约1个epoch,在去重Pile上约1.5个epoch。
所有Pythia 模型以200万token的批大小训练143000步。
训练流程详见GitHub ,包括复现方法 。
Pythia使用与GPT-NeoX-20B 相同的分词器。
评估
所有16个Pythia 模型均通过LM评估工具 测试。评估结果按模型和步骤保存在GitHub仓库 的results/json/*
路径下。
展开下方章节查看Pythia、Pythia去重版与OPT、BLOOM的评估对比图。
LAMBADA – OpenAI
物理交互问答(PIQA)
WinoGrande
AI2推理挑战赛-简易版
SciQ
变更日志
本节比较此前发布的Pythia v0 与当前版本的差异。更多讨论参见Pythia论文附录B。重新训练未影响基准性能表现。
所有模型现统一采用200万token批大小(原160M/410M/1.4B模型为400万)
新增初始化检查点(step 0)及步骤{1,2,4,8,16,32,64,128,256,512}检查点
新版套件使用Flash Attention
修正学习率调度不一致问题:原版2.8B及以下模型学习率衰减至初始值10%,而6.9B/12B模型衰减至0。新版统一调整为衰减至最大学习率的10%
命名规范与参数量
2023年1月Pythia 模型完成重命名。旧命名可能仍存在于部分文档中。现行命名(70M/160M等)基于总参数量。
当前后缀
旧后缀
总参数量
非嵌入参数量
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