deeplethe/forkd

Fork() for AI agent microVMs. Spawn 100 children in ~100ms from a warm parent; BRANCH a live VM in ~150ms. KVM-isolated, snapshot CoW.

解決する課題

forkdは、AIエージェントのファンアウト向けに設計されたmicroVMサンドボックスランタイムです。コードの解釈、ツールの使用、または評価のロールアウトといった、短寿命のサンドボックスを大量に起動する際に発生する、VMやコンテナのコールドブートに伴う高いコストを排除します。ウォーム状態の親スナップショットから子プロセスをフォークできるようにすることで、新しいリクエストごとに重いMLライブラリ(NumPyやPyTorchなど)を繰り返しインポートする必要がなくなります。

仕組み

Firecrackerをベースに構築されたforkdは、「fork-from-warm」アプローチを採用しています。親VMは一度起動し、必要なランタイム(例:Pythonとその依存関係)をロードします。この状態は一時停止され、ディスクにスナップショットとして保存されます。新しいサンドボックスが必要になると、forkdはMAP_PRIVATEを使用して親のメモリイメージをmmapする子microVMを起動します。これにより、Linuxカーネルのコピーオンライト(CoW)メカニズムが活用され、子プロセスは分岐するまで親の常駐メモリを共有するため、ほぼ瞬時の起動が可能になります。

また、BRANCH操作もサポートしています。これにより、実行中のサンドボックスを(思考の途中で)スナップショットとして保存して再開することができ、エージェントが自身の状態をフォークして異なるパスを並列に探索することを可能にします。

対象ユーザー

  • AIエージェント開発者: コードインタープリタやJupyterカーネルのサンドボックスを構築しており、各ターンで新しく隔離された環境を必要とする方。
  • ML評価ハーネス: Dockerのコールドスタートのオーバーヘッドなしに、数百の並列テストロールアウト(例:SWE-bench)を実行するユーザー。
  • セキュリティ重視の開発者: CIやユーザーごとの環境において、信頼できないコードの実行にKVMレベルのハードウェア隔離を必要とする方。
  • セルフホスター: 管理型のサンドボックスSaaSプロバイダーに代わる、オープンソースのApache 2.0ライセンスの代替手段を探している開発者。

ハイライト

  • 極限の起動速度: 約101 msで100個のmicroVMをフォーク可能。
  • ハードウェア隔離: 各子はKVMによってバックアップされた個別のFirecracker microVMであり、標準的なコンテナよりも強力な隔離を提供します。
  • ライブブランチング: 実行中のVMをわずか56 ms (p50) でスナップショットして再開できるため、エージェントは実行の途中でフォークできます。
  • Diff-Snapshotチェーン: スナップショットのスタッキング(例:base $ ightarrow$ numpy $ ightarrow$ pandas)をサポートし、ディスク容量を節約し、ベースイメージの重複を回避します。
  • 完全なLinux環境: 一部の関数レベルのランタイムとは異なり、子はマルチvCPUサポートと完全なTCPネットワークを備えた本物のLinux VMです。