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数据集上训练。所有八种规模的模型均采用完全相同的训练数据和顺序进行训练。我们还为每个模型提供了154个中间检查点,以分支形式托管在Hugging Face平台。
Pythia模型套件专门为促进大语言模型(尤其是可解释性研究)的科研工作而设计。尽管未将下游性能作为核心设计目标,但我们发现这些模型在性能上达到或超越了同类规模模型(如OPT和GPT-Neo系列)。
早期版本与命名规范的说明
此前我们曾发布过Pythia套件的早期版本,但为了修正部分超参数差异,我们决定重新训练模型套件。本模型卡列出了具体变更内容,更多讨论请参阅Pythia论文附录B。两个版本的基准测试表现无显著差异。旧版模型仍可获取,但建议新用户使用重新训练的版本。
当前文档描述的是最新发布版本。
请注意,2023年1月我们对Pythia 系列所有模型进行了重命名。为便于对照,本模型卡提供了新旧名称对比表格及精确参数统计。
Pythia-28亿参数模型
模型详情
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-350M
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 1.3B, OPT-1.3B
28亿
2,517,652,480
32
2560
32
200万
1.6 × 10-4
GPT-Neo 2.7B, OPT-2.7B
69亿
6,444,163,072
32
4096
32
200万
1.2 × 10-4
OPT-6.7B
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-28亿进行微调与部署应用。该模型兼容Hugging Face的Transformers库。若基于预训练模型进行微调,请自行开展风险与偏见评估。
非适用场景
Pythia套件不 适用于生产部署,其本身并非产品级解决方案,不可用于人机交互场景。例如,模型可能生成有害或冒犯性文本。请根据具体用例评估相关风险。
Pythia系列仅为英语语言模型,不适用于其他语言的翻译或文本生成任务。
Pythia-28亿未针对常见下游应用场景(如文学创作、商业聊天机器人等)进行微调,因此其响应方式与ChatGPT等产品存在显著差异。后者通过人类反馈强化学习(RLHF)等方法来优化指令跟随能力。
局限性与偏见
大语言模型的核心功能是根据文本输入预测后续标记,其输出不一定具备事实准确性。切勿依赖Pythia-28亿生成事实性内容。
本模型训练数据the Pile 包含亵渎、低俗及其他冒犯性文本。关于性别、宗教和种族偏见的讨论详见Pile论文第6章。即使输入提示不含明显冒犯内容,模型仍可能生成不符合社会规范的文字。
若通过托管推理API等渠道使用生成文本,建议人工审核后再向他人展示。请向受众说明文本由Pythia-28亿生成。
快速入门
以下代码示例展示如何加载并使用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-28亿时未 对Pile进行去重处理。
训练配置
所有模型采用完全相同的训练数据和顺序。每个模型在训练过程中处理了299,892,736,000个标记,期间均匀保存143个检查点(从step1000
到step143000
,间隔2,097,152,000标记),其中step143000
对应main
分支。此外还提供早期密集检查点:step0
和step{1,2,4...512}
。这相当于在原始Pile上训练近1个周期,或在去重版Pile上训练约1.5个周期。
所有Pythia模型以200万标记的批大小训练143,000步。
训练流程详见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