Bir ML modelini tekrarlanabilir (reproducible) hale getirmek ve versiyonlamak için neler yaparsınız?
Cevap
Bir model sadece kodun değil kod + veri + konfigürasyon + ortam + rastgelelik kombinasyonunun ürünüdür. Tekrarlanabilirlik için bunların hepsinin versiyonlanması gerekir. Amaç: "6 ay önce production'a çıkan v14 modelini aynı şekilde yeniden üretebilir miyim?" sorusuna evet diyebilmek.
Versiyonlanması gerekenler
- Kod: Git. Her eğitim run'ı bir commit hash'e bağlanır.
- Veri: DVC, lakeFS, Delta Lake/Iceberg time travel veya değişmez (immutable) snapshot'lar. Veri setinin hash'i kaydedilir.
- Konfigürasyon: Hiperparametreler ve özellik listesi koda gömülü değil, versiyonlanan config dosyalarında (YAML, Hydra).
- Ortam: Kilitlenmiş bağımlılıklar (
uv.lock,poetry.lock, pinnedrequirements.txt), Docker image digest'i, CUDA/cuDNN versiyonu. - Rastgelelik: Seed'ler sabitlenir.
- Model artifact: Model registry'de versiyon numarası, eğitim run'ına, veri versiyonuna ve metriklere bağlantı (lineage).
import random, numpy as np, torch
def set_seed(seed=42):
random.seed(seed); np.random.seed(seed); torch.manual_seed(seed)
torch.cuda.manual_seed_all(seed)
torch.backends.cudnn.benchmark = False
torch.use_deterministic_algorithms(True, warn_only=True)dvc add data/train.parquet # veri hash'ini .dvc dosyasında tutar
git add data/train.parquet.dvc params.yaml
git commit -m "train data v2025-10"
dvc repro # pipeline'ı bağımlılıklara göre yeniden çalıştırırPratik gerçekler
- GPU'da tam bit düzeyinde determinizm her zaman mümkün değildir (atomik işlemler, farklı donanım). Hedef genelde "istatistiksel olarak aynı sonuç"tur.
- Eğitim notebook'tan değil, parametreli bir pipeline'dan (script + config) yapılmalıdır.
- Model kartı (model card): amaç, eğitim verisi, metrikler, bilinen sınırlamalar.
- Rollback için önceki model versiyonu ve onun preprocessing kodu aynı anda erişilebilir olmalı.
İlgili MLOps soruları
- ML sistemleri için CI/CD nasıl kurulur? Klasik yazılım CI/CD'sinden farkı nedir?
- 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.
- 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.