풀의 작동 방식
레시피의WarmPool 헬퍼는 설정된 수만큼 샌드박스를 시작하고
각 샌드박스에서 준비 상태 검사를 실행합니다. 각 샌드박스의 메인 프로세스는 명령어 사이에도 계속 실행 상태를 유지합니다.
주기적인 ping은 필요하지 않습니다.
각 워크로드는 준비 완료된 샌드박스 하나를 클레임하며, 이를 계기로 대체 샌드박스 준비가 트리거됩니다.
해당 클레임 내의 모든 exec()는 동일한 샌드박스와 파일을 공유합니다.
워크로드가 종료되거나 실패하면 헬퍼가 해당 샌드박스를 중지합니다. 이후 워크로드에는
별도의 샌드박스가 할당되므로 이전 워크로드의 로컬 상태를 물려받지 않습니다.
레시피 실행
Python 3.11 이상,uv,
그리고 서버리스 액세스 및 사용자 인증 정보가 필요합니다.
-
레시피 저장소를 다운로드하거나 복제한 다음
recipes/warm-pool을 여세요. 의존성을 설치하고 환경 파일을 생성하세요. -
.env파일과demo.py상단에서 사용자 인증 정보를 설정하세요.- Forge API 키
- CoreWeave API 액세스 토큰
.env에 Forge API 키를 추가하세요.demo.py에 다음 import 문을 추가하고 기존AUTH할당문을 교체하세요.이 코드는FORGE_API_KEY를 명시적으로 읽고 SDK에서 지원하는 인증 헤더를 사용합니다. 헤더 이름과 전략 이름은 호환성을 위한 식별자일 뿐이며, 실제 사용자 인증 정보는 Forge API 키입니다. 선택적 의존성인wandb는 설치하지 않아도 됩니다. -
비교를 실행하세요.
워크로드에 맞게 풀 조정하기
demo.py의 상수를 수정하세요.
demo.py의 WORKLOAD를 직접 작성한 코드로 바꾸세요. 공통 설정은 warm_pool.py의 prepare()에
추가하고, 애플리케이션에 맞는 준비 상태 검사 방식을 사용하세요.
비동기 워크로드 핸들러 안에서 여러 명령어를 실행하려면 레시피의 클레임 컨텍스트를
사용하세요.
풀 계속 실행하기
요청을 받는 동안에는 풀과 이를 감싸는Session 컨텍스트를 열어 두세요.
각 Python 프로세스는 자체 풀을 따로 가집니다. 데모에서는 비교가 끝나면 둘 다 닫습니다.
헬퍼는 5분 동안 유휴 상태인 샌드박스를 교체합니다. 각 샌드박스의 수명은 10분입니다.
풀은 컨텍스트가 열려 있는 동안 계속 보충됩니다. 이 기본값을 사용할 때는
작업이 5분 안에 여유 있게 끝나도록 하세요. 샌드박스를 클레임해도 기한은
재설정되지 않습니다. 더 긴 작업을 위한 설정과 중단된 run 이후의 정리 작업은
레시피를 참조하세요.
일시적인 준비 실패는 최대 세 번까지 시도합니다. 시도 횟수를 모두 소진하거나
준비 중 재시도할 수 없는 오류가 발생하면, 준비 완료 상태의 샌드박스가 남아 있더라도
이후의 모든 클레임이 실패합니다. 풀과 Session 컨텍스트를 종료하여 정리한 다음,
근본 원인을 해결한 후 새 풀을 생성하세요.
보충 시간을 줄이려면 자주 바뀌지 않는 의존성을 이미지에 미리 포함하거나, 준비된
워크스페이스 파일을 파일 시스템 스냅샷에서 복원하세요.
스냅샷은 설정된 마운트의 파일을 캡처합니다. 애플리케이션 프로세스는 여전히
별도로 시작해야 합니다. 샌드박스 템플릿에
공유 이미지와 스냅샷 설정을 저장할 수 있습니다.