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 3

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

MLA-C01· AssociateWeek 6 · Day 3읽기 약 12분
핵심 정리
  • MME: 같은 컨테이너 + 수백~수천 모델을 한 엔드포인트에. TargetModel로 지정, S3에서 동적 로드.
  • MCE: 서로 다른 프레임워크 컨테이너를 최대 15개까지. TargetContainerHostname으로 지정.
  • 추론 파이프라인: 전처리→추론→후처리를 2~15개 컨테이너 선형 체인으로. 학습/서빙 skew를 막는다.
  • Inferentia(inf1/inf2): 딥러닝 추론 비용·지연 절감. Neuron 컴파일 단계가 필요하다.
  • Elastic Inference는 레거시(분수 GPU) — 최신 시나리오의 일차 답은 Inferentia다.

Day 3 - 비용·고급 추론: 멀티모델, 멀티컨테이너, 추론 파이프라인, Inferentia

네 가지 패턴 한눈에 구분하기

실시간 엔드포인트는 강력하지만 항상 켜져 있어 비용이 나간다. 모델이 수백 개면 각각 엔드포인트를 띄우는 순간 인스턴스 비용이 폭발한다. MLA-C01은 "수백 개 모델", "전처리+추론을 한 엔드포인트에", "딥러닝 추론 비용 절감" 같은 키워드로 이 주제를 묻는다.

패턴무엇을 묶나컨테이너호출 시 지정주 목적
MME모델 수백~수천 개동일 1개TargetModel비용 절감
MCE프레임워크가 다른 모델 소수서로 다른 최대 15개TargetContainerHostname엔드포인트 통합
추론 파이프라인전처리·추론·후처리 단계순차 체인 2~15개지정 없음(전체가 한 흐름)학습/서빙 일관성
Inferentia(묶는 게 아님) 하드웨어 교체그대로—딥러닝 추론 단가 절감
MME  : 요청 ─TargetModel=A─▶ [컨테이너 1개] ─▶ 메모리에 A 로드(없으면 S3에서)
                                  ▲ 모델 A,B,C … 1000개가 S3에 대기
 
MCE  : 요청 ─TargetContainerHostname=tf─▶ ┌ [TF 컨테이너]  ← 이 중 하나만 실행
                                          └ [PyTorch 컨테이너]
 
파이프라인: 요청 ─▶ [전처리] ─▶ [모델] ─▶ [후처리] ─▶ 응답  ← 전부 순차로 통과

멀티모델 엔드포인트(MME) — 수많은 모델을 한 엔드포인트로

멀티모델 엔드포인트는 같은 프레임워크/컨테이너를 쓰는 다수의 모델을 단일 엔드포인트 뒤에서 공유 인스턴스로 서빙한다.

  • 모델 아티팩트들을 S3 한 경로(prefix)에 모아 둔다.
  • 호출이 오면 해당 모델을 메모리로 동적 로드하고, 안 쓰는 모델은 언로드한다.
  • 모델 수백~수천 개를 소수 인스턴스에 얹어 비용을 극적으로 줄인다.

요청한 모델이 캐시에 있으면 즉시 추론하고 없으면 S3에서 내려받아 로드하는 멀티모델 엔드포인트 흐름

# 호출 시 TargetModel로 어떤 모델을 쓸지 지정
response = runtime.invoke_endpoint(
    EndpointName="mme-endpoint",
    TargetModel="customer-segment-A.tar.gz",   # S3의 특정 모델 지정
    ContentType="text/csv",
    Body="5.1,3.5,1.4,0.2",
)

대표 사례는 "고객사별/지역별/사용자별로 모델이 다른" 경우다. 1,000개 매장에 각각 수요 예측 모델이 있다면, 1,000개 엔드포인트 대신 MME 하나로 처리한다.

배포 쪽 코드는 컨테이너를 MultiModel 모드로 만들고 모델들이 놓인 S3 prefix를 가리키는 것이 전부다.

from sagemaker.multidatamodel import MultiDataModel
 
mme = MultiDataModel(
    name="store-forecast-mme",
    model_data_prefix="s3://bkt/models/",   # 이 아래 모든 .tar.gz가 서빙 대상
    image_uri=xgboost_image_uri,            # 모든 모델이 공유하는 단일 컨테이너
    role=role,
)
predictor = mme.deploy(initial_instance_count=2, instance_type="ml.m5.xlarge")
 
