language:
en
tags:
pytorch
causal-lm
pythia
license: apache-2.0
datasets:
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-120亿参数模型
模型详情
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-125M
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-120亿进行微调与部署。Pythia模型兼容Hugging FaceTransformers库 。若基于预训练模型进行微调,请自行开展风险与偏见评估。
非适用场景
Pythia套件不 适用于生产部署。其本身并非产品,不可用于人机交互场景。例如,模型可能生成有害或冒犯性文本。请根据具体用例评估风险。
Pythia模型仅支持英语,不适用于翻译或其他语言文本生成。
Pythia-120亿未针对常见下游场景(如文体写作、商业聊天机器人)进行微调,因此其响应方式不同于 ChatGPT等产品。后者采用人类反馈强化学习(RLHF)等方法来更好地遵循人类指令。
局限与偏见
大语言模型的核心功能是预测文本序列的下一个标记,该预测不一定产生最"准确"的文本。切勿依赖Pythia-120亿生成事实准确的输出。
本模型训练数据the Pile 包含亵渎及低俗内容。参见Pile论文第6节 关于性别、宗教和种族偏见的讨论。即使提示词不含冒犯内容,Pythia-120亿仍可能生成不符合社会规范的文本。
若通过托管API使用生成文本,建议人工审核后再向他人展示。请告知受众文本由Pythia-120亿生成。
快速开始
以下代码演示如何加载使用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 是825GB规模的通用英语数据集,专为训练大语言模型构建。包含22个来源的文本数据,分为五类:学术文献(如arXiv)、互联网内容(如CommonCrawl)、散文(如古登堡计划)、对话(如YouTube字幕)及其他(如GitHub、安然邮件)。数据构成、方法论及伦理讨论详见Pile论文 。更多细节请查阅数据表 。数据集可从官网 或社区镜像 获取。
训练Pythia-120亿时未 对Pile进行去重处理。
训练方法
所有模型采用完全相同的训练数据和顺序。每个模型训练时处理了299,892,736,000个标记,保存143个检查点(从step1000
到step143000
,每2,097,152,000标记保存一次)。此外还提供早期密集检查点:step0
和step{1,2,4...512}
。这相当于在原始Pile上训练约1个epoch,在去重Pile上约1.5个epoch。
所有Pythia模型以200万标记的批大小训练143,000步。
训练流程详情见GitHub ,包括复现方法 。
Pythia使用与GPT-NeoX-200亿 相同的分词器。
评估结果
16个Pythia模型均通过LM评估工具包 进行评估。结果文件存放于GitHub仓库 的results/json/*
路径下。
点击下方区域查看Pythia与Pythia-deduped模型对比OPT、BLOOM的评估结果图表。
LAMBADA – OpenAI
物理交互问答(PIQA)
WinoGrande
AI2推理挑战赛-简单集
SciQ
版本变更
本节比较Pythia v0 与当前版本的差异。变更原因详见Pythia论文附录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