Tutorial 20: Proyek MLOps End-to-End
Daftar Isi
Pendahuluan
MLOps adalah disiplin untuk men-deploy dan memelihara model machine learning di produksi secara andal dan efisien. Meskipun membangun model yang akurat itu penting, tantangan sesungguhnya terletak pada segala hal di sekitarnya: melakukan versioning data dan kode secara bersamaan, melacak eksperimen secara reproducible, mengotomatisasi pipeline pelatihan dan deployment, memantau performa model di produksi, dan merespons data drift.
Tutorial ini memandu Anda melalui proyek MLOps yang lengkap dari data mentah hingga monitoring produksi. Kita akan membangun sistem prediksi churn pelanggan menggunakan alat standar industri: DVC untuk versioning data, MLflow untuk pelacakan eksperimen dan registry model, GitHub Actions untuk CI/CD, Docker untuk kontainerisasi, dan Evidently untuk monitoring produksi.
Prasyarat
- Python 3.9+
- Git dan akun GitHub
- Docker dan Docker Compose
- AWS CLI atau CLI cloud sejenis (untuk deployment)
- Pemahaman dasar pelatihan model ML
# Instal semua paket yang diperlukan
pip install dvc[s3] mlflow scikit-learn pandas evidently
pip install fastapi uvicorn docker boto3
import os
print("Tutorial MLOps E2E - Pengaturan Lingkungan")
Gambaran Proyek
Struktur proyek kita mengikuti praktik terbaik MLOps dengan pemisahan tanggung jawab yang jelas.
prediksi-churn/
├── .github/
│ └── workflows/
│ ├── train.yml
│ ├── test.yml
│ └── deploy.yml
├── data/
│ ├── raw/
│ │ └── pelanggan.csv.dvc
│ └── processed/
│ └── fitur.csv.dvc
├── src/
│ ├── data/
│ │ ├── init.py
│ │ ├── persiapan.py
│ │ └── validasi.py
│ ├── fitur/
│ │ ├── init.py
│ │ └── bangunfitur.py
│ ├── model/
│ │ ├── init.py
│ │ ├── latih.py
│ │ └── prediksi.py
│ └── monitoring/
│ ├── init.py
│ └── deteksidrift.py
├── serving/
│ ├── app.py
│ ├── Dockerfile
│ └── requirements.txt
├── tests/
│ ├── testdata.py
│ ├── testmodel.py
│ └── testapi.py
├── configs/
│ └── config.yaml
├── dvc.yaml
├── dvc.lock
├── params.yaml
├── docker-compose.yml
└── requirements.txt
Versioning Data dengan DVC
DVC (Data Version Control) melacak dataset besar dan file model bersamaan dengan repositori Git Anda tanpa menyimpannya langsung di Git.
Menyiapkan DVC
# Inisialisasi DVC di repositori Git Anda
cd prediksi-churn
dvc init
Konfigurasi penyimpanan remote (S3 dalam contoh ini)
dvc remote add -d myremote s3://my-ml-bucket/dvc-store
dvc remote modify myremote region us-east-1
Lacak file data
dvc add data/raw/pelanggan.csv
git add data/raw/pelanggan.csv.dvc data/raw/.gitignore
git commit -m "Lacak data pelanggan mentah dengan DVC"
Push data ke penyimpanan remote
dvc push
Definisi Pipeline DVC
# dvc.yaml - Mendefinisikan pipeline ML yang reproducible
stages:
persiapan:
cmd: python src/data/persiapan.py
deps:
- src/data/persiapan.py
- data/raw/pelanggan.csv
params:
- persiapan.testsize
- persiapan.randomseed
outs:
- data/processed/train.csv
- data/processed/test.csv