# 모델을 추가할 때 엔드포인트를 다시 만들 필요가 없다 — S3에 올리면 끝
mme.add_model(model_data_source="s3://bkt/new/store-1501.tar.gz",
              model_data_path="store-1501.tar.gz")

MME는 메모리에 모델을 캐싱한다. 자주 쓰는 모델은 메모리에 머물러 빠르고, 메모리에 없는 모델을 처음 호출하면 S3에서 로드하는 동안 지연(콜드 로드)이 생긴다. 따라서 MME는 모델이 많지만 개별 모델 호출 빈도가 고르거나 낮을 때 비용 효율이 극대화된다. 모든 모델이 동시에 고빈도로 호출되면 메모리 스래싱(thrashing)이 일어나 부적합하다. 또 MME의 모든 모델은 동일한 프레임워크/컨테이너를 써야 한다는 제약이 핵심이다.

MME가 잘 맞는 조건과 그렇지 않은 조건을 갈라 보면 다음과 같다.

조건MME 적합이유
모델이 수백~수천 개✅엔드포인트·인스턴스 비용을 한 곳으로 통합
모든 모델이 같은 프레임워크/컨테이너✅MME의 전제 조건
개별 모델 호출이 드물거나 고르게 분산✅캐시 적중률이 유지된다
모델 전부가 동시에 고빈도 호출❌로드/언로드 반복(스래싱)으로 지연 폭증
프레임워크가 서로 다름❌컨테이너가 하나뿐 → MCE로 가야 한다
모델마다 다른 인스턴스 타입이 필요❌인스턴스를 공유하는 구조라 불가

멀티컨테이너 엔드포인트(MCE) — 다른 프레임워크를 한 엔드포인트로

멀티컨테이너 엔드포인트는 서로 다른 컨테이너(다른 프레임워크)를 한 엔드포인트에 최대 15개까지 배치한다. 예를 들어 TensorFlow 모델 하나와 PyTorch 모델 하나를 같은 엔드포인트에 두고, 호출 시 어떤 컨테이너를 쓸지 지정한다(직접 호출 모드). MME가 "같은 컨테이너 + 많은 모델"이라면, MCE는 "다른 컨테이너 + 소수 모델"이다.

# 직접 호출 모드: TargetContainerHostname으로 컨테이너 지정
response = runtime.invoke_endpoint(
    EndpointName="mce-endpoint",
    TargetContainerHostname="tensorflow-container",
    ContentType="application/json",
    Body='{"instances": [[1.0, 2.0, 3.0]]}',
)

⚠️ 함정: MME와 MCE를 헷갈리면 시험에서 틀린다. MME = 같은 컨테이너로 매우 많은(수백~수천) 모델, TargetModel로 지정, S3에서 동적 로드. MCE = 서로 다른 프레임워크 컨테이너 최대 15개, TargetContainerHostname로 지정. "프레임워크가 다른 모델 여러 개를 한 엔드포인트에" → MCE. "같은 종류 모델이 수백 개라 엔드포인트 비용을 줄이고 싶다" → MME.

추론 파이프라인 — 전처리·추론·후처리를 체인으로

추론 파이프라인(Inference Pipeline)은 2~15개 컨테이너를 선형 시퀀스로 묶는다.

  • 첫 컨테이너의 출력이 다음 컨테이너의 입력이 된다.
  • 한 번의 InvokeEndpoint 호출로 전처리→추론→후처리가 같은 인스턴스 안에서 순차 실행된다.
  • 컨테이너 간 통신이 로컬이라 네트워크 왕복이 없다.
  • 전형적 구성: SparkML/scikit-learn 전처리 컨테이너 → XGBoost 모델 컨테이너.
  • 학습 때 쓴 전처리(스케일링·인코딩)를 추론 때도 그대로 써서 학습/추론 불일치(training-serving skew)를 막는다.
한 인스턴스 안에서 벌어지는 일
 
 원본 요청(raw CSV)
        │
        ▼
 [ 컨테이너 1: sklearn 전처리 ]  결측 대체 · 스케일링 · 원핫 인코딩
        │  변환된 피처
        ▼
 [ 컨테이너 2: XGBoost 모델 ]    예측 수행
        │  예측값
        ▼
 [ 컨테이너 3: 후처리(선택) ]     임계값 적용 · 라벨 매핑
        │
        ▼
 최종 응답 — 호출은 단 한 번(InvokeEndpoint)
from sagemaker.pipeline import PipelineModel
 
