nanochat
“100 美元能买到的最好的 ChatGPT。”
nanochat 是一个 完整的 LLM 全栈实现,类似 ChatGPT,但代码非常简洁、可修改、依赖极少。
整个项目将 LLM 的完整生命周期放在一个代码库中,包括:
- Tokenization(分词)
- Pretraining(预训练)
- Finetuning(微调)
- Evaluation(评估)
- Inference(推理)
- Web UI 聊天界面
它的目标是: 让开发者能够 从零训练并运行自己的 ChatGPT 类模型。 (GitHub)
项目代码规模大约 8000 行左右,主要使用 Python + PyTorch,部分 tokenizer 使用 Rust 实现。 (GIGAZINE)
项目定位
nanochat 的目标不是打造一个复杂的 LLM 框架,而是提供一个:
- 简洁
- 完整
- 可学习
- 可修改
的参考实现。
特点:
- 单一代码库
- 结构清晰
- 极易 fork 和修改
它将作为课程 LLM101n 的最终项目。 (GitHub)
示例模型
目前项目提供一个公开运行的模型:
nanochat d34
含义:
- Transformer 34 层
- 2.2B 参数
- 训练数据 88B tokens
训练方式:
运行脚本:
run1000.sh
训练成本:
- 约 100 小时
- 8×H100 GPU
- 总成本约 2500 美元
性能:
- 超过 2019 年 GPT-2
- 但远弱于现代 LLM。 (GitHub)
作者形容这个模型:
“有点像小孩一样,会犯很多错误,也会产生幻觉。” (GitHub)
快速开始
最简单的方式是运行:
bash speedrun.sh
这个脚本会执行完整流程:
- 下载数据
- 训练模型
- 评估模型
- 启动推理
- 启动 Web UI
整个流程大约 4 小时。 (GitHub)
运行聊天 UI
训练完成后运行:
python -m scripts.chat_web
然后打开浏览器:
http://<服务器IP>:8000
就可以像 ChatGPT 一样聊天。
训练规模
nanochat 提供多个训练规模:
$100 级别模型
- 约 4 小时训练
- 小规模聊天模型
- 用于学习和实验
$300 级别模型
- 约 12 小时训练
- 接近 GPT-2 级别性能
$1000 级别模型
- 约 40 小时训练
- 更强能力
CPU / Mac 运行
nanochat 也支持:
- CPU
- Mac MPS
虽然速度较慢,但可以:
- 跑通完整流程
- 训练小模型
- 用于学习。
自定义模型人格
可以通过 生成合成数据改变模型风格。
例如:
- 生成角色数据
- 加入 mid-training
- 加入 SFT 数据
从而塑造模型:
- personality
- identity
- style。
为模型增加能力
nanochat 支持:
- 添加新训练数据
- 添加新任务
- 修改推理逻辑
示例:
- “数 strawberry 中有几个 r”
用来演示如何加入新能力。
项目结构
核心代码结构:
nanochat/
├── adamw.py # 分布式 AdamW 优化器
├── checkpoint_manager.py # 模型 checkpoint
├── common.py # 工具函数
├── configurator.py # 参数配置
├── core_eval.py # CORE 基准评测
├── dataloader.py # 数据加载器
├── dataset.py # 预训练数据下载
其他目录:
dev/ # 实验脚本
scripts/ # 推理 / Web UI
tests/ # 测试
项目目标
nanochat 的设计目标:
- 极低成本训练 LLM
- 完整 LLM pipeline
- 代码可读性极高
- 方便研究和实验
作者希望探索:
在 1000 美元以内训练和研究 LLM 的可能性。 (GitHub)
项目致谢
nanochat 受到多个项目启发:
- nanoGPT
- modded-nanoGPT
- HuggingFace FineWeb
- SmolTalk
总结
nanochat 本质是:
一个 极简 LLM 全流程参考实现。
核心特点:
- 完整 LLM pipeline
- 代码约 8K 行
- 从 tokenizer → 训练 → 推理 → UI
- 可以 几小时内训练一个 ChatGPT 类模型
适合:
- LLM 学习
- 模型实验
- AI 课程
- 研究原型开发。
如果你愿意,我可以给你补充一个 非常关键的技术视角:
Karpathy 的 5 个“教学级 LLM 项目”进化路线:
1️⃣ micrograd 2️⃣ makemore 3️⃣ nanoGPT 4️⃣ nanochat 5️⃣ autoresearch
这其实是一条 从神经网络 → LLM → Agent 的学习路线图。
很多 AI 工程师都不知道这个体系,我可以帮你画一张完整图。
