gpt-neo
用 mesh-tensorflow 实现的开源 GPT-3 风格模型,提供 125M~2.7B 规模预训练权重,HuggingFace 可直接加载
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
用 mesh-tensorflow 实现的开源 GPT-3 风格模型,提供 125M~2.7B 规模预训练权重,HuggingFace 可直接加载
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
2020 年 夏末,OpenAI 发布了 GPT-3 的论文,1750 亿参数、强大的少样本学习能力让整个 AI 社区瞠目结舌。然而,OpenAI 选择了闭源——开发者只能通过付费 API 调用,无法查看权重、无法微调、无法本地部署。一时间,全球研究者只能对着论文干瞪眼。
EleutherAI 的三位年轻人 Connor Holmes、Sidney Hsu 和 Stella Biderman 决定做一件当时听起来近乎疯狂的事:用开源复现 GPT-3。他们组建了同名组织 "EleutherAI",于 2020 年 7 月启动了 GPT-Neo 项目。2021 年 3 月,他们正式发布了在 "The Pile" 数据集上训练的 GPT-Neo 1.3B 和 2.7B 模型权重,向全世界免费开放下载。
这一刻的意义远超技术本身——它证明了"大模型不是只有巨头的专利",成为了开源 LLM 运动的精神图腾,也为后来 LLaMA、Mistral 等百花齐放的局面埋下了伏笔。
GPT-Neo 是 EleutherAI 对 GPT-3 架构风格的开源实现,核心基于 Google 的 mesh-tensorflow 库实现模型并行和数据并行,可训练从 1.25 亿到数十亿参数的 GPT 风格自回归语言模型。
项目最终开源了 4 个规模的预训练模型:
| 模型规模 | 参数量 | 权重下载 |
|---|---|---|
| GPT-Neo 125M | 1.25 亿 | the-eye.eu |
| GPT-Neo 350M | 3.5 亿 | the-eye.eu |
| GPT-Neo 1.3B(GPT3_XL) | 13 亿 | the-eye.eu |
| GPT-Neo 2.7B(GPT3_2-7B) | 27 亿 | the-eye.eu |
训练数据集为 EleutherAI 自行整理的 The Pile,一个 825GB 的高质量多样化文本语料,包含 22 个子数据集(Common Crawl、Wikipedia、ArXiv、GitHub、Stack Exchange 等)。
GPT-Neo 并非简单复刻 GPT-3,而是在架构上做了多项创新实验:
这些实验使 GPT-Neo 成为当时大模型架构研究的重要试验场。
EleutherAI 使用 lm-evaluation-harness 标准化评估框架,对各尺寸模型进行了全面评测:
语言理解与推理:
| 模型 | Wikitext PPL | Lambada Acc | Winogrande | Hellaswag |
|---|---|---|---|---|
| GPT-Neo 1.3B | 13.10 | 57.23% | 55.01% | 38.66% |
| GPT-3 1.3B | - | 63.6% | 58.7% | 54.7% |
| GPT-Neo 2.7B | 11.39 | 62.22% | 56.50% | 42.73% |
| GPT-3 2.7B | - | 67.1% | 62.3% | 62.8% |
科学推理:
| 模型 | MathQA | Piqa |
|---|---|---|
| GPT-Neo 1.3B | 24.05% | 71.11% |
| GPT-Neo 2.7B | 24.72% | 72.14% |
可以看到,GPT-Neo 2.7B 在多项指标上接近甚至超越 GPT-3 同规模模型,且所有评估代码完全开源可复现。
GPT-Neo 提供两种使用路径:
路径一:预训练模型推理(HuggingFace,推荐)
如果只是想用模型做推理,EleutherAI 官方强烈推荐直接使用 HuggingFace Transformers 集成,pip install transformers 后几行代码即可加载模型,无需克隆本仓库:
from transformers import GPTNeoForCausalLM, GPT2Tokenizer
model = GPTNeoForCausalLM.from_pretrained("EleutherAI/gpt-neo-1.3B")
tokenizer = GPT2Tokenizer.from_pretrained("EleutherAI/gpt-neo-1.3B")
input_text = "The future of AI is"
inputs = tokenizer(input_text, return_tensors="pt")
outputs = model.generate(**inputs, max_new_tokens=50)
print(tokenizer.decode(outputs[0]))
2.7B 模型约需 10GB 显存(FP16),1.3B 模型约 5GB,可在消费级 GPU 上运行。
路径二:从源码训练/微调(困难)
项目提供了完整的训练脚本 run_experiment.py,支持 TPU 和 GPU 分布式训练。核心流程:
⚠️ 警告:项目代码已于 2021 年 8 月正式归档,依赖 TensorFlow 1.15(已 EOL),Dockerfile 基础镜像不可用。官方建议使用后继项目 GPT-NeoX(GPU 原生,PyTorch 实现)。
项目采用模块化 Python 结构,关键文件说明:
| 文件/目录 | 作用 |
|---|---|
| main.py | 训练主入口,管理分布式训练循环 |
| model_fns.py | GPT 模型核心架构定义(Transformer Block、注意力、MLP) |
| models/ | 子目录包含不同模型实现变体(标准/MoE/局部注意力等) |
| inputs.py | 数据加载与批处理(The Pile 数据格式) |
| encoders.py | 分词器封装(GPT-2 BPE tokenizer) |
| tasks.py | 下游任务评估接口(支持零样本/少样本评估) |
| configs.py | 配置管理(JSON/YAML 配置解析) |
| utils.py | 工具函数(检查点保存、日志、分布式辅助) |
| Dockerfile | TPU 训练环境镜像(TF 1.15) |
| docker-compose.yml | MongoDB + Omniboard 训练看板(非推理服务) |
1. 已归档,非活跃项目 GPT-Neo 的代码库已于 2021 年 8 月停止维护。EleutherAI 将全部精力转向了 GPT-NeoX(PyTorch + DeepSpeed,原生 GPU 支持),GPT-Neo 不会获得新功能或 bug 修复。
2. TensorFlow 1.15 依赖 项目基于 mesh-tensorflow 构建,依赖已停止维护的 TensorFlow 1.15。运行训练代码需要处理大量过时依赖,现代 Python 环境(3.10+)兼容性差。
3. 与 GPT-3 的真实差距 尽管 2.7B 模型在部分基准上接近 GPT-3 同规模模型,但 GPT-3 的完整能力来自 1750 亿参数的 Scale,1.3B/2.7B 模型在复杂推理任务上仍有显著差距。
4. 权重下载依赖第三方存储 模型权重托管在 the-eye.eu 等非官方镜像,非商业 CDN,下载速度不稳定。
GPT-Neo 的历史地位远超其技术指标。它的出现证明了三点:
GPT-Neo 的精神直接催生了 EleutherAI 后续的 The Pile 数据集、GPT-NeoX、Pythia 等开源项目,也为后来的 LLaMA、Mistral、Phi 等开源大模型浪潮奠定了社区基础。
GPT-Neo 是开源大模型运动的一面旗帜。它用 13 亿参数告诉世界:大模型不是铁板一块,开放可以带来更多的可能性。项目虽已归档,但其理念和遗产——开放的权重、开放的数据、开放的研究——至今仍在推动 AI 行业向前。
如果你想快速体验,直接用 HuggingFace Transformers 加载是最简单的方式。如果你想训练自己的 GPT 风格模型,请转向活跃的 GPT-NeoX 项目。
EleutherAI 官方头像:一只毕加索风格的奶牛,象征"Eleuther"(希腊语"自由")