autoresearch-mlx — Apple Silicon(MLX)向け autoresearch ポート

AI/ML

概要

Apple Silicon(M1/M2 系)向けに Karpathy 氏の autoresearch を MLX を使って移植したリポジトリです。autoresearch は「program.md」によって制御される、5分という短い壁時計時間内で自律的にモデル改良を試行する実験ループの実装で、元実装は PyTorch を前提としていました。本フォークはその設計原則を維持しつつ、PyTorch を必須とせず Apple の ML 環境でネイティブ実行できるように調整されています。小規模でシンプル、ローカル Mac で素早く自動探索を試したい場面に適しています。

GitHub

リポジトリの統計情報

  • スター数: 53
  • フォーク数: 7
  • ウォッチャー数: 53
  • コミット数: 2
  • ファイル数: 9
  • メインの言語: Python

主な特徴

  • Karpathy の autoresearch のデザインルール(5分制限、単一 train.py、val_bpb 指標、git による keep/revert)を保持
  • MLX を利用して Apple Silicon 上でネイティブに動作、PyTorch 非依存
  • 小さなコードベースでローカル自律実験ループを素早く試せる
  • program.md を用いた説明的・宣言的な実験制御(人間が書き換えて探索を指示)

技術的なポイント

本プロジェクトの技術的要点は「設計原則を守りつつ、実行バックエンドを Apple Silicon 向けに差し替えた」点にあります。オリジナルの autoresearch が PyTorch 上で実験の訓練ループやモデル更新を行っていたのに対し、本フォークは MLX(ml-explore/mlx)を橋渡しとして用いることで、Metal/CoreML ベースの実行環境でトレーニング風の処理を行えるようにしています。これにより、Mac の GPU(Apple Silicon の Neural Engine や GPU)でネイティブに計算を進められ、PyTorch をインストールできない・したくない環境でも自律探索ループを回せるメリットがあります。

設計面では元来のルール(5分の壁時計時間枠、単一の可変 train.py、単一の評価指標 val_bpb、git を使った変更履歴と戻し)がそのまま維持されており、ユーザーは program.md に記した指示に従って試行内容を変え、短時間での反復実験を行えます。train.py は mutable(可変)な単一ファイルとして扱われ、実験中の変更がそのまま探索に反映される設計です。評価指標 val_bpb(validation bits-per-byte に相当するメトリクス)を基準にして保持/破棄の判断を行うため、結果の比較がシンプルです。

実装は軽量で、主要なロジックは少数のスクリプトと説明ドキュメントで構成されています。prepare.py 等が環境準備や依存チェックを担う想定で、ユーザーはまず環境整備を行い、program.md を編集してからループを起動します。git ベースの keep/revert ワークフローにより、自律的な改変が行き過ぎた場合でも簡単に元の状態へ戻せる点が運用性の高い特徴です。一方で、MLX の仕様や Apple のハードウェア依存性により、計算グラフや最適化器の挙動は PyTorch 実装と完全互換ではないため、大規模な研究用途や高度なモデル実験には調整が必要です。

プロジェクトの構成

主要なファイルとディレクトリ:

  • .gitignore: file
  • LICENSE: file
  • README.md: file
  • prepare.py: file
  • program.md: file

…他 4 ファイル

まとめ

小規模で実用的、Apple Silicon 上で自律的な実験ループを手早く試せる移植プロジェクトです。

リポジトリ情報:

READMEの抜粋:

autoresearch-mlx

Apple Silicon (MLX) port of Karpathy’s autoresearch.

Full credit to @karpathy for the core idea: fixed-time autonomous research loops controlled entirely through program.md. This fork preserves every design rule — 5-minute wall-clock budget, single mutable train.py, one metric (val_bpb), keep/revert via git — and runs natively on Apple Silicon via MLX. No PyT…