pythia
Pythia 是 EleutherAI 推出的开源项目,旨在成为研究大型语言模型可解释性与学习动态的核心枢纽。它并非单一模型,而是一整套经过精心设计的自回归 Transformer 模型系列,专门用于揭示知识在训练过程中如何产生与演变。
针对现有模型套件难以支持深度机理研究的痛点,Pythia 提供了前所未有的透明度与复现性。其核心突破在于:所有模型均基于完全相同的数据顺序训练,并保留了多达 154 个训练检查点。这一独特设计让研究者能够像观看“延时摄影”一样,细致观察模型从随机初始化到成熟的全过程,从而进行因果干预分析和学习轨迹追踪。此外,项目公开了全部代码、数据及论文结果,确保每一项结论都可被独立验证。
Pythia 主要面向 AI 研究人员、算法工程师及对大模型内部机制感兴趣的开发者。无论是探究记忆涌现规律、分析训练稳定性,还是评估伦理风险,Pythia 都为这些前沿课题提供了坚实的基础设施。作为该领域的先驱,Pythia 的成功实践已激发了包括 OLMo 和 Amber 在内的多个后续开源项目,极大地推动了社区对大模型“黑盒”内部的探索进程。
使用场景
某 AI 安全研究团队正在深入调查大语言模型在训练过程中何时开始“死记硬背”敏感数据,以便设计干预机制防止隐私泄露。
没有 pythia 时
- 研究者只能获取模型的最终版本,如同只看电影结局而无法回放进度条,完全无法定位记忆形成的具体训练阶段。
- 由于缺乏统一数据和顺序的对照模型,难以区分是数据本身的问题还是随机初始化导致的差异,因果推断几乎不可能实现。
- 复现他人关于“学习动态”的论文极其困难,因为业界此前从未公开过如此密集的中间检查点,实验结果无法被独立验证。
- 针对百亿参数级别模型的研究被迫停滞,因为全球范围内可供分析的中间状态 checkpoint 总数甚至不如 pythia 单个模型提供的多。
使用 pythia 后
- 团队直接调用 pythia 提供的 154 个连续检查点,精确绘制出模型从“理解规律”到“机械记忆”的转折曲线,锁定了干预的最佳时间窗口。
- 利用相同数据和顺序训练的不同规模模型组,研究人员成功实施了因果干预实验,清晰证明了特定数据片段对记忆涌现的直接贡献。
- 基于完全开源的代码、数据和权重,团队在一周内就复现了顶会论文结果,并在此基础上快速迭代出了新的防御算法。
- 借助前所未有的细粒度中间状态数据,团队首次完成了对 12B 参数模型全生命周期的可解释性分析,填补了该领域的空白。
pythia 通过提供全透明、高密度的训练过程快照,将大模型研究从黑盒猜测变成了可精确观测和干预的科学实验。
运行环境要求
- 未说明
- 训练需多卡 NVIDIA GPU 支持混合精度 (fp16/bf16)
- 推理依赖 transformers 库,显存需求视模型大小而定 (14M-12B),大模型 (如 12B) 建议 24GB+ 显存
未说明 (训练需大量内存以支持 2M token batch size)

