NanoChat 完整教學 2026:Andrej Karpathy 的 57K★ LLM 訓練框架,DGX Spark 本機 GPT-2 實戰,30 分鐘從零開始
NanoChat 是什麼?為什麼 2026 年還值得學?
如果你在 AI 工程圈混過一段時間,一定聽過 Andrej Karpathy——他是 Tesla Autopilot AI 的前負責人,也是 OpenAI 的創始成員之一。離開 OpenAI 後,Karpathy 全力投入 AI 教育,而 nanoGPT(現在進化為 NanoChat)就是他最具代表性的開源作品。
很多人以為 NanoChat 只是個教學玩具,但這個認知是錯的。2026 年 NVIDIA DGX Spark 上市之後,台灣 AI 工程師可以用遠低於過去的成本在本機進行真正的 LLM 訓練實驗,而 NanoChat 正是這個場景下最適合的起跑框架:
- 程式碼極簡:核心 transformer 不超過 300 行純 PyTorch,沒有任何「黑盒子」
- 速度快:Run 6 以 8×A100 在 1.65 小時完成 GPT-2 124M 訓練(業界紀錄)
- 生態完整:57.3K★、8K forks,社群龐大,GitHub Discussions #710 DGX Spark homelab 討論熱度最高
- 繁中空白:英文有 Trelis Substack 的付費課程,繁中幾乎找不到完整教學
Karpathy 在 2025 年底將專案從 nanoGPT 重新命名為 NanoChat,並新增了對話微調(SFT)、RLHF 基礎流程以及多輪對話格式支援。功能更完整,但核心仍是那份優雅的極簡 transformer。
環境需求與前置準備
在開始之前,先確認你的環境符合以下需求:
| 項目 | 最低需求 | 推薦(DGX Spark) | 說明 |
|---|---|---|---|
| GPU 顯存 | 8 GB VRAM(GTX 3070) | 128 GB 統一記憶體 | DGX Spark 內建 GB10 晶片 |
| Python | 3.10+ | 3.12.x | 避免使用 3.13(部分套件不相容) |
| PyTorch | 2.3.x | 2.5.x(CUDA 12.4) | DGX Spark 使用 CUDA 12.4 |
| 儲存空間 | 50 GB | 1 TB NVMe | 訓練資料集與 checkpoint |
| RAM | 16 GB | 192 GB(DGX Spark 內建) | 資料前處理需要大量 RAM |
如果你還沒有本機 GPU,可以用 DigitalOcean GPU Droplet(H100 按時計費)或 Google Colab(免費 T4 GPU)先跑通整個流程。本文後段會說明 DigitalOcean 雲端部署選項。
5 步驟完整安裝教學
Clone 專案並建立虛擬環境
# Clone NanoChat
git clone https://github.com/karpathy/nanoGPT.git nanochat
cd nanochat
# 建立 Python 虛擬環境(推薦 uv 而非 conda)
pip install uv
uv venv .venv --python 3.12
source .venv/bin/activate # Windows: .venv\Scripts\activate
安裝依賴套件
# 安裝核心依賴
uv pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124
# 安裝其他套件
uv pip install numpy transformers datasets tiktoken wandb tqdm
# 驗證 GPU 可用
python -c "import torch; print(torch.cuda.is_available()); print(torch.cuda.get_device_name(0))"
成功輸出應看到 True 以及你的 GPU 型號。
準備訓練資料(以 OpenWebText 為例)
# 下載並前處理 OpenWebText(~8.5GB,約需 30-60 分鐘)
cd data/openwebtext
python prepare.py
# 如果只是測試,用莎士比亞資料集更快(1MB)
cd ../shakespeare_char
python prepare.py
前處理完成後,你會得到 train.bin 和 val.bin 兩個 tokenized 二進位檔案,這是 NanoChat 的標準輸入格式。
設定訓練配置(config 檔案)
# config/train_gpt2.py — 單張 A100 訓練 GPT-2 124M 的標準設定
out_dir = 'out-gpt2'
eval_interval = 1000
eval_iters = 200
log_interval = 10
# 資料集
dataset = 'openwebtext'
gradient_accumulation_steps = 5 * 8 # 模擬 40 個 GPU 的 batch size
batch_size = 12
block_size = 1024
# 模型架構(GPT-2 124M 完全一致)
n_layer = 12
n_head = 12
n_embd = 768
dropout = 0.0
# 訓練超參數
learning_rate = 6e-4
max_iters = 600000
lr_decay_iters = 600000
min_lr = 6e-5
beta2 = 0.95
warmup_iters = 2000
# 系統設定
device = 'cuda'
dtype = 'bfloat16' # A100/H100 使用 bfloat16,較舊 GPU 改用 float16
compile = True # PyTorch 2.x 編譯加速(30-40% 加速)
啟動訓練
# 單 GPU 訓練(入門)
python train.py config/train_gpt2.py
# 多 GPU DDP 訓練(4 卡)
torchrun --standalone --nproc_per_node=4 train.py config/train_gpt2.py
# DGX Spark(8×GPU)— Run 6 複現設定
torchrun --standalone --nproc_per_node=8 train.py config/train_gpt2.py \
--gradient_accumulation_steps=5 \
--batch_size=12 \
--compile=True
訓練開始後,你會看到 val loss 從約 10.9 開始下降。GPT-2 124M 的目標 val loss 約為 3.12,這是 Karpathy 在 Run 6 達到的成績。
DGX Spark 本機 LLM Homelab:2026 台灣實戰指南
2026 年最令 AI 工程師興奮的消息之一,是 NVIDIA DGX Spark 正式在台灣開賣(透過台灣 NVIDIA 官方通路)。這台個人 AI 超級電腦配備:
- GB10 Grace Blackwell Superchip:含 20 個 Blackwell GPU core + 10 個 Arm CPU core
- 128 GB 統一記憶體:GPU 與 CPU 共享,非常適合大 batch size 實驗
- 4 TB NVMe SSD:足夠存放多個大型訓練資料集與 checkpoint
- 互連升級:兩台 DGX Spark 可用 ConnectX-7 互連,等同 2×128 GB 統一記憶體
對 NanoChat 用戶來說,DGX Spark 代表什麼?
| 任務 | RTX 4090 (24GB) | DGX Spark (128GB) | DGX Spark × 2 互連 |
|---|---|---|---|
| GPT-2 124M 訓練 | ~8-12 小時 | ~2.5 小時 | ~1.5 小時 |
| 最大 batch size | batch_size=6 (block=1024) | batch_size=48 | batch_size=96 |
| Llama 3.1-8B 微調 | 需 QLoRA(lossy) | 全精度 SFT(14B 以下) | 全精度 SFT(30B 以下) |
| 電費(台灣,$3.5/度) | ~NT$45/小時 | ~NT$35/小時(效率高) | ~NT$70/小時 |
DGX Spark 上的 NanoChat 最佳化配置
# config/train_gpt2_dgx_spark.py — 針對 DGX Spark 最佳化
out_dir = 'out-gpt2-spark'
eval_interval = 500
eval_iters = 200
log_interval = 10
dataset = 'openwebtext'
# DGX Spark 統一記憶體大,可以放更大 batch
gradient_accumulation_steps = 40
batch_size = 48 # 比 A100 單卡大 4 倍
block_size = 2048 # 延長 context window
n_layer = 12
n_head = 12
n_embd = 768
learning_rate = 6e-4
max_iters = 600000
lr_decay_iters = 600000
min_lr = 6e-5
beta2 = 0.95
warmup_iters = 2000
device = 'cuda'
dtype = 'bfloat16'
compile = True
# DGX Spark 特殊設定:利用 NVLink 多 GPU
# torchrun --nproc_per_node=8 train.py config/train_gpt2_dgx_spark.py
Q:DGX Spark 的統一記憶體能讓 NanoChat 跑更大的模型嗎?
A:可以。128 GB 統一記憶體讓你在無需 QLoRA 的情況下微調 Llama 3.1-8B(約需 96 GB),甚至嘗試 GPT-2 1.5B 的完整訓練。Karpathy 本人也在 Discussion 中確認 DGX Spark 是「homelab LLM 訓練的遊戲規則改變者」。
NanoChat 進階功能:SFT 對話微調
NanoChat 在 2025 年底新增了 Supervised Fine-Tuning(SFT) 支援,可以把預訓練的 GPT-2 checkpoint 微調成對話助理。這是從「語言模型」到「對話 AI」的關鍵一步。
準備 SFT 資料集
# SFT 資料格式(JSONL)
{"messages": [
{"role": "system", "content": "你是一個專業的 Python 程式設計助理。"},
{"role": "user", "content": "如何在 Python 中讀取 CSV 檔案?"},
{"role": "assistant", "content": "你可以使用 pandas 或內建的 csv 模組。以下是 pandas 的範例:\n\n```python\nimport pandas as pd\ndf = pd.read_csv('file.csv')\nprint(df.head())\n```"}
]}
# 前處理 SFT 資料
python data/sft/prepare.py --input your_data.jsonl --output data/sft/
啟動 SFT 訓練
# 從預訓練 checkpoint 繼續 SFT
python train.py config/finetune_sft.py \
--init_from=resume \
--out_dir=out-gpt2 \
--max_iters=10000 \
--learning_rate=1e-5 \
--decay_lr=False
四大台灣實戰場景
場景 1:技術文件摘要助理(IT 部門)
許多台灣企業的 IT 部門有大量內部技術文件,但 ChatGPT 等雲端工具有資安疑慮。用 NanoChat 在本機訓練一個內部技術文件摘要模型,資料完全不離廠,適合金融業、半導體廠、政府機關。
# 以內部文件 JSONL 做 SFT(~5,000 筆問答對)
python train.py config/finetune_sft.py \
--dataset=internal_docs \
--max_iters=5000 \
--batch_size=8
場景 2:繁體中文課程內容生成器(教育科技)
台灣教育科技公司(如 Hahow、均一)可以用 NanoChat 微調出針對特定課程的繁中內容生成模型,降低對 ChatGPT API 的依賴,同時保有課程內容的智慧財產。訓練資料來自現有課程腳本和學員互動記錄。
場景 3:半導體工程師 Copilot(製造業)
台積電、聯發科等大廠的工程師每天處理大量 SPICE 電路模擬、Verilog HDL 程式碼。用 NanoChat 在本機(DGX Spark)訓練一個懂得半導體設計語言的 Copilot,是純本機部署、零外洩風險的方案。
場景 4:中文醫療問答模型(醫療機構)
台灣醫院不能把病患資料送上雲端,但又需要高效的醫療問答工具。NanoChat + DGX Spark 的組合讓醫院可以在本機訓練並推理繁中醫療問答模型,符合 HIPAA / 個資法要求。
NanoChat vs 其他 LLM 訓練框架比較
| 框架 | Stars | 語言 | 學習曲線 | 最大可訓練規模 | 最適合 |
|---|---|---|---|---|---|
| NanoChat | 57.3K | Python / PyTorch | ⭐⭐(極低) | GPT-2 到 1.5B(單機) | 學習 / 研究 / homelab |
| LLaMA-Factory | 41K | Python | ⭐⭐⭐(中) | Llama / Qwen 全系列 | 開箱即用微調 |
| Axolotl | 9K | Python / YAML | ⭐⭐⭐(中) | 70B(多機 FSDP) | 進階微調流水線 |
| Megatron-LM | 11K | Python / CUDA | ⭐⭐⭐⭐⭐(極高) | GPT-3 規模(多機) | 大規模工業預訓練 |
| TorchTitan | 6K | Python / PyTorch | ⭐⭐⭐⭐(高) | Llama 3 405B(多機) | Meta 系生產訓練 |
結論:NanoChat 在學習和研究場景幾乎無可取代——你可以在一個下午讀完所有程式碼,真正理解 transformer 內部發生了什麼。對於生產環境的大規模微調,LLaMA-Factory 或 Axolotl 更合適。
模型推理:訓練完後怎麼用?
# 載入訓練好的 checkpoint 做推理
python sample.py \
--out_dir=out-gpt2 \
--start="台灣的半導體產業" \
--num_samples=5 \
--max_new_tokens=500 \
--temperature=0.8 \
--top_k=200
# 對話模式(SFT 微調後)
python chat.py \
--out_dir=out-gpt2-sft \
--temperature=0.7
匯出為 GGUF 格式(在 Ollama / LM Studio 使用)
# 安裝 llama.cpp(用於 GGUF 轉換)
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp && make LLAMA_CUDA=1
# 先把 NanoChat checkpoint 轉為 HuggingFace 格式
python convert_nanochat_to_hf.py \
--input out-gpt2/ckpt.pt \
--output hf-model/
# 再轉為 GGUF Q4_K_M 格式(大幅壓縮,適合 CPU 推理)
python llama.cpp/convert_hf_to_gguf.py hf-model/ \
--outtype q4_k_m \
--outfile nanochat-gpt2-q4km.gguf
# 在 Ollama 使用
ollama serve
ollama run nanochat-gpt2-q4km.gguf
如果你沒有本機 GPU 或正在等 DGX Spark 到貨,DigitalOcean 的 GPU Droplet(H100 SXM5)可以按時計費,以大約 $2.99/小時的成本跑 GPT-2 124M 訓練,整個 Run 6 大約花費 $5 美元。完成後立即停止計費,非常划算。
🚀 用雲端 GPU 跑 NanoChat 訓練,成本最低化
DigitalOcean GPU Droplet(H100 SXM5)按時計費,跑完即停。GPT-2 124M 訓練全程不超過 $10 美元。新用戶享 $200 免費額度,足夠跑 20+ 次完整訓練實驗。
常見問題 FAQ
device = 'cpu' 和 dtype = 'float32' 即可。🎓 從 NanoChat 出發,成為 LLM 工程師
DataCamp 的「Machine Learning Engineer」職涯學習路線涵蓋 PyTorch 基礎、Transformer 架構、LLM 微調,以及 MLOps 部署,是 NanoChat 之後最自然的進階路徑。支援繁中介面,台灣開發者適用。
總結:NanoChat 是 2026 年最值得學的 LLM 入門框架
在各種「一鍵部署」、「零程式碼 AI」工具氾濫的 2026 年,NanoChat 代表的是完全相反的哲學:徹底理解,而非黑盒使用。
Karpathy 在設計 NanoChat 時有一個很明確的原則:「如果你不能在一天之內讀完所有程式碼,這個框架就太複雜了。」這種哲學讓 NanoChat 成為全世界最多 AI 工程師用來建立 transformer 心智模型的工具。
加上 DGX Spark 在台灣正式開賣,2026 年是本機 LLM 訓練實驗最平民化的一年。現在正是學習 NanoChat 的最好時機。
- ✅ Clone NanoChat 並用莎士比亞資料集跑第一次訓練(30 分鐘)
- ✅ 閱讀
model.py(300 行),理解 MultiHeadAttention + MLP 的結構 - ✅ 試試 OpenWebText 全量訓練(需 GPU,或用 DigitalOcean Droplet)
- ✅ 加入 Discussion #710,看 DGX Spark homelab 用戶的實戰經驗
- ✅ 完成第一次 SFT 微調(用自己準備的 100 筆問答對)
🔗 延伸閱讀:搭配 NanoChat 的最佳工具
學完 NanoChat 後,這些工具能讓你的 LLM 工程能力更完整。