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 커널의 copy-on-write (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입니다.