forkd: AI エージェントのファンアウト向けマイクロVMサンドボックスランタイム(ミリ秒スケールのスナップショットフォーク)
forkd: AI エージェントのファンアウト向けマイクロVMサンドボックスランタイム(ミリ秒スケールのスナップショットフォーク)
解決する課題
forkd は AI エージェントのファンアウト向けに設計されたマイクロVMサンドボックスランタイムです。AI エージェントが多数の短命で分離された環境(例: コード解釈、ツール使用、評価ロールアウト)を生成する必要がある際に、仮想マシンやコンテナのコールドブートに伴う高レイテンシとリソースオーバーヘッドを解消します。
仕組み
Firecracker 上に構築された forkd は「ウォーム状態からのフォーク」アプローチを採用しています。親VMは一度起動し、Python や機械学習モデル、NumPy などの依存関係といった必要なランタイムをロードした後、スナップショットとしてディスクに一時停止します。子VMは mmap と MAP_PRIVATE を用いて親のメモリイメージをマッピングすることで生成されます。これにより、子VMはページレベルのコピーオンライト(CoW)で親の常駐メモリを共有でき、コールドブートに比べてはるかに高速に生成できます。
さらに、forkd は BRANCH をサポートしており、実行中のサンドボックスをスナップショット化し、思考途中の複数の分岐パスとして再開できます。また diff‑snapshot chain により、NumPy と Pandas といった依存関係のレイヤーをベースメモリイメージを重複させずに積み重ねることが可能です。
対象ユーザー
- AI エージェント開発者: 各ツール呼び出しごとに新しい分離環境が必要なコードインタプリタや Jupyter カーネルサンドボックスを構築する方。
- ML 評価ハーネス: Docker のコールドスタートのオーバーヘッドなしに、数百の並列テストロールアウト(例: SWE‑bench)を実行するユーザー。
- セキュリティ志向のユーザー: CI やマルチテナント環境で、信頼できないコード実行のために KVM レベルのハードウェア分離が必要な方。
- セルフホスティング志向: 管理されたサンドボックス SaaS プラットフォームの代替として、オープンソースかつ Apache 2.0 ライセンスのソリューションを求める開発者。
ハイライト
- 極限の生成速度: 約 101 ms で 100 台のマイクロVMをフォーク可能。
- ライブ BRANCH: 実行中のサンドボックスをスナップショット化し、最速 56 ms(p50)で再開可能。
- ハードウェア分離: 各子VMは KVM バックエンドの Firecracker マイクロVMで、標準コンテナより強固な分離を提供。
- スタック可能なスナップショット: diff‑snapshot chain に対応し、レイヤード依存関係を効率的に管理。
- フル Linux 環境: 各子VMはマルチ vCPU とフル TCP ネットワークを備えた実際の Linux カーネルを提供。関数レベルのランタイムとは異なります。
- 開発者向けツール: REST API、Python/TypeScript/MCP SDK、Prometheus メトリクスを含む。
要約: ミリ秒単位でスナップショットのコピーオンライトを利用し、AI エージェントのファンアウト向けに隔離された温められた環境を高速に生成するマイクロVMサンドボックスランタイム。
タイトル: forkd: AI エージェントのファンアウト向けマイクロVMサンドボックスランタイム(ミリ秒スケールのスナップショットフォーク)
Sources
- undefineddeeplethe/forkd