nanochat

2个月前发布 66 00

nanochat 是一个全栈、端到端、极简可黑客的开源项目,让你用约 100 美元在单台 8×H100 GPU 服务器上,从零训练并部署一个类 ChatGPT 的小型语言模型(LLM)。

所在地:
美国
收录时间:
2025-10-18
其他站点:
nanochatnanochat

nanochat 是一个全栈、端到端、极简可黑客的开源项目,让你用约 100 美元在单台 8×H100 GPU 服务器上,从零训练并部署一个类 ChatGPT小型语言模型(LLM)。

它包含完整的训练管道:分词 → 预训练 → 微调 → 评估 → 推理 → Web UI,所有代码集中在一个轻量、干净、可读性强的代码库中。

nanochat 是 Eureka Labs 即将推出的课程 LLM101n 的顶石项目,目标是让 LLM 训练变得可负担、可理解、可掌控

最终效果预览

访问在线演示:nanochat.karpathy.ai(模型:d32,32 层 Transformer,1.9B 参数)

  • 在 38B tokens 上训练约 33 小时(8×H100),总成本约 $800
  • 性能略优于 2019 年的 GPT-2,但远逊于 GPT-4/5
  • 行为“天真”、常幻觉、像幼儿园孩子——但完全属于你,可随意修改、重训、调试

快速启动($100 版本)

  1. 在云平台(如 Lambda Labs)启动一台 8×H100 节点(约 $24/小时)
  2. 克隆仓库并运行 speedrun 脚本(全程约 4 小时):
git clone https://github.com/karpathy/nanochat
cd nanochat
bash speedrun.sh

建议在 screen 中运行以避免断连:

screen -L -Logfile speedrun.log -S speedrun bash speedrun.sh
  1. 训练完成后,启动 Web UI:
source .venv/bin/activate
python -m scripts.chat_web
  1. 访问 http://<your-server-ip>:8000,即可像使用 ChatGPT 一样与你的模型对话。

训练报告会生成 report.md,包含评估指标,例如:

MetricBASEMIDSFTRL
ARC-Challenge0.28750.2807
GSM8K0.02500.04550.0758
MMLU0.31110.3151
总耗时3h51m

更大模型($300 / $1000 级别)

  • $300 级(d26):12 小时训练,略超 GPT-2
  • $1000 级(d32+):约 41 小时,作为整数预算参考

只需微调 speedrun.sh

  • 增加 --depth=26
  • 减小 --device_batch_size=16(防 OOM)
  • 下载更多数据分片(如 -n 450

💡 模型规模与数据量需匹配:参数量 × 20 ≈ 所需 token 数。

硬件与兼容性

环境支持情况
8×H100 / A100✅ 完整支持,推荐
单 GPU✅ 自动切换为梯度累积,速度慢 8 倍
<80GB VRAM⚠️ 需手动降低 device_batch_size(如 32 → 8)
Mac (MPS)🔧 实验性支持(见 CPU/MPS PR),使用 --device_type=mps
纯 CPU🐢 可运行极小模型,训练极慢

代码与可维护性

  • 极简设计:无复杂配置、无工厂模式、无巨型 if-else
  • 可黑客性强:45 个文件,约 8,300 行代码,330KB 可打包为单提示(适合 LLM 分析)
  • 便于提问:推荐使用 DeepWiki(将 GitHub URL 中 github.com 替换为 deepwiki.com

数据统计

相关导航

暂无评论

none
暂无评论...