Andrej Karpathy 本週悄悄把 microgpt.py 發到了 GitHub Gists——一個單檔 Python,只用標準函式庫的 `os`、`math`、`random` 就能訓練並跑 GPT 推論。沒有 PyTorch、沒有 NumPy、沒有 TensorFlow、沒有 GPU。這個 gist 幾天內已超過 5,000 顆星、2,400 個 fork。Karpathy 在檔案 docstring 裡的措辭罕見地斬釘截鐵:「在純依賴自由的 Python 裡,訓練並跑 GPT 推論的最原子方式。這個檔案就是完整演算法。其餘一切都只是效率。」他在 No Priors 播客訪談中補充了由來:他完全手寫,因為他試過的任何一個 LLM agent 都沒辦法把 GPT 訓練的本質蒸餾成一個清晰的單檔。

架構沿用 GPT-2 但有三個刻意的簡化:RMSNorm 取代 LayerNorm、線性層無 bias、ReLU 取代 GeLU。預設超參極小——1 層、16 維 embedding、4 個 attention head(每個 4 維)、block size 16——剛好夠在 Karpathy 經典的 makemore `names.txt` 上做字元級訓練。autograd 是一個 40 行的 `Value` 類別(本質上是 micrograd 的模式),拓樸排序的 backward pass,以及一個內聯的 Adam 最佳化器、線性 LR decay,跑 1000 步。推論時抽樣 20 個「幻覺」出來的名字。如果顯示器夠寬,整個檔案能一屏裝下。fork 已經出現了一個 NumPy 版本(比純量 autograd 快約 250×)、一個 Julia 矩陣版、一個能在瀏覽器裡跑 ~4000 參數的 JavaScript 移植版、以及一個 microgpt-denovo 專案——證明 agent 現在能從一個高層規範重建出這個檔案,正好補上了 Karpathy 一開始說他的 agent 閉不上的那個環。

這裡的生態訊號是教學即護城河。今天大多數預訓練基礎設施都是層層抽象——PyTorch 跑在 CUDA 上、CUDA 跑在硬體專屬 kernel 上——它把演算法藏起來,而依賴它的從業者卻看不見。microgpt.py 是去抽象化:它同時讓 transformer 的 forward pass、backward 鏈式法則、RMSNorm 縮放、多頭注意力、KV-cache 追加、softmax 的 max-subtract 技巧、Adam 的動量緩衝區——全部一次性可見。對任何在微調 Llama、debug 訓練運行、或者寫自訂 CUDA kernel 的人來說,這一屏比教科書裡關於 transformer 的半本章節都更有用。社群 fork 模式——benchmark、跨語言移植、agent 重構——本身也是一個即時實驗,看看跟 LLM 相關的教育程式碼是否已經成為一個獨立的協作層。

週一早晨的 builder:複製這個 gist,跑 `python microgpt.py`,在 CPU 上幾分鐘內就能看到一個 transformer 收斂於字元級名字生成。如果你曾經對著 OpenAI 或 Anthropic 的 API 寫過程式碼但從未追蹤過一次完整的 forward pass,這是修正這件事最便宜的方式。如果你訓模型,把它丟給初級工程師當閱讀練習——它把那層讓「這個 loss 在幹嘛?」變難回答的 framework 面紗掀掉。配套的 no-priors 訪談也是 Karpathy 解釋為什麼他認為當前 agent 能力還沒達到無 prompt 從零寫出這個檔案門檻的地方——一個有用的能力刻度。