핵심은 마지막 화살표다. 배포된 모델은 시간이 지나면 데이터 분포가 변해(drift) 성능이 떨어지고, 그러면 다시 데이터 준비 단계로 돌아간다. ML 엔지니어의 일은 이 순환을 자동화·안정화하는 것이다.
단계별로 이번 주에 배운 것을 한 표에 모으면 이렇다.
단계
이번 주 핵심 개념
대표 AWS
데이터 준비
데이터 레이크, 수집 경로
S3, Kinesis, Glue
모델 개발
지도/비지도/강화, 분류·회귀·군집, 평가지표
SageMaker Training, 빌트인 알고리즘
배포·서빙
실시간/서버리스/배치/비동기
SageMaker 엔드포인트, Batch Transform
모니터링
데이터·컨셉 드리프트, 재학습 트리거
Model Monitor, CloudWatch, Pipelines
이 순환을 표준화한 것이 CRISP-DM(Cross-Industry Standard Process for Data Mining)이다. 1990년대 정립된 이 방법론은 비즈니스 이해 → 데이터 이해 → 데이터 준비 → 모델링 → 평가 → 배포의 6단계 반복 사이클을 정의한다. 현대 MLOps는 여기에 "배포 후 모니터링과 자동 재학습"을 강하게 결합한 형태다. 시험에서 "모델 성능이 시간이 지나며 저하된다"는 시나리오는 항상 이 순환의 모니터링·재학습 단계를 가리킨다.
모델이 푸는 문제가 무엇이냐에 따라 평가지표가 갈린다. 잘못된 지표를 고르면 "정확도 99%인데 쓸모없는 모델"을 만들게 된다.
문제 유형
설명
대표 평가지표
이진 분류
둘 중 하나 (이탈/유지)
Precision, Recall, F1, AUC-ROC
다중 분류
셋 이상 범주
Accuracy, Macro-F1, 혼동행렬
회귀
연속값 예측 (가격)
RMSE, MAE, R²
군집
비지도 그룹화
Silhouette, Inertia
학습 방식 구분도 다시 정리하면 다음과 같다.
지도학습: 정답(label)이 있는 데이터로 학습 → 분류·회귀
비지도학습: 정답 없이 구조를 찾음 → 군집·차원 축소·이상 탐지
강화학습: 보상으로 정책을 학습 → 순차적 의사결정
from sklearn.metrics import precision_score, recall_score, f1_score# 불균형 데이터(사기 0.1%)에서 accuracy는 함정 — precision/recall을 본다precision = precision_score(y_true, y_pred) # 양성 예측 중 진짜 비율recall = recall_score(y_true, y_pred) # 실제 양성 중 잡아낸 비율f1 = f1_score(y_true, y_pred) # 둘의 조화평균
지표를 고르는 판별표 — 상황을 보고 바로 지표를 짚는 연습이다.
상황
골라야 할 지표
왜
클래스가 균형 잡힘
Accuracy
왜곡이 적고 직관적
양성이 1% 미만
PR-AUC, Recall, F1
Accuracy·ROC-AUC가 낙관적으로 보임
놓치면 치명적(암·사기·설비 고장)
Recall
FN 비용이 가장 큼
오탐이 곤란(스팸 차단·광고 예산)
Precision
FP 비용이 가장 큼
임계값 미정, 모델끼리 비교
ROC-AUC
임계값 무관 순위 능력
회귀에서 큰 오차를 막아야 함
RMSE
오차를 제곱해 강하게 벌함
회귀인데 이상치가 많음
MAE
모든 오차를 동등하게 봄
Precision과 Recall의 트레이드오프는 비용 비대칭에서 비롯된다. 사기 탐지처럼 "놓치면 큰일"인 문제는 Recall(놓치지 않기)을, 스팸 필터처럼 "정상 메일을 막으면 곤란"한 문제는 Precision(오탐 줄이기)을 우선한다. 클래스가 극단적으로 불균형하면 Accuracy는 의미가 없다 — 전부 다수 클래스로 찍어도 99%가 나오기 때문이다. 그래서 불균형 문제의 종합 지표로 F1이나 AUC-PR을 쓴다.
⚠️ 함정: 회귀에서 RMSE와 MAE를 혼동하기 쉽다. RMSE는 큰 오차를 제곱해 더 무겁게 벌하므로 이상치에 민감하고, MAE는 모든 오차를 동등하게 보아 robust하다. "이상치가 많고 큰 오차를 특별히 막아야 한다"면 RMSE, "이상치 영향을 줄이고 싶다"면 MAE다.
이번 주 후반에 본 SageMaker는 ML 수명주기 전체를 덮는 도구 모음이다. 단계별로 다시 묶으면 이렇다.
수명주기 단계
SageMaker 기능
역할
작업 환경
Studio (도메인·사용자 프로필)
통합 IDE, 권한 분리
데이터 준비
Data Wrangler, Feature Store
시각적 변환, 특성 관리
학습
Training Job, 빌트인 알고리즘
일시적 컨테이너 학습
튜닝
Automatic Model Tuning
하이퍼파라미터 최적화
배포
실시간/서버리스/배치/비동기
트래픽별 추론 옵션
운영
Model Monitor, Pipelines
드리프트 감지, 자동화
학습이 일시적 컨테이너(끝나면 인스턴스 자동 종료, 스팟으로 비용 절감)에서 일어난다는 점, 추론 옵션이 트래픽 패턴으로 갈린다는 점이 시험 범위에 든다.
import sagemakerfrom sagemaker.estimator import Estimatorsession = sagemaker.Session()role = sagemaker.get_execution_role()# 빌트인 XGBoost로 테이블 데이터 분류 학습estimator = Estimator( image_uri=sagemaker.image_uris.retrieve("xgboost", session.boto_region_name, "1.7-1"), role=role, instance_count=1, instance_type="ml.m5.xlarge", use_spot_instances=True, # 학습 비용 절감)estimator.fit({"train": "s3://my-bucket/train/"})
추론 옵션 판별 한 줄 요약
트래픽 모양
선택
근거
초당 수천 요청·저지연
실시간 엔드포인트
상시 가동으로 일관된 지연
간헐적·유휴 비용 아까움
서버리스 추론
유휴 시 비용 0, 콜드 스타트 감수
대량 일괄 점수 매기기
배치 변환
엔드포인트 불필요, 끝나면 종료
큰 페이로드·긴 처리
비동기 추론
큐 기반, 결과는 S3로
빌트인 알고리즘이 안 맞으면 두 단계로 넓어진다. 스크립트 모드(AWS 관리 프레임워크 컨테이너 + 자체 학습 스크립트)로 TensorFlow·PyTorch 모델을 돌리거나, 특수 런타임이 필요하면 커스텀 컨테이너(직접 만든 Docker 이미지)로 간다. "빌트인 → 스크립트 모드 → 커스텀 컨테이너" 순으로 통제권이 커지고 부담도 커진다.
판별 기준은 추상화 수준이다. AI 서비스(API 호출, 학습 불필요) → SageMaker(직접 학습·배포, 유연성) → EC2 직접 구축(최대 통제, 최대 부담). "흔한 문제 + 빠른 구현"이면 AI 서비스, "고유 데이터로 커스텀 모델"이면 SageMaker다.
이 계층 구조는 "build vs buy"의 클라우드 버전이다. AI 서비스는 AWS가 막대한 데이터로 미리 학습해둔 모델을 빌려 쓰는 것(buy)이고, SageMaker는 자체 데이터로 직접 만드는 것(build)이다. ML 엔지니어의 판단 포인트는 "내 문제가 일반적인가, 고유한가"다. 일반적 NLP·비전 작업은 AI 서비스가 더 빠르고 정확하며 운영 부담이 없지만, 도메인 특화 데이터(예: 의료 영상, 산업 결함)는 직접 학습이 필요하다.