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×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開發的認知複雜度

專案歷史與致謝

  • 靈感來源:

  • 鳴謝:

    • 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