CertNote/ 출퇴근 학습 노트
로드맵
KOEN
CLF-C02 · FoundationalCloud Practitioner - Foundational
DVA-C02 · AssociateDeveloper - Associate
SAA-C03 · AssociateSolutions Architect - Associate
SOA-C02 · AssociateCloudOps Engineer - Associate
SAP-C02 · ProfessionalSolutions Architect - Professional
DOP-C02 · ProfessionalDevOps Engineer - Professional
SCS-C03 · SpecialtySecurity - Specialty
MLA-C01 · AssociateMachine Learning Engineer - Associate
  • Week 1
    • 1.ML 수명주기와 ML 엔지니어의 역할
    • 2.ML 문제 유형과 평가 지표 기초
    • 3.AWS ML 스택 한눈에 보기
    • 4.SageMaker 개요: Studio, 학습/추론, 빌트인 알고리즘
    • 5.Week 1 종합 — ML 기초·AWS 스택 복습
  • Week 2
  • Week 3
  • Week 4
  • Week 5
  • Week 6
    • 1.추론 옵션 개요: 4가지 배포 방식과 선택 기준
    • 2.실시간 엔드포인트: 구성, 오토스케일링, 인스턴스 선택
    • 3.비용·고급 추론: 멀티모델, 멀티컨테이너, 추론 파이프라인, Inferentia
    • 4.배치·서버리스 추론 심화: 대량 처리 튜닝과 비용 트레이드오프
    • 5.Week 6 종합: 추론 배포 복습
  • Week 7
  • Week 8
  • Week 9
  • Week 10
AIF-C01 · FoundationalAI Practitioner - Foundational
DEA-C01 · AssociateData Engineer - Associate
MLS-C01 · SpecialtyMachine Learning - Specialty
합격 후기

© CertNote · 주간랩스

  • 소개
  • 수정 기록
  • 문의
  • 이용약관
  • 개인정보처리방침
← MLA-C01/Week 6/Day 5

기준: MLA-C01 시험 가이드·오류 제보

MLA-C01· AssociateWeek 6 · Day 5읽기 약 12분
핵심 정리
  • 추론 방식은 알고리즘이 아니라 요청 패턴이 결정한다 — 즉시성·트래픽·페이로드·비용 4축.
  • 4옵션: 실시간(꾸준+저지연) / 서버리스(간헐+0스케일) / 비동기(1GB·60분) / 배치(대량 일괄 최저 비용).
  • 비용이 걸리면 — 모델이 많으면 MME, 딥러닝이면 Inferentia, 유휴가 길면 0 스케일 옵션.
  • 한 엔드포인트에 묶는 방식은 MME(같은 컨테이너·다수) / MCE(다른 컨테이너·소수) / 파이프라인(순차 체인).
  • 무중단 배포는 새 EndpointConfig + update_endpoint(Blue/Green), 무위험 검증은 shadow testing.

Day 5 - Week 6 종합: 추론 배포 복습

Week 6 전체 지도

이번 주는 학습된 모델을 실제로 서빙하는 추론 배포를 다뤘다. Day1~4를 하나의 의사결정 흐름으로 엮어 시험장에서 바로 꺼낼 수 있게 정리한다.

                       [ 학습이 끝난 모델 ]
                                │
                    ① 어떻게 요청이 들어오는가?   ← Day1
        ┌───────────────┬───────┴───────┬───────────────┐
        ▼               ▼               ▼               ▼
     실시간          서버리스         비동기          배치 변환
   (꾸준·저지연)    (간헐·0스케일)  (큰 페이로드)   (대량 일괄)
        │
        │  ② 엔드포인트를 어떻게 운영하는가?      ← Day2
        ├─ Model → EndpointConfig → Endpoint
        ├─ 오토스케일링(InvocationsPerInstance, 최소 1대)
        ├─ 무중단 배포(update_endpoint, blue/green)
        └─ A/B(가중치) · Shadow(응답 폐기)
        │
        │  ③ 비용·복잡도를 어떻게 줄이는가?       ← Day3
        ├─ MME(같은 컨테이너 + 수백~수천 모델)
        ├─ MCE(다른 프레임워크 컨테이너 ≤15)
        ├─ 추론 파이프라인(전처리→추론→후처리)
        └─ Inferentia(딥러닝 추론 단가↓, Neuron 컴파일)
        │
        │  ④ 대량·간헐은 어떻게 튜닝하는가?       ← Day4
        ├─ 배치: InstanceCount · SplitType · BatchStrategy
        └─ 서버리스: MemorySize · MaxConcurrency · Provisioned Concurrency

4가지 추론 옵션 총정리

Day1의 핵심 표를 다시 머릿속에 새기자.

