Karpathy 開源 nanochat:8000 行程式碼、100 美元手搓一個 ChatGPT
Andrej Karpathy 開源專案 nanochat。它僅用約 8000 行程式碼,就打通從分詞、預訓練、SFT、強化學習到推理介面的全棧流程。在 8 張 H100 上花約 100 美元跑 4 小時,就能訓出一個能聊天的基礎模型。該專案還將作為其 LLM101n 課程的結業大作業。

nanochat 是 Andrej Karpathy 開源的一個最小化全棧 ChatGPT 復刻專案。它用大約 8000 行乾淨的程式碼,把大語言模型從零造到能聊天的完整流水線,全塞進了一個極少依賴的程式碼倉庫裡。
你租一臺雲端 GPU 伺服器,跑一個指令碼,最快 4 個小時之後,就能在類似 ChatGPT 的網頁介面裡跟自己訓出來的模型對話。
它能做什麼
比起之前只做預訓練的 nanoGPT,nanochat 覆蓋了現代大模型後訓練的整套流程。
倉庫裡包含用 Rust 新寫的分詞器訓練程式碼,接著在 FineWeb 資料集上預訓練 Transformer 架構,並用 CORE 分數做綜合評估。
隨後是基於 SmolTalk 等資料集的中訓階段,加入問答、單選以及工具呼叫;再經過 SFT 監督微調,在 MMLU、ARC、GSM8K 和 HumanEval 上跑測試。
它甚至包含可選的 GRPO 演算法,用來在 GSM8K 數學任務上做強化學習。推理引擎則內建了 KV 快取和簡單的 Prefill/Decode 邏輯,配有一個輕量沙箱裡的 Python 直譯器來實現工具呼叫,最後自動生成一份彙總成績單。
成本與效果
跑這個專案的門檻被壓得很低。在 8 張 H100 的節點上跑約 4 小時,花費大概 100 美元,就能得到一個能寫詩、寫故事、回答簡單問題的基礎對話模型。
訓練跑滿 12 小時左右,模型的 CORE 指標就能超過當年的 GPT-2。
如果把算力預算拉到 1000 美元左右(訓練約 41.6 小時),它的邏輯表達會連貫得多,能做簡單的數學題和程式碼題。例如一個 30 層的模型訓練 24 小時後,總浮點運算量相當於 GPT-3 小型版(125M),ARC-Easy 得分能摸到 70 左右,MMLU 在 40 左右,GSM8K 也能拿到 20 左右。
Karpathy 表示程式碼遠未達到極限最佳化,還有大量唾手可得的提升空間。nanochat 將作為他正在開發的課程 LLM101n 的結業大作業,程式碼和復現流程已全部開源在 GitHub 上。
為什麼重要
對於想真正搞懂大模型內部細節的開發者或高校研究人員,nanochat 是目前最乾淨的實踐藍本。過去你想搞清楚預訓練、SFT 和強化學習是怎麼串起來的,得在幾個龐大臃腫的開源框架之間來回倒騰,而 nanochat 用幾千行無依賴的程式碼就把整個黑盒拆開了。
和那些動輒上萬行配置的生產級框架相比,它不追求極致吞吐,核心價值在於極高的可讀性與可修改性。如果你有一筆幾百美元的算力預算,想自己魔改演算法做實驗,或者單純想完整走一遍造模型的全過程,現在直接克隆這個倉庫上手是最順暢的路徑。
來源 (1)
- @karpathy(在新分頁開啟)原文x.com