AWS, SOCI로 딥러닝 컨테이너 콜드 스타트 7분에서 21초로 줄였다
AWS가 딥러닝 AMI(DLAMI)와 딥러닝 컨테이너(DLC)에서 SOCI 스냅샷터와 인덱스를 지원하기 시작했다고 머신러닝 블로그에서 밝혔다. Seekable OCI(SOCI)는 필요한 파일만 선택적으로 내려받아 컨테이너 이미지를 효율적으로 관리하는 기술로, 계층 기반 인덱싱으로 이미지 안 파일 위치를 매핑해 시작에 필요한 파일만 불러오는 지연 로딩(lazy loading)을 가능하게 한다.
이 방식은 네트워크 대역폭 사용을 줄이고 컨테이너 시작 시간을 개선해, 클라우드에서 대용량 컨테이너 이미지를 다루는 조직에 특히 유용하다. AWS는 AI와 ML 워크로드를 대규모로 배포할수록 컨테이너 시작 시간이 운영 환경의 병목이 된다고 설명했다.
전통적 방식은 워크로드를 시작하기 전에 이미지 전체를 내려받아야 한다. 표준 도커 이미지 풀은 15~20GB 이미지의 경우 인스턴스당 4~6분이 걸려 스케일링 때 훈련 작업과 추론 엔드포인트를 지연시킨다. 이미지를 받는 동안 GPU 인스턴스는 유휴 상태로 비싼 연산 시간을 태우고, 수요가 급증할 때 느린 시작이 빠른 대응을 막아 성능 저하나 요청 누락으로 이어진다.
DLAMI와 DLC는 컨테이너를 가져올 때 세 가지 방식을 제공한다. 표준 도커 풀, SOCI 병렬 풀, 그리고 SOCI 인덱스를 통한 SOCI 지연 로딩이다. 도커 풀은 순차적이라 느리고, 병렬 풀은 다운로드를 잘게 나눠 더 빠르게 시작하지만 연산 자원을 더 쓰며, 지연 로딩은 거의 즉시 컨테이너를 띄우지만 파일을 필요할 때 가져와야 한다.
지연 로딩과 병렬 풀 중 무엇을 쓸지는 이미지와 인스턴스 사양, 스토리지 구성에 달려 있다. 지연 로딩은 이미지에 SOCI 인덱스가 있어야 하며 없으면 표준 풀로 되돌아간다. 저사양 인스턴스는 자원 절약을 위해 지연 로딩이, 다수의 vCPU와 높은 대역폭을 갖춘 고사양 인스턴스는 병렬 풀이 유리하다.
지연 로딩 벤치마크는 g5.2xlarge 인스턴스와 500GiB·3000 IOPS EBS 환경에서 vLLM 0.19.0 컨테이너(압축 9.72GB, 디스크 32.7GB)로 측정했다. 로컬에 이미지가 없는 상태에서 표준 도커는 이미지 전체를 받아 풀고 컨테이너를 띄우는 데 총 6분 59.099초가 걸렸다.
같은 조건에서 nerdctl과 SOCI 스냅샷터로 지연 로딩하면 인덱스와 시작에 필요한 계층만 받아 21.125초 만에 컨테이너가 떴다. 나머지 계층은 필요에 따라 백그라운드에서 불러온다. 약 7분이 21초로 줄어든 셈이다.
병렬 풀 모드는 시작 전에 이미지 전체를 받되 표준 도커보다 높은 동시성으로 내려받는다. 시작 시점에 전체 이미지가 필요하거나 I/O 집약적 워크로드에 적합하다. AWS는 g5.4xlarge와 500GiB gp3(16000 IOPS·1000MB/s) 환경에서 sglang 컨테이너(압축 19.32GB, 디스크 60.4GB)로 이 모드를 측정했으며, 공용 ECR은 CloudFront를 거쳐 대역폭이 제한되므로 S3에서 직접 제공되는 프라이빗 ECR을 벤치마크에 썼다고 밝혔다.
SOCI 스냅샷터는 DLAMI에서 기본값이 지연 로딩이며, 병렬 풀은 /etc/soci-snapshotter-grpc/config.toml 설정을 바꾸고 서비스를 재시작해 켤 수 있다. 이미지당 동시 다운로드와 압축 해제 수는 인스턴스 유형과 대역폭에 맞춰 조정할 수 있다. -soci 태그가 붙은 딥러닝 컨테이너는 SOCI 인덱스가 미리 생성돼 레지스트리에 올라가 있어 별도 작업 없이 지연 로딩이 동작한다.