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です。