KarpathyのautoresearchをローカルLLMで動かす — クラウドAPI不要・コスト$0の自律AI研究
はじめに
Andrej Karpathy(OpenAI共同創設者)が公開したautoresearchは、「LLMに自分でML研究をさせる」という野心的な実験です。LLMがGPTの訓練スクリプトを自律的に修正し、5分間の実験を実行、val_bpb(バリデーション損失)が改善すれば採用、悪化すれば破棄——これを無限ループで回し続けます。
オリジナルはClaude Code(クラウドAPI)を研究者として使いますが、SohniSwatantraによるフォーク版はこれをQwen 3.5 9B + ollamaに置き換え、単一GPUで完結させています。APIキー不要、クラウド依存なし、実験あたりのコスト$0。
GitHub: https://github.com/SohniSwatantra/autoresearch-local-llm
アーキテクチャ:1台のGPUでLLMと訓練を共存
このフォークの最大の特徴は、LLMエージェントとGPT訓練が同じGPU上で動くことです。
GPU (48GB VRAM) ├── Qwen 3.5 9B via ollama (~12GB) └── GPT training via train.py (~35GB)
VRAM制約に対応するため、オリジナルからハイパーパラメータを調整しています。
- Depth: 8層 → 4層
- Device batch size: 128 → 64
- Total batch tokens: 524K → 65K
- Window pattern: SSSL → L
モデルサイズを縮小した分、LLMがより多くの実験を回すことで補償するという設計判断です。
自律研究ループの仕組み
全体のフローは驚くほどシンプルです。
ステップ1: LLMに修正案を生成させる
agent.pyがtrain.pyの現在のコードと実験履歴(results.tsv)をプロンプトに含めてQwen 3.5に送信。LLMはval_bpbを下げるための具体的なコード修正を提案します。
プロンプトには明確な制約が与えられます: ・train.pyのみ修正可能(prepare.pyは読み取り専用) ・新しいパッケージのインストール不可 ・5分間の固定時間予算 ・利用可能なVRAMは約35GB
ステップ2: 構文検証とgit commit
提案されたコードをast.parse()で構文チェック。有効ならtrain.pyを上書きしてgit commitします。
ステップ3: 5分間の実験実行
uv run train.pyを実行。タイムアウトは10分(通常5分で完了)。
ステップ4: 結果判定
val_bpbが改善 → keep(ブランチを前進) val_bpbが同等以下 → discard(git reset --hard) クラッシュ → crash(ログを次のプロンプトに含めて修正を試行)
3回連続クラッシュでベースラインにリセットするフェイルセーフ機構も備えています。
agent.py の設計が秀逸
agent.pyは約250行の単一ファイルで、以下の機能を実装:
- ollama API呼び出し(requests.post でシンプルに)
- Git操作(commit, reset, rev-parse)
- 実験実行とログ解析
- 結果のTSV記録
- LLMレスポンスからのコードブロック抽出
特筆すべきは、LLMの応答からPythonコードブロックを正規表現で抽出し、ast.parse()で検証するパイプラインです。構文エラーがあればスキップし、有効なコードのみ実験に回します。
def extract_code_from_response(response):
blocks = re.findall(r"
(?:python)?\s*\n(.*?)```", response, re.DOTALL)
if blocks:
return max(blocks, key=len) # 最長のコードブロックを採用
■ コスト比較 | 構成 | 実験あたりコスト | 100実験 | |------|--------------|---------| | オリジナル(Claude Code API) | ~$0.05-0.20 | $5-20 | | フォーク版(Nosana Pro 6000) | $0.08 | ~$8 | | フォーク版(自前GPU) | $0 | $0 | ■ program.md — LLMへの指示書 Karpathyのオリジナルprogram.mdには重要な設計哲学が含まれています: ・「NEVER STOP」 — 人間が手動で停止するまで無限に実験を続ける ・簡潔性基準 — 0.001の改善でも20行の複雑なコードが必要なら採用しない。逆にコード削減で同等の結果なら即採用 ・ユーザーは寝ている前提 — 1実験5分で1時間に12回、8時間睡眠中に約100実験を自動実行 これは「AIに寝ている間に研究させる」という、まさにautoresearchの本質です。 ■ ローカルLLMで動かす意義 このフォークが示すのは、ローカルLLMの実用性です。 ・Qwen 3.5 9B(9Bパラメータ)でもML研究の自律ループが成立する ・クラウドAPIのレートリミットやコストを気にせず無限に回せる ・24GB以上のGPUがあれば誰でも自分の研究を自動化できる SoyLMを含むローカルRAGツール群と同様、「ローカルで完結する」AIシステムの可能性を広げるプロジェクトです。 ■ セットアップ手順
# ollamaインストール & モデル取得 curl -fsSL https://ollama.com/install.sh | sh ollama serve & ollama pull qwen3.5:9b
# リポジトリクローン git clone https://github.com/SohniSwatantra/autoresearch-local-llm.git cd autoresearch-local-llm pip install uv uv sync
# 実行 bash run_pipeline.sh ```
24GB以上のVRAMが必要(48GB推奨)。
まとめ
Karpathyのautoresearchは「LLMに研究させる」というコンセプトを提示し、このフォークは「それをクラウド不要で実現できる」ことを証明しました。ローカルLLMの性能向上とともに、個人開発者がAI研究を自動化する時代が到来しています。
GitHub: https://github.com/SohniSwatantra/autoresearch-local-llm オリジナル: https://github.com/karpathy/autoresearch