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 Agent 扇出設計的 microVM 沙箱執行期。它消除了在為程式碼解釋、工具使用或評估展開等任務建立大量短壽命沙箱時,啟動 VM 或容器所帶來的昂貴冷啟動成本。透過允許從預熱的父級快照進行 fork,它消除了為每個新請求重複匯入沉重 ML 函式庫(如 NumPy 或 PyTorch)的需要。
工作原理
forkd 基於 Firecracker 構建,採用「從預熱中 fork」的方法。父 VM 啟動一次並載入必要的執行期(例如 Python 及其依賴項)。該狀態會被暫停並快照到磁碟。當需要新的沙箱時,forkd 會透過 MAP_PRIVATE 使用 mmap 父級記憶體映像來生成子 microVM。這利用了 Linux 核心的寫時複製 (CoW) 機制,這意味著子進程在發生分歧之前會共享父進程的常駐記憶體,從而實現近乎瞬時的啟動時間。
它還支援 BRANCH 操作,允許在執行過程中(思考過程中)對正在運行的沙箱進行快照並恢復,使 Agent 能夠 fork 它們的狀態並並行探索不同的路徑。
適用對象
- AI Agent 開發者:正在構建程式碼解釋器或 Jupyter 核心沙箱,且每次迭代都需要全新的隔離環境的開發者。
- ML 評估框架:需要執行數百個並行測試展開(例如 SWE-bench)而無需承擔 Docker 冷啟動開銷的使用者。
- 注重安全的開發者:在 CI 或使用者環境中,需要 KVM 級硬體隔離來執行不可信程式碼的開發者。
- 自我託管使用者:正在尋找託管沙箱 SaaS 提供商的開源 Apache 2.0 替代方案的開發者。
亮點
- 極速啟動:可以在約 101 ms 內 fork 100 個 microVM。
- 硬體隔離:每個子進程都是由 KVM 支援的獨立 Firecracker microVM,提供比標準容器更強的隔離性。
- 即時分支:能夠在短短 56 ms (p50) 內對運行的 VM 進行快照與恢復,允許 Agent 在執行中途進行 fork。
- Diff-Snapshot 鏈:支援堆疊快照(例如 base $ ightarrow$ numpy $ ightarrow$ pandas),以節省磁碟空間並避免重複基礎映像檔。
- 完整的 Linux 環境:與某些函數級執行期不同,子進程是真實的 Linux VM,支援多 vCPU 與完整的 TCP 網路。