Appearance
文件重點
1. 完整 GPT 訓練管線
microgpt 涵蓋了從資料載入到模型推論的完整流程:
資料集(names) → Tokenizer → Embedding → Transformer Blocks → Linear → Softmax → Loss → Backprop → Adam → Inference2. 純 Python Autograd
Value 類別是整份檔案的基石,實作了:
- 前向傳播:記錄每個運算的結果(
data) - 計算圖:記錄每個節點的子節點(
_children)與局部梯度(_local_grads) - 反向傳播:拓撲排序後,透過 chain rule 逐層傳播梯度
這套機制與 micrograd 完全相同,但 microgpt 將其嵌入到 transformer 的訓練中。
3. GPT-2 風格架構
作者提到「Follow GPT-2, blessed among the GPTs」,但有兩個主要差異:
| GPT-2 原始 | microgpt |
|---|---|
| LayerNorm | RMSNorm(更簡單,無 bias 項) |
| GeLU 激活 | ReLU |
| 有 bias 項 | 無 bias 項 |
4. 注意力機制
雖然是純 scalar 實作,但保留了完整的多頭注意力:
Q = x @ Wq
K = x @ Wk
V = x @ Wv
Attention(Q,K,V) = softmax(QK^T / √d) V每個頭獨立計算後 concatenate,再經過 attn_wo 線性投影。
5. 殘差連接(Residual Connections)
每個區塊都有殘差連接:
- Attention 區塊:
x = attention(rmsnorm(x)) + x_residual - MLP 區塊:
x = mlp(rmsnorm(x)) + x_residual
6. Adam 優化器
實作了完整的 Adam 演算法:
- 一階動量(momentum)
m - 二階動量(adaptive learning rate)
v - 偏差修正(bias correction)
- 線性學習率衰減
7. 下一個 token 預測
訓練目標是標準的語言模型任務:給定前 n 個 token,預測第 n+1 個 token。
使用交叉熵損失(透過 -log(prob[target]) 實作)。
8. 溫度採樣
推論時支援溫度控制:
- 低溫度(如 0.1):生成更確定性、更保守的結果
- 高溫度(如 1.0):生成更多樣化、更有創意的結果