Skip to content

閱讀心得

從 micrograd 到 microgpt

讀完 micrograd 再讀 microgpt,就像看著一個孩子長大成人。

micrograd 展示了「什麼是自動微分」——它用一個 100 多行的 Value 類別,讓你理解反向傳播的本質。而 microgpt 則展示了「有了自動微分之後能做什麼」——它把 Value 類別直接嵌入到一個完整的 Transformer 訓練流程中。

這兩份程式碼放在一起,形成了一個完美的學習路徑:

micrograd(自動微分原理)

microgpt(GPT 訓練實作)

nanoGPT(production-grade GPT)

純 Python 的堅持

最讓我震撼的是 microgpt 完全不用 PyTorch。在深度學習領域,PyTorch 幾乎已經是空氣般的存在——沒人會去想「如果不靠 PyTorch,我要怎麼訓練一個 Transformer?」

Karpathy 用這 200 行證明了:Transformer 的核心並非什麼黑魔法,而是一連串清晰的數學運算。當你把每個 matmul、每個 softmax、每個 adam update 都攤開來看時,整個架構變得透明而優雅。

教學上的巧思

作者在註解中用了聖經風格的「Let there be...」——這是一種幽默的致敬,但也傳遞了「從無到有創造」的精神。每一段程式碼都是從最原始的基礎開始建構:

  1. Let there be a Dataset...
  2. Let there be a Tokenizer...
  3. Let there be Autograd...
  4. Let there be Adam...

這種敘事方式讓讀者感覺自己正在「創造」而不是「使用」一個 GPT。

效率 vs 可讀性的取捨

microgpt 犧牲了所有效率來換取可讀性:

  • scalar 運算取代 tensor 運算 → 慢 1000 倍以上
  • 雙重 for 迴圈取代矩陣乘法 → 程式碼變長但更直觀
  • 單一樣本訓練取代 batch 訓練 → 更簡單的索引操作

這正是教學程式碼該有的樣子:先讓人理解,再談優化。