선택 결정 트리즉시 응답 필요? ├─ 아니오 → 전체 데이터셋 일괄? → 예: 배치 변환 / 아니오(개별·큰 페이로드·긴 처리): 비동기 └─ 예 → 트래픽 꾸준? → 예: 실시간 / 아니오(간헐·콜드스타트 허용): 서버리스추가 제약: 페이로드>6MB 또는 처리>60초 → 실시간/서버리스 탈락, 비동기/배치로
💡 관련 이론: 4옵션의 근본은 "always-on 비용 vs 지연 vs 처리량" 삼각 트레이드오프다. 실시간은 지연 최소·비용 상시, 서버리스는 비용 0~·콜드 스타트 지연, 비동기는 큰 작업·큐 지연, 배치는 처리량 최대·즉시성 0. 시험은 이 셋 중 무엇을 우선하라고 시나리오에 숨겨둔다. "50ms 이내"는 지연 우선(실시간), "유휴가 많아 비용 아까움"은 비용 우선(서버리스), "100만 건 야간 처리"는 처리량 우선(배치)이다.
Auto Scaling: SageMakerVariantInvocationsPerInstance 타깃 추적이 표준, 최소 1대 유지(0 불가). 갑작스러운 스파이크는 Auto Scaling이 못 따라가니 예약 스케일링이나 높은 MinCapacity로 대비한다.
인스턴스 선택: 전통 ML(XGBoost)=CPU(m5/c5), 딥러닝=GPU(g4dn/g5), 딥러닝 비용 절감=Inferentia(inf1/inf2). 결정이 어려우면 Inference Recommender가 부하 테스트로 최적 구성을 추천한다.
배포부터 스케일링, 교체까지의 흐름을 코드 한 덩어리로 압축하면 다음과 같다.
import boto3sm = boto3.client("sagemaker")aas = boto3.client("application-autoscaling")# 1) Config → Endpoint 생성sm.create_endpoint_config(EndpointConfigName="cfg-v1", ProductionVariants=[{ "VariantName": "AllTraffic", "ModelName": "churn-model", "InstanceType": "ml.m5.xlarge", "InitialInstanceCount": 2}])sm.create_endpoint(EndpointName="churn-ep", EndpointConfigName="cfg-v1")# 2) 오토스케일링 등록 (최소 1대, 0 불가)aas.register_scalable_target( ServiceNamespace="sagemaker", ResourceId="endpoint/churn-ep/variant/AllTraffic", ScalableDimension="sagemaker:variant:DesiredInstanceCount", MinCapacity=2, MaxCapacity=10)# 3) 새 모델로 무중단 교체 — 엔드포인트 이름은 그대로sm.update_endpoint(EndpointName="churn-ep", EndpointConfigName="cfg-v2")
⚠️ 함정: 오답으로 쓰이기 쉬운 경우가 둘 있다. ① XGBoost에 GPU를 붙이는 것 — 트리 모델은 GPU 이득이 미미하므로 CPU가 정답. ② 실시간 엔드포인트를 0으로 스케일하려는 것 — 실시간은 최소 1대 유지가 강제이므로 0이 필요하면 서버리스/비동기로 가야 한다.
MME vs MCE는 시험에서 헷갈리기 쉬운 짝이다. 결정 키워드는 "프레임워크가 같은가/다른가"와 "모델이 수백 개인가/소수인가"다. 같은 컨테이너 + 다수 = MME, 다른 컨테이너 + 소수 = MCE. 추론 파이프라인은 "선택 호출"이 아니라 "순차 실행"이라는 점에서 둘과 다르다. 입력이 한 컨테이너를 거쳐 다음으로 흘러간다.
콜드 스타트가 문제면 Provisioned Concurrency로 미리 워밍(상시 비용 발생).
비용 이점은 "유휴가 많을 때"만 유효하고, 꾸준히 높은 트래픽이면 실시간이 더 싸다.
인스턴스 타입을 고르지 않으므로 GPU가 필요한 모델은 배포할 수 없다.
비용 최적화의 큰 그림은 "유휴 비용을 없애는 것"이다. 트래픽이 0으로 떨어지는 구간이 있으면 서버리스·비동기·배치로 그 구간 비용을 0에 가깝게 만들 수 있다. 반대로 트래픽이 항상 차 있으면 실시간 + Auto Scaling + (다수 모델이면)MME + (딥러닝이면)Inferentia로 단위 비용을 낮춘다. 추론 비용 시나리오는 거의 다 이 두 갈래로 환원된다.