Skip to content

Latest commit

Β 

History

History
284 lines (206 loc) Β· 8.03 KB

File metadata and controls

284 lines (206 loc) Β· 8.03 KB

πŸš€ MLOps νŒŒμ΄ν”„λΌμΈ κ΅¬ν˜„

ν˜„λŒ€μ˜€ν† μ—λ²„ - 3일 24μ‹œκ°„ MLOps μ‹€μŠ΅ 자료


⚠️ 필독: 사전 ν™˜κ²½ μ„€μ •

πŸ”΄ ꡐ윑 μ‹œμž‘ μ „ λ°˜λ“œμ‹œ ν™˜κ²½ 섀정을 μ™„λ£Œν•΄μ£Όμ„Έμš”!

ꡐ윑 λ‹ΉμΌμ—λŠ” ν™˜κ²½ 섀정을 μœ„ν•œ λ³„λ„μ˜ μ‹œκ°„μ΄ μ œκ³΅λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
섀정이 μ™„λ£Œλ˜μ§€ μ•ŠμœΌλ©΄ μ‹€μŠ΅ μ°Έμ—¬κ°€ μ–΄λ €μšΈ 수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ“‹ μš΄μ˜μ²΄μ œλ³„ μ„€μ • κ°€μ΄λ“œ

운영체제 μ„€μ • κ°€μ΄λ“œ μ˜ˆμƒ μ†Œμš”μ‹œκ°„
macOS πŸ“– SETUP_MACOS.md 30~45λΆ„
Windows πŸ“– SETUP_WINDOWS.md 45~60λΆ„

βœ… 사전 μ„€μ • 체크리슀트

λ‹€μŒ ν•­λͺ©μ΄ λͺ¨λ‘ μ™„λ£Œλ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€:

  • Docker Desktop μ„€μΉ˜ 및 μ‹€ν–‰ 확인
  • AWS CLI v2 μ„€μΉ˜ (aws --version)
  • kubectl μ„€μΉ˜ (kubectl version --client)
  • Python 3.9+ μ„€μΉ˜ (python3 --version)
  • Git μ„€μΉ˜ (git --version)
  • ν•„μˆ˜ Python νŒ¨ν‚€μ§€ μ„€μΉ˜ (kfp, mlflow, scikit-learn, onnxruntime)

πŸ” λΉ λ₯Έ 확인 λͺ…λ Ήμ–΄

# λͺ¨λ“  도ꡬ 버전 확인
aws --version && kubectl version --client && docker --version && python3 --version && git --version

# Python νŒ¨ν‚€μ§€ 확인
python3 -c "import kfp, mlflow, sklearn, onnxruntime; print('βœ… λͺ¨λ“  νŒ¨ν‚€μ§€ μ„€μΉ˜ μ™„λ£Œ')"

πŸ“‹ ꡐ윑 κ°œμš”

ν•­λͺ© λ‚΄μš©
ꡐ윑λͺ… MLOps νŒŒμ΄ν”„λΌμΈ κ΅¬ν˜„
κΈ°κ°„ 3일 (24μ‹œκ°„)
λŒ€μƒ λ°μ΄ν„°μ‚¬μ΄μ–Έν‹°μŠ€νŠΈ & λ°μ΄ν„°μ—”μ§€λ‹ˆμ–΄ 15λͺ…
ν™˜κ²½ AWS EKS + Kubeflow + MLflow + KServe

🎯 ν•™μŠ΅ λͺ©ν‘œ

  • Kubeflow Pipelinesλ₯Ό ν™œμš©ν•œ ML μ›Œν¬ν”Œλ‘œμš° μžλ™ν™”
  • MLflowλ₯Ό ν†΅ν•œ μ‹€ν—˜ 좔적 및 λͺ¨λΈ 버전 관리
  • KServeλ₯Ό μ‚¬μš©ν•œ ν”„λ‘œλ•μ…˜ λͺ¨λΈ μ„œλΉ™
  • λͺ¨λ‹ˆν„°λ§ & μž¬ν•™μŠ΅ νŒŒμ΄ν”„λΌμΈ ꡬ좕
  • λͺ¨λΈ μ΅œμ ν™” (ONNX, Quantization) 기법 적용

πŸ“… ꡐ윑 일정

κ°•μ˜ μ‹œκ°„

ꡬ뢄 μ‹œκ°„ λΉ„κ³ 
μ˜€μ „ κ°•μ˜ 09:00 ~ 11:30 μ‰¬λŠ”μ‹œκ°„: 10:20~10:30
μ μ‹¬μ‹œκ°„ 11:30 ~ 13:00
μ˜€ν›„ κ°•μ˜ 13:00 ~ 17:30 μ‰¬λŠ”μ‹œκ°„: λ§€ μ‹œκ°„ 20λΆ„~30λΆ„