옵션응답트래픽페이로드/시간always-on 비용
실시간동기, ms~초꾸준<6MB, <60초있음(최소 1대)
서버리스동기, ms~초간헐<4MB, <60초없음(0 스케일)
비동기큐 기반 비동기가변, 긴 처리<1GB, <60분없음(0 스케일)
배치 변환작업 단위일괄전체 데이터셋없음(끝나면 종료)
선택 결정 트리
즉시 응답 필요?
 ├─ 아니오 → 전체 데이터셋 일괄? → 예: 배치 변환 / 아니오(개별·큰 페이로드·긴 처리): 비동기
 └─ 예 → 트래픽 꾸준? → 예: 실시간 / 아니오(간헐·콜드스타트 허용): 서버리스
추가 제약: 페이로드>6MB 또는 처리>60초 → 실시간/서버리스 탈락, 비동기/배치로

💡 관련 이론: 4옵션의 근본은 "always-on 비용 vs 지연 vs 처리량" 삼각 트레이드오프다. 실시간은 지연 최소·비용 상시, 서버리스는 비용 0~·콜드 스타트 지연, 비동기는 큰 작업·큐 지연, 배치는 처리량 최대·즉시성 0. 시험은 이 셋 중 무엇을 우선하라고 시나리오에 숨겨둔다. "50ms 이내"는 지연 우선(실시간), "유휴가 많아 비용 아까움"은 비용 우선(서버리스), "100만 건 야간 처리"는 처리량 우선(배치)이다.

실시간 엔드포인트 복습

  • 3계층 구조: Model(아티팩트 + 컨테이너) → EndpointConfig(인스턴스 타입·수, ProductionVariant 가중치) → Endpoint(HTTPS 실체). 이 분리가 무중단 Blue/Green 배포, A/B 테스트(가중치 분배), shadow testing(응답 폐기 검증)을 가능케 한다.
  • Auto Scaling: SageMakerVariantInvocationsPerInstance 타깃 추적이 표준, 최소 1대 유지(0 불가). 갑작스러운 스파이크는 Auto Scaling이 못 따라가니 예약 스케일링이나 높은 MinCapacity로 대비한다.
  • 인스턴스 선택: 전통 ML(XGBoost)=CPU(m5/c5), 딥러닝=GPU(g4dn/g5), 딥러닝 비용 절감=Inferentia(inf1/inf2). 결정이 어려우면 Inference Recommender가 부하 테스트로 최적 구성을 추천한다.

배포부터 스케일링, 교체까지의 흐름을 코드 한 덩어리로 압축하면 다음과 같다.

import boto3
sm = 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이 필요하면 서버리스/비동기로 가야 한다.

고급 추론 복습 — 무엇을 한 엔드포인트에 묶는가

Day3의 네 패턴을 한 줄씩 구분하면 다음과 같다.

  • MME(멀티모델 엔드포인트): 같은 컨테이너 + 수백~수천 모델, TargetModel 지정, S3 동적 로드. "같은 종류 모델이 매우 많아 엔드포인트 비용을 줄이고 싶다."
  • MCE(멀티컨테이너 엔드포인트): 서로 다른 프레임워크 컨테이너 최대 15개, TargetContainerHostname 지정. "TensorFlow와 PyTorch를 한 엔드포인트에."
  • 추론 파이프라인: 전처리→추론→후처리 선형 컨테이너 체인(2~15개), 한 호출로 처리. "학습/서빙 일관성(skew 방지)."
  • Inferentia(inf1/inf2): 딥러닝 추론 비용·지연 절감, Neuron 컴파일 필요. Elastic Inference는 레거시(분수 GPU)로 Inferentia가 대체.

MME vs MCE는 시험에서 헷갈리기 쉬운 짝이다. 결정 키워드는 "프레임워크가 같은가/다른가"와 "모델이 수백 개인가/소수인가"다. 같은 컨테이너 + 다수 = MME, 다른 컨테이너 + 소수 = MCE. 추론 파이프라인은 "선택 호출"이 아니라 "순차 실행"이라는 점에서 둘과 다르다. 입력이 한 컨테이너를 거쳐 다음으로 흘러간다.

호출 파라미터 이름만 봐도 어떤 패턴인지 즉시 구분된다.

파라미터 / API어디에 쓰나의미
TargetModelMME 호출S3의 어떤 모델 아티팩트를 쓸지
TargetContainerHostnameMCE 호출어떤 컨테이너로 보낼지
TargetVariant실시간 엔드포인트 호출가중치를 무시하고 특정 variant 강제 지정
InitialVariantWeightEndpointConfigvariant별 트래픽 분배 비율
InputLocation비동기 호출입력 데이터가 놓인 S3 경로
split_type / strategy배치 변환입력 분할 단위 / 미니배치 방식
join_source배치 변환출력에 원본 입력을 다시 결합
MaxConcurrency서버리스동시 처리 가능한 최대 요청 수