pipeline_model = PipelineModel(
    name="preprocess-predict-pipeline",
    role=role,
    models=[sklearn_preprocessor_model, xgboost_model],  # 순서가 곧 실행 순서
)
pipeline_model.deploy(initial_instance_count=1, instance_type="ml.m5.xlarge")

추론 파이프라인의 가치는 학습/서빙 일관성이다. 전처리를 애플리케이션 코드로 따로 구현하면 학습 때와 추론 때 미묘하게 달라져 성능이 조용히 떨어진다(training-serving skew). 전처리를 파이프라인 컨테이너로 모델과 함께 패키징하면, 같은 코드가 양쪽에서 보장된다. 또 모든 컨테이너가 한 인스턴스에서 실행되므로 컨테이너 간 통신은 로컬이라 빠르다. "전처리 로직을 추론 시에도 일관되게 적용하고 싶다"는 시나리오의 답이 추론 파이프라인이다.

Inferentia — 딥러닝 추론 비용을 낮추는 전용 칩

AWS Inferentia(ml.inf1, ml.inf2)는 AWS가 추론 전용으로 설계한 가속 칩이다. 딥러닝 추론에서 동급 GPU 대비 추론당 비용과 지연을 크게 낮춘다. 모델을 Inferentia에서 돌리려면 AWS Neuron SDK로 컴파일해야 하며, SageMaker Neo가 이 과정을 자동화해준다.

Inferentia 배포는 한 단계가 더 있다
 
일반 GPU 배포 :  학습된 모델 ─────────────────────▶ 엔드포인트(ml.g5)
Inferentia 배포:  학습된 모델 ─▶ Neuron 컴파일 ─▶ 엔드포인트(ml.inf1/inf2)
                                (SageMaker Neo가 자동화)
가속 선택지성격추가 작업현재 권장도
CPU(m5/c5)전통 ML의 기본없음표 데이터 모델이면 이걸로 충분
GPU(g4dn/g5)범용 딥러닝 추론 가속없음무난한 기본값
Inferentia(inf1/inf2)추론 전용 칩, 단가 최소화Neuron 컴파일대규모 딥러닝 추론의 일차 답
Elastic InferenceCPU에 분수 GPU 부착가속기 부착 설정레거시 — Inferentia로 대체

Inferentia는 "딥러닝 추론을 대규모로, 저비용으로" 돌릴 때의 정답이다. 트랜스포머·CNN 추론 워크로드에서 처리량당 비용이 GPU보다 유리하다. 단, 모델을 Neuron으로 컴파일하는 단계가 필요하므로 "그냥 배포"보다 한 단계 더 거친다. 시험에서 "딥러닝 추론인데 GPU 비용이 너무 높다, 처리량은 유지하며 비용을 낮추고 싶다"는 조건이면 Inferentia(inf1/inf2)가 정답이다.

Elastic Inference — (레거시) GPU 일부만 붙이기

Elastic Inference(EI)는 CPU 인스턴스에 GPU 가속의 일부(분수)만 가속기로 붙여, 전체 GPU 인스턴스보다 싸게 딥러닝 추론을 가속하던 기능이다. "full GPU는 과하지만 CPU만으론 느린" 중간 지대를 메웠다.

⚠️ 함정: Elastic Inference는 현재 신규 사용이 권장되지 않으며 AWS가 Inferentia로 대체할 것을 안내한다. 오래된 학습 자료나 기출에는 EI가 정답으로 나오지만, 최신 시나리오에서 "딥러닝 추론 비용 절감"의 일차 답은 Inferentia다. EI는 개념(분수 GPU 가속)만 알아 두고, 실무·최신 시험에서는 Inferentia를 우선 고려한다.

비용 절감 패턴 정리

비용 측면에서 고급 추론을 한 줄로 매핑하면 다음과 같다.

  • 같은 종류 모델이 매우 많다 → MME(엔드포인트·인스턴스 비용 통합)
  • 트래픽이 간헐적이다 → 서버리스/비동기(0까지 스케일, Day1·4 참고)
  • 딥러닝 추론 비용이 높다 → Inferentia(inf1/inf2)
  • 전처리/후처리를 한 엔드포인트로 묶고 싶다 → 추론 파이프라인(비용보다 일관성·단순화 목적)
  • 서로 다른 프레임워크를 한 엔드포인트로 → MCE

증상 → 원인 → 조치