3일 컀리큘럼

Day 1: MLOps 기초 & Kubeflow νŒŒμ΄ν”„λΌμΈ

μ‹œκ°„ λ‚΄μš© Lab
09:00-11:30 MLOps κ°œμš”, AWS EKS ν™˜κ²½ ꡬ좕 Lab 1-1
13:00-15:30 Kubeflow λŒ€μ‹œλ³΄λ“œ, Hello Pipeline Lab 1-2
15:30-17:30 Batch 데이터 νŒŒμ΄ν”„λΌμΈ Lab 1-3

Day 2: λͺ¨λΈ μ„œλΉ™ & MLflow

μ‹œκ°„ λ‚΄μš© Lab
09:00-11:30 FastAPI λͺ¨λΈ μ„œλΉ™, μ»¨ν…Œμ΄λ„ˆν™” Lab 2-1
13:00-15:30 MLflow Tracking & Registry Lab 2-2
15:30-17:30 KServe 배포, Canary 배포 Lab 2-3

Day 3: λͺ¨λ‹ˆν„°λ§ & ν”„λ‘œμ νŠΈ

μ‹œκ°„ λ‚΄μš© Lab
09:00-11:30 Drift Detection, μžλ™ μž¬ν•™μŠ΅ Lab 3-1
13:00-15:00 E2E Pipeline, λͺ¨λΈ μ΅œμ ν™” Lab 3-2, Lab 3-3
15:00-17:30 νŒ€ ν”„λ‘œμ νŠΈ & λ°œν‘œ Project

πŸ“ Repository ꡬ쑰

ha-mlops-pipeline/
β”œβ”€β”€ README.md                         # πŸ“Œ 이 파일 (메인 κ°€μ΄λ“œ)
β”œβ”€β”€ docs/                             # πŸ“š λ¬Έμ„œ
β”‚   β”œβ”€β”€ SETUP_MACOS.md               # 🍎 macOS ν™˜κ²½ μ„€μ •
β”‚   β”œβ”€β”€ SETUP_WINDOWS.md             # πŸͺŸ Windows ν™˜κ²½ μ„€μ •
β”‚   └── TROUBLESHOOTING.md           # πŸ”§ νŠΈλŸ¬λΈ”μŠˆνŒ… κ°€μ΄λ“œ
β”‚
β”œβ”€β”€ day1/                             # πŸ“… 1일차 μ‹€μŠ΅
β”‚   β”œβ”€β”€ lab1-1_mlops-environment-setup/
β”‚   β”œβ”€β”€ lab1-2_hello-pipeline/
β”‚   └── lab1-3_batch-pipeline/
β”‚
β”œβ”€β”€ day2/                             # πŸ“… 2일차 μ‹€μŠ΅
β”‚   β”œβ”€β”€ lab2-1_fastapi-serving/
β”‚   β”œβ”€β”€ lab2-2_mlflow-tracking/
β”‚   └── lab2-3_kserve-deployment/
β”‚
β”œβ”€β”€ day3/                             # πŸ“… 3일차 μ‹€μŠ΅
    β”œβ”€β”€ lab3-1_drift-monitoring/
    β”œβ”€β”€ lab3-2_e2e-pipeline/
    β”œβ”€β”€ lab3-3_model-optimization/    # πŸ†• ONNX & Quantization
    └── project/                      # νŒ€ ν”„λ‘œμ νŠΈ


πŸš€ μ‹œμž‘ν•˜κΈ°

1. Repository 클둠

git clone https://github.com/fastcampusdevmlops/ha-mlops-pipeline.git
cd ha-mlops-pipeline

2. ν™˜κ²½ λ³€μˆ˜ μ„€μ •

# ⚠️ 본인의 μ‚¬μš©μž 번호둜 λ³€κ²½ν•˜μ„Έμš”!
export USER_NUM="01"  # 예: 01, 02, ..., 15, 20

# μžλ™ μ„€μ •λ˜λŠ” ν™˜κ²½ λ³€μˆ˜
export NAMESPACE="kubeflow-user${USER_NUM}"
export S3_BUCKET="mlops-training-user${USER_NUM}"
export ECR_IRIS_API_REPO="mlops-training/user${USER_NUM}"

# 확인
echo "λ„€μž„μŠ€νŽ˜μ΄μŠ€: ${NAMESPACE}"
echo "S3 버킷: ${S3_BUCKET}"

3. AWS 자격 증λͺ… μ„€μ •

