MLOps 기초
ML 모델의 개발/배포/운영을 자동화하고 지속 가능하게 만드는 엔지니어링
1. MLOps란
1.1 왜 MLOps인가
| 문제 | 설명 |
|---|---|
| "노트북에서는 됐는데 프로덕션에서 안 됨" | 환경 차이, 의존성 |
| "어떤 실험이 가장 좋았는지 모름" | 실험 추적 부재 |
| "모델 성능이 점점 떨어짐" | 데이터 드리프트, 모니터링 부재 |
| "모델을 어떻게 배포하지?" | 서빙 인프라 부재 |
| "이전 버전으로 롤백하고 싶음" | 모델 버전 관리 부재 |
1.2 ML 라이프사이클
2. 실험 추적
2.1 MLflow
| 컴포넌트 | 역할 |
|---|---|
| MLflow Tracking | 실험(하이퍼파라미터, 메트릭, 아티팩트) 기록 |
| MLflow Models | 모델 패키징 (다양한 프레임워크 지원) |
| MLflow Registry | 모델 버전 관리 (Staging/Production/Archived) |
| MLflow Projects | 재현 가능한 실행 환경 정의 |
2.2 기타 도구
| 도구 | 특징 |
|---|---|
| Weights & Biases (W&B) | 시각화 우수, SaaS, 팀 협업 |
| Neptune.ai | 메타데이터 관리 특화 |
| ClearML | 오픈소스, 올인원 |
| DVC (Data Version Control) | 데이터 버전 관리 (Git for Data) |
3. 모델 버전 관리
| 개념 | 설명 |
|---|---|
| 모델 레지스트리 | 모델의 버전별 메타데이터, 메트릭, 아티팩트 관리 |
| 스테이지 | None → Staging → Production → Archived |
| 롤백 | 성능 저하 시 이전 버전으로 즉시 전환 |
| A/B 테스트 | 새 버전과 기존 버전을 일부 트래픽으로 비교 |
4. 모델 서빙
| 도구 | 특징 | 적합 |
|---|---|---|
| FastAPI | Python 웹 프레임워크로 직접 서빙 | 소규모, 빠른 프로토타입 |
| TorchServe | PyTorch 공식 서빙 | PyTorch 모델 |
| Triton Inference Server | NVIDIA, 멀티모델/멀티프레임워크 | ✅ 프로덕션 |
| vLLM | LLM 특화, PagedAttention | ✅ LLM 서빙 표준 |
| Ollama | 로컬 LLM 실행 | 개인/개발용 |
| BentoML | 모델 패키징 + 서빙 | 범용 |
서빙 아키텍처
5. CI/CD for ML
| 일반 CI/CD | ML CI/CD |
|---|---|
| 코드 변경 → 테스트 → 배포 | 코드/데이터/모델 변경 → 학습 → 평가 → 배포 |
| 단위 테스트 | 데이터 검증 + 모델 성능 테스트 |
| Docker 이미지 빌드 | 모델 아티팩트 빌드 + 서빙 이미지 |
6. 모니터링
6.1 데이터 드리프트
입력 데이터의 분포가 학습 시점과 달라지는 현상. 시간이 지나면 모델 성능이 저하됨.
| 드리프트 유형 | 설명 |
|---|---|
| Data Drift | 입력 데이터 분포 변화 (예: 고객 행동 변화) |
| Concept Drift | 입력과 출력의 관계 변화 (예: 시장 트렌드 변화) |
| Model Decay | 시간 경과에 따른 모델 성능 저하 |
6.2 모니터링 항목
| 항목 | 메트릭 | 도구 |
|---|---|---|
| 모델 성능 | Accuracy, F1, 지연 | MLflow, Prometheus |
| 데이터 분포 | PSI, KS 통계량 | Evidently AI, Whylabs |
| 인프라 | GPU 사용률, 메모리, 처리량 | Prometheus + Grafana |
| 비즈니스 | 전환율, 사용자 피드백 | 비즈니스 대시보드 |
7. 컨테이너 기반 ML 환경
| 도구 | 역할 |
|---|---|
| Docker | ML 환경 패키징 (CUDA + PyTorch + 모델) |
| NVIDIA Container Toolkit | Docker에서 GPU 접근 |
| Kubernetes + GPU Operator | GPU 노드 오케스트레이션 |
| KubeFlow | Kubernetes 위 ML 파이프라인 |
| Ray | 분산 학습/서빙 프레임워크 |
# NVIDIA GPU를 Docker에서 사용
docker run --gpus all nvidia/cuda:12.0-base nvidia-smi
# vLLM으로 LLM 서빙
docker run --gpus all \
-p 8000:8000 \
vllm/vllm-openai \
--model meta-llama/Llama-3-8B-Instruct
💡 인프라 엔지니어에게 MLOps는 기존 DevOps/IaC 지식의 확장임. Docker, Kubernetes, CI/CD, 모니터링(Prometheus/Grafana)을 이미 알고 있다면, ML 특화 도구(MLflow, vLLM, GPU Operator)만 추가로 학습하면 됨.
정리
| MLOps 영역 | 핵심 도구 | Pipeline 시리즈 연결 |
|---|---|---|
| 실험 추적 | MLflow, W&B | — |
| 모델 관리 | MLflow Registry | — |
| 서빙 | vLLM, Triton | Docker, K8s |
| CI/CD | GitHub Actions + 학습 파이프라인 | CI/CD |
| 모니터링 | Prometheus + Grafana + Evidently | Monitoring |
| 인프라 | Docker + K8s + GPU Operator | Container, Automation |
🔗 관련 문서
- AI 인프라 Overview — GPU, 분산 학습, 추론 최적화
- Docker 시리즈 — 컨테이너 기초
- Ansible — 인프라 자동화
- AI & ML Series Index — 시리즈 목차