Salesforce承諾五年投資150億美元助力舊金山打造全球AI創新中心
October 14, 2025
Salesforce
4 min
nanochat 專案詳細介紹
專案概述
nanochat 是由知名AI研究者 Andrej Karpathy 開發的一個全端大型語言模型(LLM)實作專案,其核心理念是用最少的程式碼和最低的成本,完整展示如何從零開始建構一個類似 ChatGPT 的聊天機器人。
專案標語: "The best ChatGPT that $100 can buy." (100美元能買到的最好的ChatGPT)
核心特色
1. 極簡設計哲學
- 單一、清晰、最小化、可修改的程式碼庫
- 低依賴性設計
- 約8,300行程式碼,44個檔案
- 總計約83,497個tokens(約334KB)
2. 端到端完整流程
nanochat 涵蓋了建構LLM的全部環節:
- Tokenization (分詞)
- Pretraining (預訓練)
- Finetuning (微調)
- Evaluation (評估)
- Inference (推理)
- Web Serving (網路服務)
3. 低成本訓練
- 基礎版本($100級別):在8×H100節點上約4小時完成
- 中級版本($300級別):約12小時,效能略超GPT-2
- 高級版本($1000級別):約41.6小時
4. 教育定位
- 設計為 Eureka Labs 的 LLM101n 課程的畢業專案
- 程式碼高度可讀,便於學習和理解
- 適合想要深入了解LLM訓練全流程的開發者
快速入門
執行快速訓練腳本
在8×H100 GPU節點上執行:
bash speedrun.sh
或在screen會話中執行(推薦):
screen -L -Logfile speedrun.log -S speedrun bash speedrun.sh
等待約4小時後,即可獲得一個可用的LLM模型。
啟動網路介面
訓練完成後,啟用虛擬環境並啟動服務:
source .venv/bin/activate
python -m scripts.chat_web
然後造訪顯示的URL(例如 http://209.20.xxx.xxx:8000/),即可像使用ChatGPT一樣與你自己的LLM對話。
訓練結果範例
訓練完成後會生成 report.md 檔案,包含模型的評估指標:
Metric | BASE | MID | SFT | RL
---------------|--------|--------|--------|-------
CORE | 0.2219 | - | - | -
ARC-Challenge | - | 0.2875 | 0.2807 | -
ARC-Easy | - | 0.3561 | 0.3876 | -
GSM8K | - | 0.0250 | 0.0455 | 0.0758
HumanEval | - | 0.0671 | 0.0854 | -
MMLU | - | 0.3111 | 0.3151 | -
ChatCORE | - | 0.0730 | 0.0884 | -
Total wall clock time: 3h51m
注意事項: $100訓練出的模型效能有限(約4e19 FLOPs),相當於"幼稚園水平"的語言能力,但足以展示完整的訓練流程。
擴展至更大模型
要訓練更大的模型(如GPT-2級別的d26模型),只需對 speedrun.sh 做少量修改:
# 1. 下載更多資料分片
python -m nanochat.dataset -n 450 &
# 2. 增加模型深度,減小批次大小以適應記憶體
torchrun --standalone --nproc_per_node=8 -m scripts.base_train -- --depth=26 --device_batch_size=16
# 3. 中期訓練時保持相同配置
torchrun --standalone --nproc_per_node=8 -m scripts.mid_train -- --device_batch_size=16
執行環境要求
推薦配置
- 8×H100 80GB GPU節點(約$24/小時)
- 提供商建議:Lambda GPU Cloud
相容性
- 8×A100 GPU: 可執行,但速度較慢
- 單GPU: 可執行,但訓練時間延長8倍
- 小顯存GPU(<80GB): 需要調整
--device_batch_size參數(從32降至16、8、4、2或1) - 其他平台: 基於PyTorch,理論上支援xpu、mps等,但需要額外配置
技術棧
- 深度學習框架: PyTorch
- 分散式訓練: torchrun
- 套件管理: uv
- 資料集: HuggingFace Fineweb, Smoltalk
- Tokenizer: 自訂Rust實作(rustbpe)
與AI對話探索程式碼
由於程式碼庫簡潔(~330KB),可以將整個專案打包後提供給LLM進行分析:
files-to-prompt . -e py -e md -e rs -e html -e toml -e sh --ignore "*target*" --cxml > packaged.txt
或者使用 DeepWiki 直接線上探索程式碼庫。
測試
專案包含單元測試,特別是針對分詞器:
python -m pytest tests/test_rustbpe.py -v -s
專案定位與目標
nanochat 不是:
- 一個功能齊全的LLM框架
- 高度可配置的模型工廠
- 生產級別的解決方案
nanochat 是:
- 教育性質的參考實作
- 可修改、可分叉的強基線
- 面向預算<$1000的微型模型研究
- 降低LLM開發的認知複雜度
專案歷史與致謝
靈感來源:
- nanoGPT - Karpathy的早期預訓練專案
- modded-nanoGPT - 遊戲化的nanoGPT變體
鳴謝:
- HuggingFace - 提供fineweb和smoltalk資料集
- Lambda - 提供開發所需的算力
- Alec Radford - LLM首席顧問
開源協議
MIT License
引用格式
@misc{nanochat,
author = {Andrej Karpathy},
title = {nanochat: The best ChatGPT that $100 can buy},
year = {2025},
publisher = {GitHub},
url = {https://github.com/karpathy/nanochat}
}
專案現況
專案仍在活躍開發中,目標是不斷改進微型模型的最新水平,讓更多人能夠以可承受的成本完整體驗LLM的訓練全流程。
GitHub位址: https://github.com/karpathy/nanochat