ML sistemleri için CI/CD nasıl kurulur? Klasik yazılım CI/CD'sinden farkı nedir?
Cevap
ML'de değişen sadece kod değildir. Veri ve model de değişir. Bu yüzden klasik CI/CD'ye ek olarak veri doğrulama, model doğrulama ve sürekli eğitim (continuous training, CT) eklenir.
Klasik yazılımdan farkları
| Konu | Klasik yazılım | ML sistemi |
|---|---|---|
| Değişen | Kod | Kod + veri + model + config |
| Test | Unit, integration | Bunlara ek veri testleri, model kalite testleri |
| Başarı kriteri | Testler geçti mi | Metrikler eşiği geçti mi, öncekinden kötü mü |
| Bozulma | Kod değişince | Kod değişmese de veri değişince (drift) |
| Pipeline | Build, test, deploy | Ek olarak eğitim, değerlendirme, kayıt, izleme |
Tipik pipeline
- CI (her commit/PR): Lint, unit testler (feature fonksiyonları, preprocessing), küçük bir veri örneğiyle hızlı eğitim (smoke test), şema kontrolleri.
- Veri doğrulama: Şema, null oranları, değer aralıkları, dağılım kontrolleri (Great Expectations, Pandera).
- Eğitim pipeline'ı: Zamanlanmış veya yeni veri/drift ile tetiklenen orkestre edilmiş adımlar (Airflow, Kubeflow, Vertex/SageMaker Pipelines).
- Model doğrulama (quality gate): Yeni model, holdout setinde mevcut production modelinden kötü değilse, kritik segmentlerde gerileme yoksa ve latency bütçesini karşılıyorsa registry'ye aday olarak kaydedilir.
- CD: Container build, staging, shadow/canary, ardından production.
- Monitoring: Drift ve performans izleme. Gerekirse yeniden eğitim tetiklenir.
# .github/workflows/ml.yml (özet)
on: [pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: pip install -r requirements.txt
- run: pytest tests/ # feature ve preprocessing testleri
- run: python validate_data.py --sample # şema ve dağılım kontrolleri
- run: python train.py --config configs/smoke.yaml
- run: python evaluate.py --min-pr-auc 0.60 --compare-to productionML'e özgü test örnekleri
- Preprocessing'in train ve serving'de aynı çıktıyı verdiğini doğrulayan testler (skew testi).
- Invariance testleri: İsim değişince duygu analizi sonucunun değişmemesi.
- Directional testler: Fiyat artınca talep tahmininin artmaması.
- Model, sabit bir "golden" örnek seti üzerinde beklenen çıktıları vermeli.
- LLM uygulamalarında: prompt değişikliklerinde eval setinin otomatik koşulması.
İlgili MLOps soruları
- GPU'da model inference'ını nasıl optimize edersiniz? Throughput ve latency arasındaki trade-off'u açıklayın.
- Yeni bir modeli production'a güvenli şekilde nasıl çıkarırsınız? Shadow deployment, canary ve A/B testi karşılaştırın.
- Bir ML modelini tekrarlanabilir (reproducible) hale getirmek ve versiyonlamak için neler yaparsınız?
- Feature store nedir? Training-serving skew problemini nasıl çözer?
- Experiment tracking neden önemlidir? MLflow ile neleri takip edersiniz?
- Data drift ve concept drift arasındaki fark nedir? Production'da nasıl tespit edersiniz?
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.