배치·서버리스 심화 복습

  • 배치 변환 — 대량 일괄의 최저 비용 옵션.
    • 처리량 튜닝: InstanceCount(병렬), SplitType=Line(레코드 분할), BatchStrategy=MultiRecord/MaxPayloadInMB/MaxConcurrentTransforms.
    • 입력은 여러 파일로 샤딩하거나 분할 가능하게 둬야 분산이 먹힌다.
    • 예측을 원본 ID와 매칭하려면 input_filter/output_filter/join_source를 쓴다.
  • 서버리스 — MemorySize(1~6GB) + MaxConcurrency만 지정하면 0까지 스케일된다.
    • 콜드 스타트가 문제면 Provisioned Concurrency로 미리 워밍(상시 비용 발생).
    • 비용 이점은 "유휴가 많을 때"만 유효하고, 꾸준히 높은 트래픽이면 실시간이 더 싸다.
    • 인스턴스 타입을 고르지 않으므로 GPU가 필요한 모델은 배포할 수 없다.

비용 최적화의 큰 그림은 "유휴 비용을 없애는 것"이다. 트래픽이 0으로 떨어지는 구간이 있으면 서버리스·비동기·배치로 그 구간 비용을 0에 가깝게 만들 수 있다. 반대로 트래픽이 항상 차 있으면 실시간 + Auto Scaling + (다수 모델이면)MME + (딥러닝이면)Inferentia로 단위 비용을 낮춘다. 추론 비용 시나리오는 거의 다 이 두 갈래로 환원된다.

통합 시나리오 매핑

시험 키워드 → 정답을 직접 매핑해 둔다.

  • "구매 순간 수십 ms 판정, 꾸준한 트래픽" → 실시간
  • "사내 도구, 가끔 호출, 유휴 많음, 첫 지연 허용" → 서버리스
  • "200MB 이미지, 5분 처리, 개별 요청, 결과 나중에" → 비동기
  • "매일 밤 1,000만 건 점수화, 즉시성 불필요" → 배치 변환
  • "매장 1,500개에 같은 종류 모델, 가끔 호출" → MME
  • "TensorFlow + PyTorch를 한 엔드포인트에" → MCE
  • "전처리를 추론에 동일하게, skew 방지" → 추론 파이프라인
  • "딥러닝 추론인데 GPU 비용 부담" → Inferentia
  • "인스턴스 타입을 데이터로 결정" → Inference Recommender
  • "무중단으로 신모델 배포" → 새 EndpointConfig + update_endpoint(Blue/Green)

오답 유발 함정 총정리

시험에서 반복적으로 등장하는 잘못된 선택지들이다.

그럴듯한 오답왜 틀렸나올바른 선택
XGBoost 추론에 GPU(p4d)를 붙여 비용 절감트리 모델은 GPU 병렬화 이득이 거의 없다CPU(m5/c5)
실시간 엔드포인트를 0대까지 스케일 인실시간은 최소 1대 유지가 강제서버리스 / 비동기
"비용 절감"만 보고 무조건 서버리스꾸준히 높은 트래픽이면 오히려 비싸진다트래픽 패턴부터 확인
GPU 딥러닝 모델을 서버리스로 배포서버리스는 GPU 미지원실시간(GPU) / 비동기
새 모델 배포를 위해 엔드포인트 삭제 후 재생성주소가 끊겨 다운타임 발생새 Config + update_endpoint
신모델 검증을 A/B 50:50으로사용자 절반이 신모델 응답을 실제로 받는다Shadow testing
프레임워크가 다른 모델들을 MME로 통합MME는 컨테이너가 하나뿐MCE
배치가 느려서 인스턴스만 계속 증설입력이 분할 불가면 효과가 없다입력 샤딩 + split_type
200MB·5분짜리 요청을 실시간으로 처리6MB·60초 제약 초과비동기 추론

증상 → 원인 → 조치 종합

증상원인조치
평시는 정상인데 이벤트 때만 지연 폭증Auto Scaling이 기동 시간을 못 따라감예약 스케일링 / MinCapacity 상향
유휴 시간에도 추론 비용이 크다실시간 엔드포인트 상시 가동서버리스·비동기·배치로 이전
모델은 수백 개인데 엔드포인트 비용 폭발모델마다 엔드포인트를 띄움MME로 통합
딥러닝 추론 GPU 비용이 감당 안 됨범용 GPU 단가Inferentia(inf1/inf2) + Neuron 컴파일
운영 정확도가 학습 성능보다 낮다전처리 불일치(training-serving skew)추론 파이프라인으로 전처리 동봉
첫 호출만 느리다(서버리스·MME)콜드 스타트 / 콜드 로드Provisioned Concurrency, 메모리 상향
배포 후 오류율 상승신모델 회귀카나리·선형 전환 + 알람 기반 자동 롤백