aws configure
# AWS Access Key ID: [제곡된 Access Key]
# AWS Secret Access Key: [제곡된 Secret Key]
# Default region name: ap-northeast-2
# Default output format: json

4. EKS ν΄λŸ¬μŠ€ν„° μ—°κ²°

aws eks update-kubeconfig \
    --region ap-northeast-2 \
    --name mlops-training-cluster

# μ—°κ²° 확인
kubectl get nodes

5. Kubeflow 접속

# 포트 ν¬μ›Œλ”©
kubectl port-forward svc/istio-ingressgateway -n istio-system 8080:80

# λΈŒλΌμš°μ €μ—μ„œ 접속
# http://localhost:8080

πŸ“š μ‹€μŠ΅ κ°€μ΄λ“œ

Day 1 Labs

Lab 제λͺ© μ‹œκ°„ λ‚œμ΄λ„
Lab 1-1 MLOps ν™˜κ²½ ꡬ좕 65λΆ„ ⭐⭐
Lab 1-2 Hello World Pipeline 60λΆ„ ⭐⭐
Lab 1-3 Batch 데이터 νŒŒμ΄ν”„λΌμΈ 90λΆ„ ⭐⭐⭐

Day 2 Labs

Lab 제λͺ© μ‹œκ°„ λ‚œμ΄λ„
Lab 2-1 FastAPI λͺ¨λΈ μ„œλΉ™ 90λΆ„ ⭐⭐⭐
Lab 2-2 MLflow Tracking & Registry 80λΆ„ ⭐⭐⭐
Lab 2-3 KServe 배포 80λΆ„ ⭐⭐⭐⭐

Day 3 Labs

Lab 제λͺ© μ‹œκ°„ λ‚œμ΄λ„
Lab 3-1 Drift Monitoring & Auto-Retraining 90λΆ„ ⭐⭐⭐
Lab 3-2 E2E MLOps Pipeline 80λΆ„ ⭐⭐⭐⭐
Lab 3-3 Model Optimization (ONNX & Quantization) 40λΆ„ ⭐⭐⭐

Day 3 ν”„λ‘œμ νŠΈ

ν•­λͺ© λ‚΄μš©
Project νŒ€λ³„ E2E νŒŒμ΄ν”„λΌμΈ ꡬ좕
μ‹œκ°„ 15:00 ~ 17:30 (2μ‹œκ°„ 30λΆ„)
ꡬ성 5개 νŒ€ Γ— 3λͺ…
λ°œν‘œ νŒ€λ³„ 15λΆ„ λ°œν‘œ + Q&A

πŸ› οΈ 기술 μŠ€νƒ

ν”Œλž«νΌ & 인프라

기술 버전 μš©λ„
AWS EKS 1.28+ Kubernetes ν΄λŸ¬μŠ€ν„°
Kubeflow 1.8+ ML νŒŒμ΄ν”„λΌμΈ ν”Œλž«νΌ
MLflow 2.9+ μ‹€ν—˜ 좔적 & λͺ¨λΈ λ ˆμ§€μŠ€νŠΈλ¦¬
KServe 0.11+ λͺ¨λΈ μ„œλΉ™
Istio 1.17+ μ„œλΉ„μŠ€ λ©”μ‹œ

μŠ€ν† λ¦¬μ§€

기술 μš©λ„
AWS S3 데이터 & μ•„ν‹°νŒ©νŠΈ μ €μž₯
AWS ECR μ»¨ν…Œμ΄λ„ˆ 이미지 λ ˆμ§€μŠ€νŠΈλ¦¬
PostgreSQL MLflow 메타데이터
MinIO 였브젝트 μŠ€ν† λ¦¬μ§€ (둜컬)

개발 도ꡬ

기술 μš©λ„
Python 3.9+ ML 개발
KFP SDK νŒŒμ΄ν”„λΌμΈ μ •μ˜
scikit-learn ML λͺ¨λΈλ§
ONNX Runtime λͺ¨λΈ μ΅œμ ν™”

πŸ“ž 지원

ꡐ윑 쀑 문제 λ°œμƒ μ‹œ

  1. πŸ“– νŠΈλŸ¬λΈ”μŠˆνŒ… κ°€μ΄λ“œ 확인
  2. πŸ™‹ κ°•μ‚¬μ—κ²Œ 질문
  3. πŸ’¬ μ˜† μˆ˜κ°•μƒκ³Ό ν˜‘λ ₯

πŸ“ μ°Έκ³  자료

곡식 λ¬Έμ„œ

μΆ”κ°€ ν•™μŠ΅


Β© 2025 ν˜„λŒ€μ˜€ν† μ—λ²„ MLOps Training