快速开始
Pythia:跨时间和规模的Transformer模型可解释性研究
本仓库是EleutherAI的Pythia项目,该项目结合了可解释性分析和规模定律,旨在理解自回归Transformer模型在训练过程中知识的发展与演变。有关模型、训练过程及其特性的详细信息,请参阅我们的论文《Pythia:一个用于分析大规模语言模型训练与规模效应的工具集》(https://arxiv.org/abs/2304.01373)。
Pythia工具集的开发初衷是为了支持可解释性、学习动态以及伦理与透明性方面的研究,而现有的模型工具集在这方面存在不足。Pythia工具集的主要特点包括:
- 论文中使用的所有模型、数据和代码均已公开发布,确保结果的完全可复现。我们论文中的所有结果均经过至少一个其他实验室的独立验证。
- 所有模型在训练过程中保存了154个检查点,便于研究大型语言模型的学习动态。
- 所有模型均基于相同的数据并按相同的顺序进行训练,使研究人员能够探索对训练过程的因果干预。
截至发布时,Pythia是全球唯一满足上述要求的模型工具集。事实上,我们为120亿参数模型发布的154个部分训练检查点,数量超过了当时全球其他机构为所有120亿+参数模型所发布的检查点总数。我们的工作启发了多个类似项目,包括LLM360的Amber和K2-65B、AI2的OLMo,以及Zyphra的BlackMamba。
除Pythia工具集本身外,本仓库还作为信息、代码及可复现性说明的中心,涵盖以下论文的相关内容:
更新日志
[2025年3月10日] 添加了PolyPythias论文的相关信息。
[2024年7月9日] 大幅更新了README文件,包括更完善的历史背景介绍,并展示了众多研究者利用Pythia开展的精彩工作。同时新增了后续训练模型的链接。
[2023年11月2日] 根据部分研究人员的要求,我们增加了1400万和3100万参数的模型。未来计划训练这些模型的去重版本。
[2023年4月3日] 我们发布了所有Pythia模型的新版本,修复了原始工具集中存在的多种不一致之处。具体更改详情请参见《Pythia论文》(https://arxiv.org/abs/2304.01373)附录B。旧版模型(“v0”)仍可在[此处](https://huggingface.co/models?other=pythia_v0)获取,可能适用于消融实验。
[2023年1月20日] 为与许多其他模型工具集保持一致,并认为该惯例更能反映这些模型的设备端内存占用情况,我们决定将Pythia模型工具集的命名方式调整为同时包含嵌入层和解嵌入层的参数,以计算总参数量。此外,我们还发现由于笔误,其中一款模型的实际参数量小于预期,已用目标参数量的模型进行了替换。更多详情请参见此处。
目录
模型
我们在 Pile 数据集(论文、数据表)以及去重后的 Pile 数据集上训练并发布了 8 种不同规模的模型系列。所有 8 种规模的模型均使用完全相同的数据,并按照完全相同的顺序进行训练。每种模型在训练过程中共处理了约 299,892,736,000 个 token,即接近 3000 亿个 token。对于“标准”模型而言,这相当于在 Pile 数据集中略少于 1 个 epoch;而对于去重后的 Pile 数据集,则约为 1.5 个 epoch(该数据集 1 个 epoch 包含 2070 亿个 token)。所有模型均采用混合精度训练,除 EleutherAI/pythia-1b 使用 bf16 外,其余模型均使用 fp16。这是因为 pythia-1b 在 fp16 训练时,于训练后期出现了无法弥合的损失激增。
在首次发布之后,应关注稀疏自编码器扩展的研究人员的要求,我们又训练了 1400 万和 3100 万参数的模型。
| 参数量 | 层数 | 模型维度 (d_{\text{model}}) | 注意力头数 (n_{\text{heads}}) | 每个注意力头的维度 (d_{\text{head}}) | 批量大小 | 学习率 | Hugging Face 检查点 |
|---|---|---|---|---|---|---|---|
| 14M | 6 | 128 | 4 | 32 | 2M | 1.0e-3 | 标准 |
| 31M | 6 | 256 | 8 | 32 | 2M | 1.0e-3 | 标准 |
| 70M | 6 | 512 | 8 | 64 | 2M | 1.0e-3 | 标准, 去重版 |
| 160M | 12 | 768 | 12 | 64 | 2M | 6.0e-4 | 标准, 去重版 |
| 410M | 24 | 1024 | 16 | 64 | 2M | 3.0e-4 | 标准, 去重版 |
| 1B | 16 | 2048 | 8 | 256 | 2M | 3.0e-4 | 标准, 去重版 |
| 1.4B | 24 | 2048 | 16 | 128 | 2M | 2.0e-4 | 标准, 去重版 |
| 2.8B | 32 | 2560 | 32 | 80 | 2M | 1.6e-4 | 标准, 去重版 |
| 6.9B | 32 | 4096 | 32 | 128 | 2M | 1.2e-4 | 标准, 去重版 |
| 12B | 36 | 5120 | 40 | 128 | 2M | 1.2e-4 | 标准, 去重版 |
为了促进对大型语言模型学习动态的研究,我们为每个模型提供了 154 个检查点,分别对应第 0 步(初始化)、第 1 步、第 2 步、第 4 步、第 8 步、第 16 步、第 32 步、第 64 步、第 128 步、第 256 步、第 512 步、第 1000 步,以及之后每 1000 步的一个检查点。我们还上传了所有模型的预分词数据文件以及用于重建训练期间所见数据加载器的脚本。更多详情请参阅“重现训练”部分。
用于使用 GPT-NeoX 库 训练这些模型的配置文件,可在本仓库的 models/ 目录中找到,也可在 GPT-NeoX 库本身中找到。
我们在最初训练这些模型时犯了一个错误,导致不同运行之间存在一些不一致之处。我们随后重新运行了整个模型系列,修复了这些不一致问题,原始运行则以 EleutherAI/pythia-160m-v0 的名称提供。有关 v0 版本模型与主系列有何不同的详细信息,请参阅 Pythia 论文。
所有模型的损失曲线都包含在我们混乱的 wandb 项目中:这里。
模型与 wandb 运行之间的大致对应关系如下:
| 模型 | Wandb |
|---|---|
| Pythia-2.8b | 链接 |
| Pythia-2.8b-deduped | 链接 |
| Pythia-1b | 链接 |
| Pythia-1.4b | 链接 |
| Pythia-1.4b-deduped | 链接 |
| Pythia-160m | 链接 |
| Pythia-160m-deduped | 链接 |
多个随机种子
用于训练 Pythia 模型的随机种子是 GPT-NeoX 的默认值:1234。为了支持研究随机性如何影响模型行为,我们又使用不同的随机种子训练了更多模型。目前,我们已使用从 1 到 9 的每个随机种子训练并发布了以下模型:
- Pythia 14M
- Pythia 31M
- Pythia 70M
- Pythia 160M
- Pythia 410M
所有这些模型均为“标准”版本的 Pythia,而非在去重后的 Pile 数据集上训练的版本。结合最初发布的模型,它们构成了十种使用不同随机种子但其他方面完全相同的变体。您可以在 Hugging Face 上通过命名模式 https://huggingface.co/EleutherAI/pythia-[size]-seed[num] 找到这些模型。例如,https://huggingface.co/EleutherAI/pythia-160m-seed7。请注意,使用随机种子 1234 训练的模型在其 URL 中并未指定种子编号。
跨多个随机种子复制小型 Pythia 模型的运行记录位于:https://wandb.ai/eleutherai/pythia-extra-seeds
更正
如 此 issue 所述,由于配置文件中未指定初始化值,6.9B 和 12B 模型意外地使用了不同的初始化方法。
使用 Pythia
快速入门
所有 Pythia 模型都托管在 Hugging Face 模型库 上。可以通过以下代码加载并使用它们(以 3000 步的 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)
print(tokenizer.decode(tokens[0]))
所有模型均以 2,097,152 个标记为批次大小,训练了相当于 143,000 步的内容。分支 step143000 完全对应于每个模型在 main 分支上的模型检查点。
此外,我们还以 GPT-NeoX 库 接受的格式提供了所有模型检查点,最终步数的检查点及优化器状态可从 Hugging Face 模型库的 EleutherAI/neox-ckpt-pythia-xxx-deduped-v1 下载。但由于优化器状态文件体积较大且预计需求较低,我们并未大规模提供所有步骤的优化器状态。如果您希望在 GPT-NeoX 代码库中使用中间模型进行分析,或需要其他步骤的优化器状态,请发送邮件至 hailey@eleuther.ai 和 stella@eleuther.ai。
❗ Hugging Face 上的
pythia-{size}-v0模型(尺寸为160m、410m、1.4b)以 400 万个标记为批次大小,训练了 71,500 步,每 500 步保存一次检查点。这些 v0 模型在 Hugging Face 上的步数名称已更改为与所有 200 万批次模型保持一致,因此pythia-1.4b-v0中标记为step1000的模型检查点实际上对应的是第 500 步,但其处理的标记数量与其他step1000检查点相同。
重现训练
(由 @BaruchG 提供的扩展重现说明)。
我们提供了用于复现训练过程的训练数据。GPT-NeoX 库 需要预先分词的训练数据,形式为两个内存映射的 NumPy 数组:.bin 和 .idx 文件。我们通过 Hugging Face 模型库提供这些文件。要下载并使用去重后的 Pile 训练数据:
git lfs clone https://huggingface.co/datasets/EleutherAI/pythia_deduped_pile_idxmaps
# 可选:为确保文件未损坏
python utils/checksum_shards.py
python utils/unshard_memmap.py --input_file ./pythia_deduped_pile_idxmaps/pile_0.87_deduped_text_document-00000-of-00082.bin --num_shards 83 --output_dir ./pythia_pile_idxmaps/
# 整个文件的正确 sha256 值为 0cd548efd15974d5cca78f9baddbd59220ca675535dcfc0c350087c79f504693
# 可以使用 sha256sum ./pythia_pile_idxmaps/* 来校验
这将需要超过一天的时间来运行,但应该不会占用超过 5 GB 的内存。我们建议下载此数据集,而不是从头开始对 Pile 数据重新分词,以确保保留 Pythia 模型所见的数据顺序。除了训练数据之外,您还需要本地复制我们用于训练模型的分词器。您可以在这里找到它。
接下来,您需要设置训练环境:
git clone https://github.com/EleutherAI/gpt-neox.git
cd gpt-neox
git checkout v1.0
pip install -r requirements/requirements-flashattention.txt
wget https://github.com/EleutherAI/pythia/blob/main/models/160M/pythia-160m-deduped.yml
docker build -t pythia:latest .
容器构建完成后,使用以下命令运行容器(从 GPT-NeoX 仓库的根目录启动,确保您的 pythia yaml 文件在该目录下可访问):
docker run --runtime=nvidia --rm -it -e NVIDIA_VISIBLE_DEVICES=0,1,2,3 --shm-size=1g --ulimit memlock=-1 --mount type=bind,src=$PWD,dst=/gpt-neox -v $(pwd):/workspace/ pythia:latest bash
如果数据集和 YAML 文件无法在 Docker 容器内访问,可以使用 -v 参数挂载更多卷。
请按如下方式修改数据路径和分词器路径:
"train-data-paths": ["/fsx/pile/pile_20B_tokenizer_text_document"], # 指向步骤 1 中生成的包含 .bin 和 .idx 文件的文件夹
"valid-data-paths": ["/fsx/pile/pile_20B_tokenizer_text_document"], # 指向步骤 1 中生成的包含 .bin 和 .idx 文件的文件夹
"test-data-paths": ["/fsx/pile/pile_20B_tokenizer_text_document"], # 指向步骤 1 中生成的包含 .bin 和 .idx 文件的文件夹
"tokenizer-type": "HFTokenizer",
"vocab-file": "/fsx/pile/20B_tokenizer.json", # 指向步骤 2 中获取的分词器
根据您可用的显存大小,可能需要调整批量大小。总批量大小的计算公式为 Total GPUs * train_micro_batch_size_per_gpu * gradient_accumulation_steps / (pipe-parallel-size * model-parallel-size),需保持为 1024,以匹配 Pythia 的训练批量大小。因此您需要:
"train_micro_batch_size_per_gpu": XXX, # 设置一个适合您 GPU 显存的值
"gradient_accumulation_steps": 1, # 调整此值以使总批量大小达到 1024。
如果您希望保存模型权重,也可以在 YAML 文件中添加相关配置。例如,要将模型保存到 checkpoints 文件夹,可以在文件末尾添加:
"launcher": "slurm",
"deepspeed_slurm": false,
"save": "checkpoints",
"load": "checkpoints",
"checkpoint_validation_with_forward_pass": False,
}
请确保路径是 Docker 容器内的路径;如果希望权重能够持久化,请确保它们可以从容器外部访问,例如放在 /workspace/ 目录下。
现在您可以开始训练模型了,运行以下命令:
python deepy.py train.py pythia-160m-deduped.yml 2>&1 | tee output.txt
输出将被保存到 output.txt 文件中,如果您不需要保存输出,可以删除结尾部分。
为了将您的模型转换为 Hugging Face transformers 格式,可以使用 GPT-NeoX 库中的脚本 tools/convert_to_hf.py。您可能需要在文件顶部添加 from typing import List,并将此处的类型从 list[torch.Tensor] 改为 List[torch.Tensor]。然后您可以运行以下命令来转换第 143000 步的权重:
python tools/convert_to_hf.py --input_dir checkpoints/global_step143000/ --config_file checkpoints2/global_step 143000/configs/pythia-70m.yml --output_dir ./output/
这将生成一个与 https://huggingface.co/EleutherAI/pythia-70m-deduped/tree/main 类似的文件结构。
❗ 有时人们会发现最终得到的分词器并不正确,而我们目前尚无法调试出原因。如果您的
tokenizer_config.json与这里的不一致,且special_tokens_map.json也与这里的不同,则可能需要将其替换为 Hugging Face 上的版本。
要使用我们的评估库进行评估,请安装这里的容器(已测试过 4.28 和 4.29 版本)。设置好 Docker 容器后,执行以下操作:
git clone https://github.com/EleutherAI/lm-evaluation-harness
cd lm-evaluation-harness
pip install -e .
如 Harness 仓库中的说明所示。随后,您就可以通过指向您的模型权重(应在容器内)来运行基准测试,命令类似于:
python3 main.py --model hf-causal-experimental --model_args pretrained=../gpt-neox/output/ --tasks lambada_openai,piqa,winogrande,arc_easy,sciq,wikitext --device cuda:0
数据集探索
我们提供了一个工具,用于查看所有模型在训练过程中使用的训练数据加载器中的特定部分,该工具位于 utils/batch_viewer.py。
首先,我们需要克隆 Pythia 仓库:
git clone https://github.com/EleutherAI/pythia
接下来,我们必须安装依赖项:
pip install torch==1.13.0+cu117 -f https://download.pytorch.org/whl/torch/
pip install numpy tqdm huggingface_hub
然后,我们需要下载相应的数据集。我们提供了重复和去重后的 Pile 数据集的预打乱版本。可以使用 Hugging Face 的工具按如下方式下载合适的版本:
提示:请确保将
path/to/*替换为你打算保存从 Hugging Face 下载的数据集的适当路径。
- 要下载标准版本,使用以下代码:
from huggingface_hub import hf_hub_download hf_hub_download(repo_id="EleutherAI/pile-standard-pythia-preshuffled", repo_type="dataset", cache_dir="path/to/local/folder") - 要下载去重版本,使用以下代码:
from huggingface_hub import hf_hub_download hf_hub_download(repo_id="EleutherAI/pile-deduped-pythia-preshuffled", repo_type="dataset", cache_dir="path/to/local/folder")
现在,你可以使用脚本 utils/unshard_memmap.py 来合并文件:
python3 utils/unshard_memmap.py --input_file "path/to/local/folder/document-00000-of-00020.bin" --num_shards 21 --output_dir "path/to/merged/folder/"
同时,别忘了将索引文件复制到合并后的文件夹中,使用以下命令:
cp path/to/local/folder/document.idx path/to/merged/folder/document.idx
现在,我们已经准备好运行 utils/batch_viewer.py 了!
python3 utils/batch_viewer.py \
--start_iteration 0 \
--end_iteration 1000 \
--load_path path/to/merged/folder/document \
--save_path path/to/save/folder/ \
--conf_dir utils/dummy_config.yml
这将会保存一个单独的文件,其中包含所有的索引,以 NumPy 数组的形式存储。
之后,你可以使用 NumPy 加载这些索引:
import numpy as np
indicies = np.load("path/to/save/folder/indicies.npy")
这些索引包含了大小为 (None, 2049) 的整数标记序列,其中每个整数对应一个唯一的标记索引。
请注意,文档是被连接在一起的,并且由一个 EOD 标记分隔。因此,每个样本或批次可能并不以 EOD 标记开始。在训练过程中,目标标记会被左移一位。因此,对于一个序列长度为 2048 的模型来说,需要 2049 长度的序列来进行训练(更多信息请参阅 此评论)。
Pythia 论文复现
我们为那些有兴趣复现 Pythia 系列论文中案例研究的人,在本仓库的 case-studies/ 文件夹中提供了进一步的信息。
基准测试分数
我们还提供了在多种 NLP 数据集上的零样本和五样本基准测试结果:
- ARC-challenge (
arc_challenge) - ARC-easy (
arc_easy) - BLiMP (
blimp_*) - Lambada (
lambada_openai) - LogiQA (
logiqa) - MMLU (
hendrycksTest*) - PiQA (
piqa) - SciQ (
sciq) - Wikitext (
wikitext) - Winogrande (
winogrande) - WSC (
wsc)
评估是在 GPT-NeoX 中使用 LM Evaluation Harness 进行的,并且可以在本仓库的 evals/pythia-v1/*/* 目录下按模型和步骤查看。警告: 所有评估都是在语言模型评估工具包的“待办”提交版本上进行的,距今已有近一年时间,因此可能无法用当前版本重现。
基于 Pythia 的研究
我们开展 Pythia 项目的主要目的是为了促进 EleutherAI 及更广泛社区内关于可解释性、学习动态等主题的研究。在此,我们记录了一些使用我们模型的研究论文,重点介绍了那些因 Pythia 系列而得以实现,而在其他组织发布的模型上则难以甚至不可能完成的工作。如需查看更多引用 Pythia 的论文,请参阅 此处。
语言模型内部机制
- Belrose 等人:“通过调优后的镜头从 Transformer 模型中提取潜在预测”。arXiv 预印本 arXiv:2303.08112(2023年)。EleutherAI 论文
- Brown 等人:“通过表示差异性理解语言模型的内部运作”。自然语言处理经验方法会议(2023年)。
- Feng 和 Steinhardt:“语言模型如何在上下文中绑定实体?”。国际学习表征会议(2023年)。
- Garde、Kran 和 Barez:“DeepDecipher:访问并研究大型语言模型中的神经元激活情况”。arXiv 预印本 arXiv:2310.01870(2023年)。
- Gurnee 等人:“在干草堆中寻找神经元:稀疏探测案例研究”。机器学习研究汇刊(2023年)。
- Stolfo、Belinkov 和 Sachan:“利用因果中介分析理解语言模型中的算术推理”。自然语言处理经验方法会议(2023年)。
学习动力学
- Gupta 等人:“大型语言模型的持续预训练:如何重新“暖机”你的模型?”(2023)。ICML 基础模型高效系统研讨会。
- 米哈伊洛夫和伯根:“涌现的无能?预训练过程中的反向缩放现象”(2023)。计算语言学协会会议成果:EMNLP。
- 桑亚尔等人:“理解早期权重平均在训练大型语言模型中的有效性”(2023)。arXiv 预印本 arXiv:2306.03241。
- 田等人:“JoMA:通过 MLP 和注意力机制的联合动态揭秘多层 Transformer”(2023)。arXiv 预印本 arXiv:2310.00535。
- 叶等人:“语言多面手与专家:关于多语言迁移能力的实证再探讨”(2023)。arXiv 预印本 arXiv:2306.06688。
- 贝尔罗斯等人:“神经网络学习日益复杂的统计规律”(2024)。国际表示学习大会。EleutherAI 论文
- 戈代等人:“为什么小型语言模型表现欠佳?通过 Softmax 瓶颈研究语言模型饱和现象”(2024)。arXiv 预印本 arXiv:2404.07647。
- 辛格等人:“神经网络优化轨迹的特征:方向性探索与冗余性”(2024)。arXiv 预印本 arXiv:2403.07379。
- 蒂格斯等人:“语言模型机制在不同训练阶段和规模下的稳定性和泛化能力”(2024)。ICML 机制可解释性研讨会。EleutherAI 论文
- 迪尔·马丁内斯等人:“趋向稳定:小型语言模型的收敛挑战”(2024)。计算语言学协会会议成果:EMNLP。
训练数据如何决定模型行为
- 罗杰:“大型语言模型有时会生成完全由负强化驱动的文本”(2023)。arXiv 预印本 arXiv:2306.07567。
- 奥等人:“频率可以解释大型语言模型的规模、训练数据量与 surprisal 对阅读时间拟合度之间的负相关关系”(2024)。arXiv 预印本 arXiv:2402.02255。
- 刘等人:“关于 GPT 模型训练数据的影响”(2024)。arXiv 预印本 arXiv:2404.07840。
- 莱西等人:“记忆模式的因果估计”(2024)。计算语言学协会。
安全、审计与合规研究
- 伊波利托等人:“在仅能黑盒访问语言生成系统的情况下,逆向工程解码策略”(2023)。国际自然语言生成会议。
- 比德曼等人:“大型语言模型中涌现且可预测的记忆现象”(2023)。神经信息处理系统会议。EleutherAI 论文
- 崔、沙维特和杜文诺:“验证神经网络训练数据的工具”(2023)。神经信息处理系统会议。
- 李等人:“MoPe:基于模型扰动的语言模型隐私攻击”(2023)。自然语言处理经验方法会议。
- 闵等人:“SILO 语言模型:在非参数化数据存储中隔离法律风险”(2024)。国际表示学习大会。
- 波韦尔奇克等人:“机器遗忘无法清除数据污染攻击”(2024)。arXiv 预印本 arXiv:2406.17216。
- 普拉桑特等人:“背诵、重建、回忆:LM 中的记忆是一种多面向的现象”(2024)。arXiv 预印本 arXiv:2406.17746。EleutherAI 论文
- 段等人:“成员身份推断攻击对大型语言模型有效吗?”(2024)。语言建模会议。
引用详情
如果您在研究中使用 Pythia 模型,请通过以下方式引用我们的论文:
@inproceedings{biderman2023pythia,
title={Pythia: 一套用于分析大规模语言模型训练与规模扩展的工具集},
author={Biderman, Stella 和 Schoelkopf, Hailey 和 Anthony, Quentin Gregory 和 Bradley, Herbie 和 O’Brien, Kyle 和 Hallahan, Eric 和 Khan, Mohammad Aflah 和 Purohit, Shivanshu 和 Prashanth, USVSN Sai 和 Raff, Edward 等},
booktitle={国际机器学习大会},
pages={2397--2430},
year={2023},
organization={PMLR}
}
如果您使用本仓库中其他论文的数据或结果,请引用相应的论文。引用信息可在各自的 README 文件中找到,为方便起见,也在此列出如下:
@inproceedings{biderman2023emergent,
title={大型语言模型中的涌现式与可预测性记忆},
author={Biderman, Stella 和 Prashanth, USVSN Sai 和 Sutawika, Lintang 和 Schoelkopf, Hailey 和 Anthony, Quentin 和 Purohit, Shivanshu 和 Raff, Edward},
booktitle={神经信息处理系统进展},
year={2023}
}
@inproceedings{van2025polypythias,
title={PolyPythias:五十次语言模型预训练运行中的稳定性与异常值},
author={van der Wal, Oskar 和 Lesci, Pietro 和 M{\"u}ller-Eberstein, Max 和 Saphra, Naomi 和 Schoelkopf, Hailey 和 Zuidema, Willem 和 Biderman, Stella},
booktitle={{第十三届国际学习表示会议}},
year={2025}
如果您希望引用我们的训练数据、训练库或评估库,可以使用以下引用:
@article{gao2020pile,
title={The Pile:一个用于语言建模的800GB多样化文本数据集},
author={Gao, Leo 和 Biderman, Stella 和 Black, Sid 和 Golding, Laurence 和 Hoppe, Travis 和 Foster, Charles 和 Phang, Jason 和 He, Horace 和 Thite, Anish 和 Nabeshima, Noa 等},
journal={arXiv 预印本 arXiv:2101.00027},
year={2020}
}
@article{biderman2022datasheet,
title={The Pile 数据表},
author={Biderman, Stella 和 Bicheno, Kieran 和 Gao, Leo},
journal={arXiv 预印本 arXiv:2201.07311},
year={2022}
}
@software{gpt-neox-library,
title = {{GPT-NeoX:基于 PyTorch 的大规模自回归语言建模}},
author = {Andonian, Alex 和 Anthony, Quentin 和 Biderman, Stella 和 Black, Sid 和 Gali, Preetham 和 Gao, Leo 和 Hallahan, Eric 和 Levy-Kramer, Josh 和 Leahy, Connor 和 Nestler, Lucas 和 Parker, Kip 和 Pieler, Michael 和 Phang, Jason 和 Purohit, Shivanshu 和 Schoelkopf, Hailey 和 Stander, Dashiell 和 Songz, Tri 和 Tigges, Curt 和 Thérien, Benjamin 和 Wang, Phil 和 Weinbach, Samuel},
url = {https://www.github.com/eleutherai/gpt-neox},
doi = {10.5281/zenodo.5879544},
month = {9},
year = {2023},
version = {2.0.0},
}
@misc{eval-harness,
author = {Gao, Leo 和 Tow, Jonathan 和 Abbasi, Baber 和 Biderman, Stella 和 Black, Sid 和 DiPofi, Anthony 和 Foster, Charles 和 Golding, Laurence 和 Hsu, Jeffrey 和 Le Noac'h, Alain 和 Li, Haonan 和 McDonell, Kyle 和 Muennighoff, Niklas 和 Ociepa, Chris 和 Phang, Jason 和 Reynolds, Laria 和 Schoelkopf, Hailey 和 Skowron, Aviya 和 Sutawika, Lintang 和 Tang, Eric 和 Thite, Anish 和 Wang, Ben 和 Wang, Kevin 和 Zou, Andy},
title = {一种用于少样本语言模型评估的框架},
month = sep,
year = 2021,
publisher = {Zenodo},
version = {v0.0.1},
doi = {10.5281/zenodo.5371628},
url = {https://doi.org/10.5281/zenodo.5371628}
}
许可证
以下许可证适用于本 GitHub 仓库中的所有代码,以及 Pythia 模型和本仓库中包含的任何其他受版权保护的成果。
版权归 2024 年 EleutherAI 所有
根据 Apache 许可证第 2.0 版(“许可证”)授权;除非遵守该许可证,否则不得使用本文档。
您可以在以下网址获取许可证副本:
http://www.apache.org/licenses/LICENSE-2.0
除非适用法律要求或书面同意,否则根据本许可证分发的软件以“按原样”提供,不附带任何形式的保证或条件。
有关特定语言的权限和限制,请参阅许可证文件。
常见问题
相似工具推荐
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
NextChat
NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
ragflow
RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。
PaddleOCR
PaddleOCR 是一款基于百度飞桨框架开发的高性能开源光学字符识别工具包。它的核心能力是将图片、PDF 等文档中的文字提取出来,转换成计算机可读取的结构化数据,让机器真正“看懂”图文内容。 面对海量纸质或电子文档,PaddleOCR 解决了人工录入效率低、数字化成本高的问题。尤其在人工智能领域,它扮演着连接图像与大型语言模型(LLM)的桥梁角色,能将视觉信息直接转化为文本输入,助力智能问答、文档分析等应用场景落地。 PaddleOCR 适合开发者、算法研究人员以及有文档自动化需求的普通用户。其技术优势十分明显:不仅支持全球 100 多种语言的识别,还能在 Windows、Linux、macOS 等多个系统上运行,并灵活适配 CPU、GPU、NPU 等各类硬件。作为一个轻量级且社区活跃的开源项目,PaddleOCR 既能满足快速集成的需求,也能支撑前沿的视觉语言研究,是处理文字识别任务的理想选择。
awesome-machine-learning
awesome-machine-learning 是一份精心整理的机器学习资源清单,汇集了全球优秀的机器学习框架、库和软件工具。面对机器学习领域技术迭代快、资源分散且难以甄选的痛点,这份清单按编程语言(如 Python、C++、Go 等)和应用场景(如计算机视觉、自然语言处理、深度学习等)进行了系统化分类,帮助使用者快速定位高质量项目。 它特别适合开发者、数据科学家及研究人员使用。无论是初学者寻找入门库,还是资深工程师对比不同语言的技术选型,都能从中获得极具价值的参考。此外,清单还延伸提供了免费书籍、在线课程、行业会议、技术博客及线下聚会等丰富资源,构建了从学习到实践的全链路支持体系。 其独特亮点在于严格的维护标准:明确标记已停止维护或长期未更新的项目,确保推荐内容的时效性与可靠性。作为机器学习领域的“导航图”,awesome-machine-learning 以开源协作的方式持续更新,旨在降低技术探索门槛,让每一位从业者都能高效地站在巨人的肩膀上创新。