由Andrej Karpathy開發的一個自主人工智慧研究框架,讓AI代理(Claude/Codex)能在單一GPU上過夜,迭代地修改、訓練和評估一個小型LLM — 在你睡覺時運行約100個實驗。
autoresearch — 自主式 AI 代理 LLM 研究框架
總覽
autoresearch 是 Andrej Karpathy 開發的一個實驗性框架,旨在自動化 AI/ML 研究迭代的過程。其核心理念非常簡單:提供一個 AI 代理(例如 Claude 或 Codex)一個真實、可運作的 LLM 訓練程式碼庫,讓它能夠自主地提出變更、運行 5 分鐘的訓練實驗、評估結果並進行迭代——所有這些過程都無需人工干預。
您可以將其想像成一個極簡、獨立的AI 研究實驗室,可在單一 GPU 上過夜運行,產生約 100 個實驗的日誌,並(希望)在早晨得到一個逐步改進的語言模型。
背景與動機
Karpathy 在 README 的開頭描繪了一個對未來的諷刺性願景——一個 AI 研究不再由人類進行,而是由「運行在計算集群巨結構上的自主 AI 代理群」來完成的世界。他寫道,這個儲存庫是「一切的開端」。
實際的動機則更為務實:研究迭代之所以緩慢,是因為人類需要吃飯、睡覺和參加會議。這個專案用一個可以 24/7 運行實驗的 AI 代理取代了人類在迴路中的角色,從而顯著加快了 ML 研究的速度並使其更加自動化。
如何運作
工作流程是一個緊密的編輯 → 訓練 → 評估 → 保留/捨棄迴路:
- 代理讀取
program.md— 這是一個 Markdown 文件,包含由人類研究員編寫和維護的研究說明和上下文。 - 代理修改
train.py— 這是包含 GPT 模型架構、優化器(Muon + AdamW)和訓練迴路的單一 Python 文件。代理可以更改任何內容:架構、超參數、優化器設定、批次大小等。 - 訓練精確運行 5 分鐘(實際時間,不含啟動/編譯)。
- 計算指標
val_bpb(驗證每位元組位元數) — 值越低越好。它與詞彙表大小無關,因此可以公平地比較架構變更。 - 代理決定是否保留或捨棄變更,然後重複。
這大約產生每小時 12 個實驗和約過夜 100 個實驗。
儲存庫結構
autoresearch/
├── prepare.py # 固定:一次性資料準備、BPE 分詞器訓練、資料載入器、評估工具
├── train.py # 由代理編輯:GPT 模型、優化器、訓練迴路
├── program.md # 由人類編輯:代理說明和研究上下文
├── analysis.ipynb # 用於分析實驗結果的筆記本
├── pyproject.toml # 依賴項(透過 uv 管理)
└── progress.png # 顯示訓練進度的預覽圖片
主要檔案說明
| 檔案 | 所有者 | 用途 |
|---|---|---|
prepare.py |
人類(固定) | 下載資料分片、訓練 BPE 分詞器、提供資料載入器和評估工具 |
train.py |
AI 代理 | 完整的 GPT 實現 + 訓練迴路 — 代理的沙盒 |
program.md |
人類(可迭代) | 研究「技能」/代理的說明 |
設計理念
1. 單一修改檔案
代理只修改 train.py。這使得範圍易於管理且差異易於審查。它也將代理的動作空間限制在有意義的 ML 變更上,而不是基礎設施/工具變更。
2. 固定時間預算
每次實驗精確運行 5 分鐘的實際訓練時間(不含啟動)。這確保了:
- 所有實驗都可直接比較,無論架構如何變更(模型大小、批次大小等)
- 代理能為您的特定硬體找到最佳模型配置
- 可預測的吞吐量:約 12 個實驗/小時
權衡:結果在不同計算平台之間不可移植(H100 的運行結果不能與 A100 的運行結果比較)。
3. 自我包含
沒有分散式訓練,沒有複雜的設定檔,沒有外部研究基礎設施。只有 PyTorch + 少數小型套件、一個 GPU、一個檔案、一個指標。這使得專案易於理解、分支和擴展。
4. 以 program.md 作為人類介面
Karpathy 沒有從頭開始編寫研究代理,而是使用 program.md 作為一個輕量級的「技能」— 一個 Markdown 文件,為 AI 代理提供上下文、目標和限制。人類會隨著時間迭代 program.md 來改進「研究組織程式碼」。
技術細節
模型與訓練
- 基於 nanochat 的簡化單 GPU 版本
- 預設使用Muon + AdamW 優化器(儘管代理可以更改此設定)
- 從頭開始在下載的文字資料分片上訓練GPT 風格模型
- 透過
prepare.py在資料本身上訓練 BPE 分詞器 - 評估指標:val_bpb(驗證每位元組位元數)
要求
- GPU: 單個 NVIDIA GPU(已在 H100 上測試)
- Python: 3.10+
- 套件管理器: uv
快速入門
# 1. 安裝 uv(如果尚未安裝)
curl -LsSf https://astral.sh/uv/install.sh | sh
# 2. 安裝依賴項
uv sync
# 3. 一次性資料準備(約 2 分鐘)
uv run prepare.py
# 4. 運行單次訓練實驗(約 5 分鐘)
uv run train.py
運行代理
在儲存庫目錄中啟動 Claude、Codex 或任何有能力的程式碼代理(具有檔案寫入權限),然後提示:
請查看 program.md,讓我們開始一個新實驗!我們先進行設定。
代理將讀取 program.md,提出對 train.py 的變更,運行訓練,評估結果並進行迭代。
重要性與影響
autoresearch 是自動化機器學習研究在微觀尺度上的概念驗證。雖然存在大型 AutoML 系統,但該專案的顯著之處在於:
- 簡潔性: 整個有意義的程式碼庫約為 3 個檔案
- 透明度: 每個代理的決策都會被記錄並可審查
- 可及性: 可在單個消費級/研究級 GPU 上運行
- 願景: 它證明了 AI 代理能夠自主進行真實 ML 研究的可行性
它也為「透過 Markdown 編程您的 AI 研究組織」提供了一個範本 — 這可能隨著 AI 程式碼代理能力的增強而成為標準的範式。
值得注意的分支
- miolini/autoresearch-macos — macOS/MPS 支援
摘要
| 屬性 | 值 |
|---|---|
| 類型 | 自主式 AI 研究代理框架 |
| 主要用途 | 過夜自動化 LLM 訓練實驗 |
| 代理介面 | program.md(Markdown 說明) |
| 代理動作空間 | train.py(GPT 模型 + 訓練迴路) |
| 實驗時長 | 5 分鐘(固定) |
| 吞吐量 | 約 12 個實驗/小時,約 100 個過夜 |
| 指標 | val_bpb(驗證每位元組位元數) |
| 硬體 | 單個 NVIDIA GPU(已測試 H100) |
| 授權 | MIT |