증상원인조치
MME에서 특정 모델 첫 호출만 유독 느리다캐시에 없어 S3에서 콜드 로드자주 쓰는 모델 워밍, 메모리 큰 인스턴스로 상향
MME 지연이 전반적으로 튀고 불안정모든 모델이 고빈도라 캐시 스래싱모델 그룹을 나눠 엔드포인트 분리, 인스턴스 증설
모델을 추가했는데 반영이 안 된다S3 prefix 밖에 올렸거나 경로 불일치model_data_prefix 하위에 올렸는지 확인
프레임워크가 달라 MME 배포가 실패MME는 컨테이너가 하나뿐MCE로 전환(TargetContainerHostname)
학습 성능은 좋은데 운영 정확도가 낮다전처리가 학습과 달라 skew 발생전처리를 추론 파이프라인 컨테이너로 함께 패키징
Inferentia 배포가 로드 단계에서 실패Neuron 컴파일을 하지 않은 모델Neuron/SageMaker Neo로 컴파일 후 재배포

다음 글에서는 배치 변환과 서버리스 추론을 더 깊이 파고들어 대량 처리 튜닝과 동시성·비용 트레이드오프를 본다.

📖 용어

  • 멀티모델 엔드포인트(MME) : 같은 컨테이너를 공유하며 S3에 둔 모델 수백~수천 개를 한 주소로 서빙하는 방식.
  • 멀티컨테이너 엔드포인트(MCE) : 프레임워크가 서로 다른 컨테이너 여러 개를 한 엔드포인트에 함께 두는 방식.
  • 추론 파이프라인 : 전처리→추론→후처리 컨테이너를 순서대로 이어 붙여 한 번의 호출로 처리하는 구조.
  • 동적 로드/언로드 : 필요한 모델만 그때그때 메모리에 올리고, 안 쓰는 모델은 내려서 자리를 비우는 동작.
  • 캐시 스래싱(Thrashing) : 메모리가 모자라 올렸다 내렸다를 반복하느라 오히려 느려지는 현상.
  • training-serving skew : 학습 때와 추론 때 전처리가 달라 성능이 조용히 떨어지는 문제.
  • AWS Inferentia : AWS가 추론 전용으로 만든 칩. 딥러닝 추론에서 GPU보다 추론당 비용이 유리하다.
  • AWS Neuron SDK : 모델을 Inferentia에서 돌 수 있게 컴파일·실행해 주는 개발 도구 모음.
  • SageMaker Neo : 모델을 목표 하드웨어에 맞춰 자동으로 컴파일·최적화해 주는 기능.
  • Elastic Inference : CPU 인스턴스에 GPU 성능 일부만 붙여 쓰던 옛 기능. 지금은 Inferentia로 대체 권장.

📝 연습 문제

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

문제 1

전국 1,500개 매장에 매장별 수요 예측 XGBoost 모델이 있다. 각 매장 모델은 가끔 호출되며, 1,500개 엔드포인트를 띄우는 비용이 부담이다. 가장 적절한 배포 방식은?

문제 2

학습 시 적용한 스케일링·인코딩 전처리를 추론 시에도 정확히 동일하게 적용해 training-serving skew를 막고, 한 번의 호출로 전처리와 추론을 모두 처리하고 싶다. 적절한 방식은?

문제 3

대규모 트랜스포머 기반 NLP 모델을 실시간 추론하는데 GPU 인스턴스 비용이 너무 높다. 처리량은 유지하면서 추론당 비용을 낮추려 한다. 가장 적절한 선택은?

문제 4

한 엔드포인트에 TensorFlow 이미지 분류 모델과 PyTorch 텍스트 모델을 함께 배포하고, 호출 시 어느 컨테이너를 쓸지 직접 지정하려 한다. 적절한 방식은?

문제 5

Elastic Inference에 관한 설명으로 가장 정확한 것은?

이전실시간 엔드포인트: 구성, 오토스케일링, 인스턴스 선택Week 6 · Day 2다음 배치·서버리스 추론 심화: 대량 처리 튜닝과 비용 트레이드오프Week 6 · Day 4

참고 공식 자료

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

이 페이지

  • 네 가지 패턴 한눈에 구분하기
  • 멀티모델 엔드포인트(MME) — 수많은 모델을 한 엔드포인트로
  • 멀티컨테이너 엔드포인트(MCE) — 다른 프레임워크를 한 엔드포인트로
  • 추론 파이프라인 — 전처리·추론·후처리를 체인으로
  • Inferentia — 딥러닝 추론 비용을 낮추는 전용 칩
  • Elastic Inference — (레거시) GPU 일부만 붙이기
  • 비용 절감 패턴 정리
  • 증상 → 원인 → 조치
  • 용어
  • 연습 문제