SageMaker는 단일 서비스가 아니라 ML 수명주기 전체를 덮는 도구 모음이고, MLA-C01 문제의 대부분이 "이 작업엔 SageMaker의 어느 기능을 쓰나"를 묻는다.
SageMaker Studio는 브라우저 기반 통합 개발 환경이다. 노트북, 실험 추적, 파이프라인, 모델 배포를 한 화면에서 한다. VS Code가 일반 개발의 IDE라면 Studio는 ML의 IDE다.
Studio가 기존 노트북 인스턴스와 다른 핵심은 컴퓨팅과 스토리지의 분리다.
| 구분 | 노트북 인스턴스 | Studio |
|---|---|---|
| 코드 저장 | 인스턴스에 붙은 EBS | EFS(인스턴스와 분리) |
| 실행 자원 | 인스턴스 타입 고정 | 커널마다 인스턴스 선택·교체 |
| 타입 변경 | 인스턴스를 재시작해야 함 | 커널만 갈아끼우면 됨 |
| 유휴 비용 | 켜둔 만큼 계속 발생 | 커널을 끄면 컴퓨팅 비용 0 |
| 협업 | 개별 인스턴스 | 도메인·공유 스페이스 |
CPU로 코드를 짜다가 학습할 때만 GPU 커널로 갈아끼울 수 있고, 안 쓰는 커널은 꺼서 비용을 아낀다.
# Studio 노트북 안에서 SageMaker SDK 세션 시작
import sagemaker
session = sagemaker.Session()
role = sagemaker.get_execution_role() # 노트북에 부여된 IAM 역할
bucket = session.default_bucket() # 기본 S3 버킷
print(region := session.boto_region_name)get_execution_role()이 반환하는 IAM 역할이 중요하다. 노트북에서 하는 모든 SageMaker·S3 작업은 이 역할의 권한으로 실행되므로, 권한이 부족하면 학습이나 배포가 AccessDenied로 실패한다.
💡 관련 이론: 컴퓨팅-스토리지 분리는 클라우드 ML의 핵심 비용 원칙이다. 학습은 GPU가 몇 시간 필요하지만 코드 작성은 CPU로 충분하다. 둘을 묶어두면 코드 짜는 동안에도 비싼 GPU 비용이 나간다. Studio는 코드(EFS)와 실행(on-demand 커널)을 분리해 "쓸 때만 비싼 자원"을 빌리게 한다. 이것이 노트북 인스턴스 대비 Studio의 비용 이점이다.
SageMaker Studio를 쓰려면 먼저 **도메인(Domain)**을 만들어야 한다. 도메인은 Studio 환경의 최상위 경계로, 하나의 VPC·인증 방식·공유 스토리지(EFS)를 묶는다. 한 조직(또는 팀)당 보통 하나의 도메인을 둔다.
도메인 안에 **사용자 프로필(User Profile)**이 있다. 사용자 한 명(또는 페르소나)당 하나이며, 각자의 IAM 역할·홈 디렉터리·기본 설정을 가진다.
Domain (조직/팀 경계, VPC·EFS·인증 공유)
├─ User Profile: data-scientist-kim (역할 A: 학습 권한)
├─ User Profile: ml-engineer-lee (역할 B: 학습+배포 권한)
└─ Shared Space: team-collab (협업용 공유 공간)
| 계층 | 무엇을 묶나 | 무엇을 나누나 |
|---|---|---|
| 도메인 | VPC, 인증 방식, EFS, 기본 설정 | 조직/팀 단위 격리 |
| 사용자 프로필 | 개인 IAM 역할, 홈 디렉터리 | 사람·역할별 권한 |
| 공유 스페이스 | 여러 사용자가 함께 쓰는 작업 공간 | 협업 대상 리소스 |
이 계층이 시험에 나오는 이유는 권한 분리 때문이다. 데이터 사이언티스트에게는 학습 권한만, ML 엔지니어에게는 배포까지 부여하는 식으로 사용자 프로필별 IAM 역할을 다르게 매핑한다. 권한 문제가 생기면 "어느 사용자 프로필의 어느 역할이 무슨 권한을 갖고 있나"를 추적해야 한다.
🔍 더 깊이: 도메인 생성 시 네트워크 모드를 고른다. VPC only 모드는 모든 트래픽이 고객 VPC를 통하므로 인터넷을 차단하고 PrivateLink로 SageMaker API에 닿게 할 수 있다 — 규제·보안 환경의 표준이다. Public internet 모드는 AWS 관리 네트워크로 편하지만 통제가 약하다. 금융·의료 시나리오에서 "데이터가 인터넷에 노출되면 안 된다"가 나오면 VPC only가 답이다.
SageMaker 학습의 핵심 메커니즘은 **학습 작업(Training Job)**이다. 학습을 요청하면 SageMaker가 다음 순서로 처리한다.
[fit() 호출]
│
v
① 인스턴스 프로비저닝 (지정한 타입·개수)
│
v
② S3에서 학습 데이터 다운로드/스트리밍
│
v
③ 컨테이너 안에서 학습 코드 실행
│
v
④ 모델 산출물(model.tar.gz)을 S3에 저장
│
v
⑤ 인스턴스 자동 종료 ← GPU 비용이 학습 시간만큼만 청구되는 이유
from sagemaker.estimator import Estimator
estimator = Estimator(
image_uri=sagemaker.image_uris.retrieve("xgboost", region, "1.7-1"),
role=role,
instance_count=2, # 분산 학습 시 2대 이상
instance_type="ml.m5.xlarge",
output_path=f"s3://{bucket}/models/",
use_spot_instances=True, # 스팟으로 학습 비용 최대 90% 절감
max_wait=7200, max_run=3600,
)
estimator.fit({"train": f"s3://{bucket}/train/"})use_spot_instances=True는 ML 엔지니어가 학습 비용을 줄이는 흔한 기법이다. 학습은 중단돼도 체크포인트에서 재개할 수 있으므로 저렴한 스팟 인스턴스에 적합하다.
| 파라미터 | 의미 | 주의점 |
|---|---|---|
instance_count | 학습에 쓸 인스턴스 수 | 2 이상이면 분산 학습, 데이터가 여러 파일로 나뉘어야 효과 |
use_spot_instances | 스팟 인스턴스 사용 | 중단 가능 — 체크포인트 설정이 사실상 필수 |
max_run | 학습 자체의 최대 실행 시간 | 초과 시 작업 중단 |
max_wait | 스팟 대기까지 포함한 최대 시간 | 스팟 사용 시 max_run 이상이어야 함 |
output_path | 모델 산출물 S3 위치 | 재현·배포의 기준점 |
⚠️ 함정: 스팟은 싸지만 언제든 회수될 수 있다. 체크포인트 없이 스팟으로 장시간 학습을 돌리면 중단 시 처음부터 다시 해야 해 오히려 손해다. "비용 절감"이라는 단서만 보고 스팟을 고르되, 중단 내성(체크포인트)이 함께 언급되는지 확인하라.
학습된 모델을 서빙하는 방법은 트래픽 패턴에 따라 네 가지다. MLA-C01에서 가장 자주 묻는 비교다.
| 옵션 | 적합한 상황 | 유휴 비용 | 지연 | 특징 |
|---|---|---|---|---|
| 실시간 엔드포인트 | 지속적인 저지연 요청 | 있음(상시 가동) | 밀리초 | 항상 켜져 있음 |
| 서버리스 추론 | 간헐적·예측 불가 트래픽 | 없음 | 콜드 스타트 있음 | 자동 스케일 |
| 배치 변환 | 대량 데이터 일괄 추론 | 없음(작업 종료) | 해당 없음 | 엔드포인트 불필요 |
| 비동기 추론 | 큰 페이로드·긴 처리 | 0까지 축소 가능 | 큐 대기 포함 | 큐 기반, 결과는 S3로 |
판별은 트래픽 모양으로 한다.
# 실시간 엔드포인트 배포
predictor = estimator.deploy(
initial_instance_count=1, instance_type="ml.m5.large",
endpoint_name="churn-endpoint",
)
result = predictor.predict(payload) # ms 단위 응답 요청이 계속 들어오나?
│
┌──── 예 ──┴── 아니오 ────┐
│ │
지연이 중요한가? 한 번에 대량인가?
│ │ │ │
예 아니오 예 아니오
│ │ │ │
실시간 비동기(큰 입력) 배치 변환 서버리스
💡 관련 이론: 서버리스 추론은 "유휴 비용 0 vs 콜드 스타트 지연"이라는 고전적 트레이드오프다. 트래픽이 없을 때 인스턴스를 0으로 줄여 비용을 안 받지만, 다음 요청 시 컨테이너를 새로 띄우는 콜드 스타트가 생긴다. 지연이 일관되게 낮아야 하는 서비스는 실시간 엔드포인트(상시 가동)를, 비용 민감하고 간헐적이면 서버리스를 고른다. 이는 Lambda의 콜드 스타트 트레이드오프와 같은 구조다.
SageMaker는 검증된 알고리즘 약 17종을 컨테이너로 제공한다. 직접 모델 코드를 작성할 필요 없이 데이터와 하이퍼파라미터만 넘기면 된다. 문제 유형별로 대표를 기억해두면 시험에서 빠르게 고른다.
| 문제 유형 | 빌트인 알고리즘 | 시나리오 키워드 |
|---|---|---|
| 분류·회귀(테이블) | XGBoost, Linear Learner | "정형 데이터로 예측" |
| 군집 | K-Means | "라벨 없이 그룹으로 묶기" |
| 차원 축소 | PCA | "특성이 너무 많다" |
| 이상 탐지 | Random Cut Forest (RCF) | "비정상 패턴 탐지" |
| 추천 | Factorization Machines | "희소한 사용자-아이템 행렬" |
| 이미지 분류 | Image Classification | "사진이 무엇인지" |
| 객체 탐지 | Object Detection | "사진 어디에 무엇이" |
| 시계열 예측 | DeepAR | "미래 수요·값 예측" |
| 토픽 모델링 | LDA, NTM | "문서 주제 자동 추출" |
빌트인이 안 맞으면 어떻게 하나 — 세 단계로 넓어진다.
| 방식 | 무엇을 제공하나 | 언제 |
|---|---|---|
| 빌트인 알고리즘 | 알고리즘 + 컨테이너 전부 AWS | 표준 문제 유형에 해당 |
| 스크립트 모드 | AWS 관리 프레임워크 컨테이너 + 내 학습 스크립트 | TensorFlow·PyTorch 등으로 직접 짠 모델 |
| 커스텀 컨테이너 | 내가 만든 Docker 이미지 | 특수 라이브러리·런타임이 필요 |
"테이블 데이터 분류/회귀"는 거의 항상 XGBoost가 기본 답이다.
⚠️ 함정: 빌트인 알고리즘은 입력 포맷 요구가 있다. 여러 알고리즘이 CSV 외에 RecordIO-protobuf를 지원하며, 대용량 순차 학습에서는 후자가 유리하다. "빌트인을 쓰는데 데이터가 준비되지 않아 실패"하는 시나리오는 포맷·컨텐츠 타입 불일치를 의심하라.
모델이 수십·수백 개로 늘면 모델마다 엔드포인트를 두는 것이 비효율적이다. SageMaker는 하나의 엔드포인트에 여러 모델을 얹는 방식을 제공한다.
| 방식 | 구조 | 적합한 상황 |
|---|---|---|
| 단일 모델 엔드포인트 | 엔드포인트 1개 = 모델 1개 | 트래픽이 꾸준한 소수의 주력 모델 |
| 멀티모델 엔드포인트 | 엔드포인트 1개에 다수 모델을 올려두고 요청 시 로드 | 고객사·지역별로 모델이 수십~수백 개 |
| 프로덕션 variant | 한 엔드포인트에 여러 버전, 가중치로 트래픽 분배 | A/B 테스트, 카나리 배포 |
학습 작업이 끝나면 산출물은 model.tar.gz 형태로 output_path에 저장된다. 이 파일이 배포의 재료다.
[Training Job] ──> s3://bucket/models/<job-name>/output/model.tar.gz
│
├──> [Model] 생성(이미지 + 산출물 + 역할)
│ │
│ ├──> 실시간 엔드포인트
│ └──> 배치 변환 작업
│
└──> [Model Registry] 버전 등록·승인 상태 관리
Model Registry는 "어떤 모델 버전이 승인되어 프로덕션에 나갈 수 있는가"를 관리한다. 자동 재학습 파이프라인에서 승인 단계를 두는 지점이 여기다.
| 실수 | 증상 | 해법 |
|---|---|---|
| 실행 역할에 S3 권한 누락 | 학습 시작 직후 AccessDenied | 역할 정책에 대상 버킷 권한 추가 |
| 스팟을 쓰면서 체크포인트 미설정 | 중단 시 처음부터 재학습 | 체크포인트 경로 지정 |
max_run을 너무 짧게 설정 | 학습이 완료 전 중단 | 예상 학습 시간에 여유를 둠 |
| 간헐적 트래픽에 실시간 엔드포인트 상시 가동 | 유휴 비용 낭비 | 서버리스 추론 검토 |
| 대량 일괄 채점에 엔드포인트 사용 | 불필요한 상시 비용 | 배치 변환으로 전환 |
| 데이터가 단일 거대 파일 | 분산 학습에서 분배 안 됨 | 여러 객체로 샤딩 |
다음 글에서는 이번 주에 배운 ML 기초와 AWS 스택을 종합 복습하며 Week 1을 마무리한다.
선택지를 클릭하면 정답·해설이 펼쳐집니다.
문제 1
SageMaker Studio가 기존 노트북 인스턴스 대비 비용 효율적인 핵심 이유는?
문제 2
SageMaker Studio에서 데이터 사이언티스트에게는 학습 권한만, ML 엔지니어에게는 배포 권한까지 부여하려 한다. 이를 구현하는 구조는?
문제 3
SageMaker 학습 작업(Training Job)에서 학습 비용이 학습 시간만큼만 청구되는 이유는?
문제 4
"하루에 한 번, 전체 고객 데이터에 대해 이탈 점수를 일괄 계산"하는 워크로드에 가장 적합한 추론 옵션은?
문제 5
정형(테이블) 데이터의 이진 분류 문제를 SageMaker 빌트인 알고리즘으로 풀 때 가장 일반적인 기본 선택은?