Skip to content

microgpt 閱讀摘要

這是什麼?

microgpt 是 Andrej Karpathy 所寫的單一 Python 檔案,完整實作了一個 GPT(Generative Pre-trained Transformer)模型的訓練與推論。最關鍵的特色是:完全不用 PyTorch、TensorFlow 或其他深度學習框架——它從零手寫了反向傳播所需的 Autograd 引擎。

核心架構

元件說明
Value 類別自製的自動微分引擎,支援 +, *, **, log, exp, relu 等運算,可建構計算圖並進行反向傳播
Tokenizer最基本的字元級(character-level)tokenizer,將字元映射到整數 ID
參數初始化使用高斯分佈隨機初始化所有權重矩陣
GPT 模型包含 token embedding、positional encoding、transformer block(multi-head attention + MLP)、RMSNorm、線性投影到 vocab
Adam 優化器從零手寫 Adam(帶 momentum 與 adaptive learning rate)
訓練迴圈使用 names 資料集訓練,逐字元預測(next token prediction)
推論溫度採樣(temperature sampling)生成新名字

檔案結構

整個程式僅 200 行,依序為:

  1. Value 類別(第 30–72 行)— 微型 Autograd 引擎
  2. 參數初始化(第 74–90 行)— 定義 n_layer, n_embd, block_size 等超參數
  3. 模型架構(第 92–144 行)— gpt() 函式、linear、softmax、rmsnorm
  4. Adam 優化器(第 146–149 行)— momentum 緩衝區
  5. 訓練迴圈(第 152–184 行)— 前向傳播 → 損失計算 → 反向傳播 → 參數更新
  6. 推論(第 187–200 行)— 從 BOS token 開始逐字元生成

與 production 的差異

microgpt 是教學用實作,刻意捨棄了效率換取可讀性:

  • 使用純 Python scalar 運算而非 tensor 運算(無 GPU 加速)
  • 單頭注意力用雙重迴圈實作而非批次矩陣乘法
  • 無 batch dimension(每個 step 只處理一個樣本)
  • 無 gradient checkpointing、mixed precision 等優化