한 문장 체크리스트

  • 4옵션의 페이로드·처리시간 한계(6MB·4MB·1GB / 60초·60초·60분)를 말할 수 있는가
  • "실시간은 0으로 못 줄인다"를 근거와 함께 설명할 수 있는가
  • 무중단 배포 절차(새 Config → update_endpoint)를 순서대로 말할 수 있는가
  • A/B와 shadow의 차이를 "사용자에게 응답이 가는가"로 구분할 수 있는가
  • MME·MCE·파이프라인을 호출 파라미터 이름으로 구분할 수 있는가
  • 배치가 느릴 때 가장 먼저 볼 것이 "입력이 분할 가능한가"임을 기억하는가

다음 주에는 배포한 모델을 운영하는 단계 — 오케스트레이션과 모니터링으로 넘어간다.

📖 용어

  • 요청 패턴 : 트래픽이 얼마나 자주·어떤 크기로 들어오는지의 성격. 추론 옵션 선택의 첫 번째 기준이다.
  • always-on 비용 : 요청이 없어도 인스턴스가 켜져 있어 계속 나가는 고정 비용.
  • 0 스케일(Scale to zero) : 요청이 없을 때 인스턴스를 아예 0대로 줄여 비용을 없애는 동작.
  • Blue/Green 배포 : 새 버전을 따로 띄워 정상 확인 후 트래픽을 옮기고 옛 버전을 내리는 무중단 교체.
  • 카나리 배포 : 아주 적은 트래픽만 신버전에 먼저 흘려 보고 문제없으면 넓히는 방식.
  • Shadow testing : 실제 요청의 사본을 신모델에 보내되 응답은 버려서 사용자 영향 없이 검증하는 방법.
  • MME / MCE : 각각 "같은 컨테이너 + 다수 모델", "다른 컨테이너 + 소수 모델"을 한 엔드포인트에 두는 방식.
  • 추론 파이프라인 : 전처리→추론→후처리 컨테이너를 순서대로 이어 한 번의 호출로 처리하는 구조.
  • training-serving skew : 학습 때와 추론 때 전처리가 달라 성능이 조용히 떨어지는 문제.
  • 예약 스케일링(Scheduled scaling) : 정해진 시각에 용량을 미리 늘려 두는 스케일링. 예측 가능한 급증에 쓴다.

📝 연습 문제

선택지를 클릭하면 정답·해설이 펼쳐집니다.

문제 1

한 추론 워크로드가 "개별 요청, 입력 페이로드 300MB, 처리 약 10분, 결과는 완료 후 S3에서 수령"이라는 요구를 가진다. 가장 적절한 옵션은?

문제 2

멀티모델 엔드포인트(MME)와 멀티컨테이너 엔드포인트(MCE)의 핵심 구분 기준으로 가장 정확한 것은?

문제 3

실시간 엔드포인트에 오토스케일링을 적용했는데도 예측 가능한 대규모 트래픽 급증(연말 세일) 시 지연이 튄다. 가장 적절한 보완책은?

문제 4

다음 중 추론 비용을 줄이려는 시나리오와 적절한 기법의 연결로 잘못된 것은?

문제 5

운영 중인 실시간 엔드포인트에 새 모델을 배포하면서, 신모델 응답을 사용자에게 노출하지 않고 프로덕션 트래픽으로 성능을 먼저 검증하려 한다. 가장 적절한 방법은?

이전배치·서버리스 추론 심화: 대량 처리 튜닝과 비용 트레이드오프Week 6 · Day 4다음 SageMaker Pipelines: 단계, DAG, 파라미터, 조건 단계Week 7 · Day 1

참고 공식 자료

  • MLA-C01 공식 시험 안내(새 탭에서 열림)
  • Amazon S3 공식 문서(새 탭에서 열림)
  • Amazon EC2 Auto Scaling 공식 문서(새 탭에서 열림)

이 페이지

  • Week 6 전체 지도
  • 4가지 추론 옵션 총정리
  • 실시간 엔드포인트 복습
  • 고급 추론 복습 — 무엇을 한 엔드포인트에 묶는가
  • 배치·서버리스 심화 복습
  • 통합 시나리오 매핑
  • 오답 유발 함정 총정리
  • 증상 → 원인 → 조치 종합
  • 한 문장 체크리스트
  • 용어
  • 연습 문제