Appearance
閱讀評論
設計優點
1. 極致的原子化 microgpt 將 GPT 訓練拆解到最小可運行的單元——一個 200 行的單一檔案,每一行都有明確的用途。對學習者來說,沒有多餘的抽象層,沒有需要追蹤的跨檔案引用。
2. 自包含的 Autograd 不同於其他教學實作(如 nn.lua、min-char-rnn),microgpt 連反向傳播都自己處理。這意味著讀者可以看到完整的梯度流動,而不用依賴框架的 loss.backward() 黑盒子。
3. 註解的引導性 每段程式碼前的註解(如 "Let there be Autograd to recursively apply the chain rule")提供了高層次的上下文,幫助讀者在深入程式碼前先建立心智模型。
設計取捨與限制
1. 效率 vs 規模 最大的限制是效能。純 Python scalar 運算意味著:
- 訓練 1000 步就是極限(訓練時間已經開始拉長)
- 無法擴展到更大的模型(如 n_layer > 2, n_embd > 64)
- 無 GPU 加速
2. 詳細程度 注意力機制的 scalar 實作雖然容易理解,但也讓注意力公式淹沒在 indexing 程式碼中:
python
attn_logits = [sum(q_h[j] * k_h[t][j] for j in range(head_dim)) / head_dim**0.5 for t in range(len(k_h))]相比 PyTorch 的 q @ k.T / sqrt(d),上面的寫法更「正確」但更難一眼看出這是 attention。
3. 缺少的功能
- 無 dropout(可能導致 overfitting)
- 無 gradient clipping
- 無 learning rate warmup
- 無 batch 訓練
- 無 validation split
- 無模型保存/載入
與其他實作的比較
| 實作 | 行數 | 依賴 | GPU | 適合理念 |
|---|---|---|---|---|
| microgpt | 200 | 無 | 否 | GPT 核心原理 |
| nanoGPT | ~600 | PyTorch | 是 | production 等級 |
| minGPT | ~300 | PyTorch | 是 | 精簡但可擴展 |
總結
microgpt 是教學藝術的展現。它不是用來訓練 production 模型的工具,而是用來「解構 GPT 黑盒子」的說明書。對於想真正理解 Transformer 內部運作的人來說,這是無價的資源。