⭐ 57.3K Stars · Karpathy · 繁中首發

NanoChat 完整教學 2026:Andrej Karpathy 的 57K★ LLM 訓練框架,DGX Spark 本機 GPT-2 實戰,30 分鐘從零開始

📅 2026-09-13 ⏱ 閱讀約 15 分鐘 🔧 Python · PyTorch · GPU 訓練 🎯 AI 工程師 / ML 入門 / DGX Spark
TL;DR:NanoChat(原 nanoGPT)是 Andrej Karpathy 打造的輕量 LLM 訓練框架,GitHub 57.3K★ 8K forks。Run 6 以 8×A100 在 1.65 小時重現 GPT-2 124M 訓練紀錄。2026 年 DGX Spark(台灣已可購入)讓本機 homelab LLM 訓練成為現實,繁中完整教學幾乎為零。本文一次補全所有空白——從 Python 安裝、資料前處理、訓練 loop、到 DGX Spark 實戰配置。
57.3K
GitHub Stars
8K+
Forks
1.65h
GPT-2 訓練時間(8×A100)
MIT
開源授權

NanoChat 是什麼?為什麼 2026 年還值得學?

如果你在 AI 工程圈混過一段時間,一定聽過 Andrej Karpathy——他是 Tesla Autopilot AI 的前負責人,也是 OpenAI 的創始成員之一。離開 OpenAI 後,Karpathy 全力投入 AI 教育,而 nanoGPT(現在進化為 NanoChat)就是他最具代表性的開源作品。

很多人以為 NanoChat 只是個教學玩具,但這個認知是錯的。2026 年 NVIDIA DGX Spark 上市之後,台灣 AI 工程師可以用遠低於過去的成本在本機進行真正的 LLM 訓練實驗,而 NanoChat 正是這個場景下最適合的起跑框架:

💡 NanoChat vs nanoGPT

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 怎麼辦?

如果你還沒有本機 GPU,可以用 DigitalOcean GPU Droplet(H100 按時計費)或 Google Colab(免費 T4 GPU)先跑通整個流程。本文後段會說明 DigitalOcean 雲端部署選項。

5 步驟完整安裝教學

1

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
2

安裝依賴套件

# 安裝核心依賴
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 型號。

3

準備訓練資料(以 OpenWebText 為例)

# 下載並前處理 OpenWebText(~8.5GB,約需 30-60 分鐘)
cd data/openwebtext
python prepare.py

# 如果只是測試,用莎士比亞資料集更快(1MB)
cd ../shakespeare_char
python prepare.py

前處理完成後,你會得到 train.binval.bin 兩個 tokenized 二進位檔案,這是 NanoChat 的標準輸入格式。

4

設定訓練配置(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% 加速)
5

啟動訓練

# 單 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 超級電腦配備:

對 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
✅ DGX Spark GitHub Discussion #710 最受歡迎問題彙整

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
💡 用 DigitalOcean GPU Droplet 加速訓練

如果你沒有本機 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

Q1:NanoChat 和 nanoGPT 是同一個東西嗎?
是的,NanoChat 是 nanoGPT 的延伸版本。Karpathy 在 2025 年底將專案重命名,並新增 SFT 微調、多輪對話格式、以及更完整的實驗配置系統。GitHub 上的專案 URL(karpathy/nanoGPT)保持不變,向下相容。
Q2:沒有 GPU,只有 CPU 可以跑嗎?
可以訓練,但速度會非常慢。GPT-2 124M 在單顆 CPU 上可能需要數週才能訓練完成。建議先用莎士比亞角色資料集(1MB)做快速測試,或租用 DigitalOcean GPU Droplet。在 config 中設 device = 'cpu'dtype = 'float32' 即可。
Q3:NanoChat 訓練出來的模型效果如何?
GPT-2 124M 是 2019 年的模型,生成能力遠不及現在的 Claude 或 GPT-5.4。但 NanoChat 的價值不在生成效果,而在於「學習訓練」——你可以親眼看到 transformer 是如何從隨機初始化一步步學習語言規律的。完整訓練後,英文文本生成非常流暢,繁中效果取決於訓練語料。
Q4:DGX Spark 台灣哪裡買?大概多少錢?
2026 年 DGX Spark 已透過台灣 NVIDIA 官方通路和部分代理商(如神達、緯穎)開賣。官方定價約 3,999 美元(約 NT$129,000)。相比租用雲端 GPU 一年的成本,長期使用 homelab 是合理的投資。部分大學和研究機構有學術優惠。
Q5:訓練資料的著作權問題怎麼處理?
NanoChat 官方使用的 OpenWebText 是從 Reddit 收集的開放網頁資料,法律上尚有爭議,但學術研究用途通常被接受。如果你要做商業部署,建議使用授權明確的資料集(如 CC-BY 授權的維基百科、已購買授權的書籍語料等)。台灣繁中語料推薦:國家教育研究院語料庫、中研院平衡語料庫。
Q6:NanoChat 的下一步:學完之後該怎麼進階?
建議路線:(1) 用 NanoChat 完全理解 transformer → (2) 轉到 LLaMA-Factory 做 Llama 3.1-8B 微調 → (3) 學習 RLHF / DPO / GRPO 對齊方法 → (4) 研究 MoE 架構(DeepSeek V4 Pro 採用)。DataCamp 有完整的 LLM 工程師學習路線,涵蓋上述所有步驟。

🎓 從 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 工程能力更完整。