TL;DR
Amazon SageMaker HyperPod의 대형 LLM 추론 Pod는 Amazon ECR에서 컨테이너 이미지를 받고 Amazon S3 같은 원격 저장소에서 가중치를 내려받느라 시작까지 수십 분이 걸릴 수 있습니다. Model caching은 가중치를 노드별 로컬 NVMe에 미리 저장하고 추론 서버 이미지를 사전 다운로드해 Pod가 약 7 GB/s의 로컬 읽기로 준비되게 만듭니다. 57–145 GB 모델의 Scale-out 시간은 가중치 캐싱으로 약 60% 줄고, 이미지 캐싱은 새 ECR 다운로드 대비 최대 97%의 콜드 이미지 Pull 시간 감소를 달성했습니다. 다만 캐시는 노드마다 별도로 유지되며 최초 활성화 때 원격 다운로드가 필요하고, 같은 경로의 파일 변경은 명시적으로 리소스 사양을 바꿔야 반영됩니다.
섹션별 상세
kubectl get modeldatacacheconfig -n NAME STATE TARGET READY AGE
example-model-cache Ready 10 10 5mModelDataCacheConfig의 전체 캐시 상태와 대상 노드 수, 준비된 노드 수를 확인하는 명령입니다.
kubectl get inferenceimagecache -n hyperpod-inference-system NAME PHASE CACHED TARGET AGE
iic-vllm-openai-ml-g5-24xlarge-a1b2 Complete 10 10 3mInferenceImageCache의 이미지 사전 다운로드 상태와 캐시된 노드 수를 확인하는 명령입니다.
apiVersion: inference.sagemaker.aws.amazon.com/v1
kind: InferenceEndpointConfig
metadata:
name: example-model
namespace: default
spec:
modelName: example-model
modelSourceConfig:
modelSourceType: s3
s3Storage:
bucketName: example-bucket
region: us-west-2
modelLocation: "models/example-model"
modelCacheConfig:
weightsCache:
enabled: true
imageCache:
enabled: true
instanceType: ml.g5.24xlarge
worker:
image: vllm/vllm-openai:latest
modelInvocationPort:
containerPort: 8000
modelVolumeMount:
name: model-weights
mountPath: /opt/ml/model
resources:
limits:
nvidia.com/gpu: "4"InferenceEndpointConfig에서 모델 가중치와 추론 서버 이미지를 모두 캐싱하도록 설정하는 예시입니다.
apiVersion: inference.sagemaker.aws.amazon.com/v1
kind: JumpStartModel
metadata:
name: example-jumpstart-model
namespace: default
spec:
model:
modelId: "meta-textgeneration-llama-3-1-8b-instruct"
acceptEula: true
server:
instanceType: ml.g5.24xlarge
modelCacheConfig:
weightsCache:
enabled: true
imageCache:
enabled: trueJumpStartModel에서 JumpStart 모델의 가중치와 이미지 캐시를 동시에 활성화하는 예시입니다.
용어 해설
- 모델 캐싱(Model Caching)
- — 모델 가중치와 추론 서버 이미지를 Pod 시작 전에 노드의 로컬 NVMe에 저장하는 방식입니다. 이후 Pod는 Amazon S3나 Amazon ECR에서 네트워크로 다시 받지 않고 로컬 저장소에서 읽어 콜드 스타트와 Scale-out 지연을 줄입니다.
- 콜드 스타트(Cold Start)
- — 추론 Pod가 처음 실행되거나 새 노드로 확장될 때 컨테이너 이미지와 모델 가중치를 준비하는 데 걸리는 시간입니다. 대형 모델에서는 네트워크 다운로드가 길어져 자동 확장이 실제 트래픽을 처리하기까지 수십 분이 걸릴 수 있습니다.
- HorizontalPodAutoscaler
- — Kubernetes에서 트래픽이나 리소스 사용량에 따라 실행 중인 Pod 수를 자동으로 늘리거나 줄이는 기능입니다. 새 Pod가 생성돼도 이미지와 모델 다운로드가 끝나야 요청을 처리하므로 Scale-out 효과가 지연될 수 있습니다.
- Custom Resource Definition
- — Kubernetes API에 애플리케이션별 리소스 종류를 추가하는 확장 기능입니다. 이 글에서는 ModelDataCacheConfig와 ModelImageCache가 모델 가중치와 컨테이너 이미지 캐시의 생성, 상태 관리, 정리를 맡도록 사용됩니다.
- 로컬 NVMe 저장소(Local NVMe Storage)
- — 각 클러스터 노드에 연결된 고속 로컬 저장 공간입니다. 모델 캐싱은 이곳에 가중치를 저장하고 약 7 GB/s 수준으로 읽어 원격 저장소에서 네트워크로 내려받는 과정을 Pod 시작 시점에 생략합니다.
기술
- Amazon SageMaker HyperPod
- Amazon ECR
- Amazon S3
- Amazon FSx for Lustre
- HuggingFace Hub
- vLLM
- LMI
- Kubernetes
활용 사례
- 대형 LLM 추론 엔드포인트의 Scale-out
- HorizontalPodAutoscaler 기반 트래픽 급증 대응
- Amazon SageMaker JumpStart 모델 배포
- 여러 추론 배포가 공유하는 컨테이너 이미지 캐싱
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.