MLA-C01은 단편 지식이 아니라 "이 상황엔 어느 단계의 어떤 도구를 쓰나"를 묻는다. 수명주기 위에 개념과 서비스를 얹어 외우는 것이 가장 효율적이다.
[1. 데이터 준비] → [2. 모델 개발] → [3. 배포·서빙] → [4. 모니터링·유지보수]
수집/저장/변환 학습/튜닝/평가 엔드포인트 선택 드리프트/재학습
(도메인 1, 28%) (도메인 2, 26%) (도메인 3, 22%) (도메인 4, 24%)
↑ |
└──────────────── 재학습 트리거 ──────────────────────┘
핵심은 마지막 화살표다. 배포된 모델은 시간이 지나면 데이터 분포가 변해(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 |
학습 방식 구분도 다시 정리하자.
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 sagemaker
from sagemaker.estimator import Estimator
session = 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 이미지)로 간다. "빌트인 → 스크립트 모드 → 커스텀 컨테이너" 순으로 통제권이 커지고 부담도 커진다.
모든 ML 문제를 직접 학습할 필요는 없다. AWS는 사전 학습된 관리형 AI 서비스를 API로 제공한다. "흔한 작업이고 빠르게 붙이고 싶다"면 이쪽이 정답이다.
| 영역 | 서비스 | 용도 |
|---|---|---|
| 텍스트 분석 | Comprehend | 감성·엔터티·핵심구 추출 |
| 번역 | Translate | 실시간 기계 번역 |
| 음성→텍스트 | Transcribe | 음성 인식, 자막 |
| 텍스트→음성 | Polly | TTS 음성 합성 |
| 이미지·영상 | Rekognition | 객체·얼굴·콘텐츠 감지 |
| 문서 추출 | Textract | OCR, 양식·표 추출 |
| 예측 | Forecast | 시계열 수요 예측 |
| 추천 | Personalize | 개인화 추천 엔진 |
| 생성형 AI | Bedrock | 파운데이션 모델 API |
시험에는 여러 AI 서비스를 조합하는 시나리오가 자주 나온다.
| 요구사항 | 조합 |
|---|---|
| 콜센터 녹음의 불만 감정 분석 | Transcribe(음성→텍스트) + Comprehend(감정) |
| 외국어 문서 스캔본 요약 | Textract(OCR) + Translate(번역) + Comprehend/Bedrock |
| 이미지 속 텍스트를 읽어 음성 안내 | Rekognition/Textract + Polly |
판별 기준은 추상화 수준이다. AI 서비스(API 호출, 학습 불필요) → SageMaker(직접 학습·배포, 유연성) → EC2 직접 구축(최대 통제, 최대 부담). "흔한 문제 + 빠른 구현"이면 AI 서비스, "고유 데이터로 커스텀 모델"이면 SageMaker다.
💡 관련 이론: 이 계층 구조는 "build vs buy"의 클라우드 버전이다. AI 서비스는 AWS가 막대한 데이터로 미리 학습해둔 모델을 빌려 쓰는 것(buy)이고, SageMaker는 자체 데이터로 직접 만드는 것(build)이다. ML 엔지니어의 판단 포인트는 "내 문제가 일반적인가, 고유한가"다. 일반적 NLP·비전 작업은 AI 서비스가 더 빠르고 정확하며 운영 부담이 없지만, 도메인 특화 데이터(예: 의료 영상, 산업 결함)는 직접 학습이 필요하다.
| 물음 | 답 |
|---|---|
| ML 코드가 시스템에서 차지하는 비중은? | 5% 미만. 나머지는 데이터·서빙·모니터링 |
| 라벨이 없으면 어떤 학습? | 비지도(군집·차원 축소·이상 탐지) |
| 사기 0.1% 데이터에서 accuracy 99.9%는? | 함정. PR-AUC·Recall을 봐야 함 |
| 학습 인스턴스는 언제 꺼지나? | 학습 종료 시 SageMaker가 자동 종료 |
| 하루 한 번 전체 고객 채점은? | 배치 변환 |
| 학습 전용 AWS 칩은? | Trainium (추론은 Inferentia) |
| 드리프트를 감지하는 기능은? | SageMaker Model Monitor |
시험은 개념을 따로 묻지 않고 상황에 얹어 묻는다. 이번 주 내용을 상황 → 판단 형태로 굴려보자.
| 상황 | 판단 | 근거 |
|---|---|---|
| 노트북에서 만든 모델을 매주 자동 재학습해야 한다 | 학습을 파이프라인 코드로 고정 | 재현성이 ML 엔지니어링의 1순위 |
| 6개월 전 모델을 똑같이 다시 만들어야 한다 | 코드·데이터 버전·하이퍼파라미터·환경 4가지 확인 | 하나라도 빠지면 재현 불가 |
| 오프라인 AUC는 올랐는데 매출이 떨어졌다 | 소량 트래픽 A/B로 온라인 지표 검증 | 오프라인은 게이트, 온라인이 판정 |
| 배포 6개월 뒤 정확도가 서서히 하락 | 드리프트 → Model Monitor → 재학습 트리거 | 모니터링 단계의 전형 |
| 입력 분포는 그대로인데 성능만 떨어짐 | 컨셉 드리프트 의심 | 입력-정답 관계가 바뀐 경우 |
| 라벨이 전혀 없는 고객 데이터를 묶고 싶다 | 비지도 군집 | 정답이 없으므로 지도학습 불가 |
| 사기 0.1% 데이터에서 정확도 99.9% | 지표 교체 — PR-AUC·Recall | 다수 클래스로 찍어도 나오는 수치 |
| 콜센터 녹음의 불만을 분석하라 | Transcribe + Comprehend | 표준 작업 조합, 학습 불필요 |
| 우리 공장 결함 이미지 분류 | Rekognition Custom Labels 또는 SageMaker | 도메인 특화 라벨이 필요 |
| 야간에 전체 고객 점수를 한 번에 계산 | 배치 변환 | 상시 엔드포인트가 불필요 |
| 하루 몇 번만 호출되는 내부 도구 | 서버리스 추론 | 유휴 비용 0이 유리 |
| 수백만 건 추론 비용을 낮춰라 | Inferentia | 추론 전용 칩 |
| 헷갈리는 짝 | 가르는 기준 |
|---|---|
| 분류 vs 회귀 | 출력이 범주냐 연속 숫자냐 |
| 분류 vs 군집 | 정답 라벨이 있느냐 없느냐 |
| 정밀도 vs 재현율 | FP를 줄이느냐 FN을 줄이느냐 |
| ROC-AUC vs PR-AUC | 균형 데이터냐 극단 불균형이냐 |
| RMSE vs MAE | 큰 오차를 무겁게 벌하느냐 균등하게 보느냐 |
| 데이터 드리프트 vs 컨셉 드리프트 | 입력 분포가 변했냐 입력-정답 관계가 변했냐 |
| 실시간 vs 서버리스 | 지연 일관성이 중요하냐 유휴 비용이 중요하냐 |
| 배치 변환 vs 비동기 추론 | 대량 일괄이냐 큰 단건·긴 처리냐 |
| Trainium vs Inferentia | 학습이냐 추론이냐 |
| AI 서비스 vs SageMaker | 문제가 일반적이냐 고유하냐 |
⚠️ 함정: Week 1에서 가장 자주 틀리는 지점은 "더 좋은 기술"을 고르는 습관이다. 시험은 요구사항을 만족하는 가장 단순하고 저렴한 선택을 정답으로 본다. 딥러닝이 필요 없는 문제에 딥러닝을, API 한 번이면 되는 작업에 커스텀 학습을 고르면 오답이다.
다음 주(Week 2)에는 수명주기의 첫 단계인 데이터 수집과 저장 — S3, Kinesis, Glue, Athena를 깊이 파고든다.
선택지를 클릭하면 정답·해설이 펼쳐집니다.
문제 1
배포된 이탈 예측 모델의 정확도가 몇 달에 걸쳐 서서히 떨어지고 있다. 입력 데이터 분포가 학습 때와 달라진 것으로 보인다. ML 수명주기에서 이 문제가 해당하는 단계와 대응은?
문제 2
사기 거래 탐지 모델에서 사기는 전체의 0.1%다. 모델 평가지표로 가장 부적절한 것과 그 이유로 옳은 것은?
문제 3
콜센터 녹음 파일을 텍스트로 변환한 뒤 고객 불만의 감성을 분석하려 한다. 학습 없이 가장 빠르게 구현하는 조합은?
문제 4
회귀 모델 평가에서 큰 오차를 특별히 강하게 벌해 이상치를 민감하게 잡아내고 싶다. 적합한 지표는?
문제 5
"고유한 산업 결함 이미지 데이터로 커스텀 분류 모델을 학습해야 한다"는 요구가 있다. 추상화 계층에서 적합한 선택은?