ML 모델 자동 배포·카나리·자동 롤백 파이프라인
⸻
🎯 목표
“코드를 한 줄도 바꾸지 않고” 개발→학습→검증→프로덕션 배포→카나리 롤아웃→데이터 드리프트 감지→자동 롤백까지 ML 모델 라이프사이클(CI/CD)을 완전 자동화합니다.
⸻
⚙️ 핵심 구성 요소
1. Kubeflow Pipelines
• 모델 학습·평가 워크플로우를 재현 가능한 컴포넌트로 정의
• ‘train’ → ‘eval’ → ‘package’ → ‘push to registry’ 파이프라인
2. Container Registry
• Trained 모델을 포함한 컨테이너 이미지(예: model:gitsha) 저장
3. Seldon Core
• Kubernetes 위에 모델 Serving Inference API 자동 생성
• SeldonDeployment CRD로 버전별 엔드포인트 선언
4. Argo Rollouts
• SeldonDeployment에 카나리 전략 적용
• Prometheus Metrics-based AnalysisTemplate으로 자동 판단
5. Prometheus + Drift Detector
• “추론 결과 분포”(예: 클래스별 확률 평균)와 “기준 분포”(훈련 데이터) 간 JS Divergence 계산
• 이상치(Drift) 감지 시 자동 롤백 트리거
6. GitOps (Argo CD)
• PipelineRun, SeldonDeployment, Rollout CR 모두 Git 저장소에 선언
• Sync 옵션으로 실시간 동기화·자가 치유
⸻
🏗️ 워크플로우
[Git Push ML 코드]
↓
[Kubeflow Pipelines]
(train → eval → containerize → push)
↓
[GitOps: new SeldonDeployment manifest]
↓
Argo CD Sync → Seldon Core 벤치마킹 Inference 서비스 생성
↓
[Argo Rollouts 시작: 10% → 50% → 100%]
↓
Prometheus 수집된 분포 메트릭
↓
AnalysisTemplate 평가: JS Divergence < θ?
├─ Yes: 다음 단계로 카나리 확장
└─ No: 자동 롤백(rollbackTo: lastStableRevision)
⸻
🧪 실전 예제
1) SeldonDeployment + Rollout
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata: { name: ml-model-rollout }
spec:
strategy:
canary:
steps:
- setWeight: 10
- pause: {duration: 60}
- setWeight: 50
- pause: {duration: 120}
selector: { matchLabels: { app: seldon-ml } }
template:
metadata: { labels: { app: seldon-ml } }
spec:
replicas: 4
containers:
- name: predictor
image: registry/my-model:${{gitsha}}
ports: [{ containerPort: 9000 }]
2) AnalysisTemplate (Drift 감지)
apiVersion: argoproj.io/v1alpha1
kind: AnalysisTemplate
metadata: { name: ml-drift-check }
spec:
metrics:
- name: js-divergence
interval: 30s
provider:
prometheus:
query: |
js_divergence(
histogram_quantile(0.5, sum(rate(prediction_prob_bucket[5m])) by (le)),
histogram_quantile(0.5, sum(rate(baseline_prob_bucket[5m])) by (le))
)
successCondition: result < 0.05
failureLimit: 1
⸻
✅ 기대 효과
• 완전 자동화된 모델 배포: 개발→학습→배포→모니터링→롤백까지 “버튼 없음”
• 안전한 카나리 릴리즈: 실제 트래픽의 카나리 10~50%에서 검증 후 확장
• 데이터 드리프트 대응: 분포 이상시 즉시 롤백하여 잘못된 예측 방지
• GitOps 일관성: 모든 리소스 정의와 이력이 Git에 기록
⸻
🔧 확장 포인트
• A/B 테스트 연동: TrafficSplit CRD로 사용자 세그먼트별 롤아웃
• Feature Store 연계: Feast로 실시간 특성 검증
• ML Metadata 추적: MLMD + Kubeflow MetadataStore 통합
• Explainability Hook: SHAP 기반 모델 설명 API 자동 배포
IT & Tech 정보
ModelOps CI/CD: Kubeflow Pipelines + Seldon + Argo Rollouts 기반
반응형
반응형