2026'da MLOps: MLflow, Model Registry ve Teknik Mülakat Soruları

ML yaşam döngüsü, MLflow deney izleme, model registry terfisi, dağıtım desenleri, kayma gözlemleme ve sistem tasarımını 2026 için kapsayan MLOps mülakat soruları; Python kodu ve yanıtlarıyla.

Koyu arka plan üzerinde MLflow model registry, dağıtım hattı ve kayma gözlemleme panosuyla gösterilen MLOps mülakat soruları

MLOps mülakat soruları, 2026 yılında niş bir uzmanlık alanı olmaktan çıkıp veri bilimi ve makine öğrenmesi mühendisliği işe alımlarının merkezine yerleşti. Ekipler artık yalnızca bir modelin nasıl eğitildiğini sormuyor; gerçek trafik modele ulaştığında modelin nasıl izlendiğini, sürümlendiğini, dağıtıldığını ve gözlemlendiğini de sorguluyor. Bu rehber, MLOps mülakatlarında tekrar tekrar karşılaşılan soruları yaşam döngüsü aşamalarına göre gruplayarak, üretim ortamlarını yansıtan MLflow örnekleriyle ele alıyor.

MLOps Mülakatları Gerçekte Neyi Ölçer

MLOps mülakatları üç yeteneği değerlendirir: tekrar üretilebilirlik (izlenen parametrelerden ve artifact'lerden bir deneyi yeniden oluşturmak), terfi güvenliği (bir modeli aşağı akış servislerini bozmadan hazırlık ortamından üretime taşımak) ve operasyonel farkındalık (kayma tespiti, geri alma ve yeniden eğitim tetikleyicileri). Yalnızca model doğruluğundan söz eden adaylar genellikle ikinci soruda tıkanır.

Makine Öğrenmesi Yaşam Döngüsüne Dair MLOps Mülakat Soruları

S1: MLOps nedir ve DevOps'tan nasıl ayrılır?

MLOps; otomasyon, CI/CD ve gözlemleme gibi DevOps ilkelerini makine öğrenmesi sistemlerine uygular, ardından geleneksel yazılımda bulunmayan üç unsuru ekler: veri sürümleme, model sürümleme ve canlı veri dağılımlarına karşı sürekli doğrulama. Klasik DevOps'ta değişen tek yapıt koddur. MLOps'ta ise kod, veri ve eğitilmiş model her biri bağımsız olarak sürümlenir ve bu üçünden herhangi biri tek bir kod satırı bile değişmeden çıktı kalitesini sessizce düşürebilir. Sıkça atıf yapılan Hidden Technical Debt in Machine Learning Systems makalesi, model kodunun gerçek bir ML sisteminin küçük bir bölümünü oluşturduğunu; veri hatlarının, gözlemlemenin ve yapılandırmanın yüzeyin büyük kısmını kapladığını vurgular.

S2: Bir üretim ML yaşam döngüsünün aşamalarını adım adım anlatın.

Güçlü bir yanıt, beş aşamayı ve her birinin ürettiği yapıtı adlandırır: veri alımı ve doğrulama (sürümlenmiş bir veri kümesi), deneyleme (metriklerle izlenen çalışmalar), model kaydı (sürümlenmiş, terfi ettirilebilir bir model), dağıtım (bir servis uç noktası veya toplu iş) ve gözlemleme (yeniden eğitime geri besleme sağlayan kayma ve performans telemetrisi). Mülakatı yapanlar geri besleme döngüsünü dinler: gözlemleme mutlaka deneylemeye geri bağlanmalıdır, aksi halde sistem zamanla çürüyen tek yönlü bir hattan ibarettir.

MLflow Öğreticisi Örneğiyle Deney İzleme

Deney izleme, MLOps sorularının çoğunun üzerine inşa edildiği temeldir; bu nedenle gerçek loglama gösteren bir MLflow öğreticisi yanıtı ağırlık taşır. MLflow her çalışma için parametreleri, metrikleri ve artifact'leri kaydeder; bu da herhangi bir sonucun run ID'sinden tekrar üretilebilmesini sağlar.

S3: MLflow izleme bir deneyi nasıl yakalar ve run ID neden önemlidir?

mlflow.start_run() çağrılarının her biri; hiperparametreleri, metrikleri ve serileştirilmiş modeli loglayan bir çalışma açar. Run ID, bir metriği onu üreten tam koda, parametrelere ve veri anlık görüntüsüne bağlayan değişmez tutamaçtır; bir deneyi aylar sonra bile tekrar üretilebilir kılan da budur.

python
# train_with_mlflow.py
import mlflow
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import f1_score

mlflow.set_tracking_uri("http://localhost:5000")  # tracking server
mlflow.set_experiment("churn-prediction")

with mlflow.start_run(run_name="rf-baseline") as run:
    params = {"n_estimators": 300, "max_depth": 12}
    model = RandomForestClassifier(**params).fit(X_train, y_train)

    f1 = f1_score(y_val, model.predict(X_val))

    mlflow.log_params(params)                       # hyperparameters
    mlflow.log_metric("val_f1", f1)                 # validation metric
    mlflow.sklearn.log_model(model, name="model")   # MLflow 3.x uses name=

    print("run_id:", run.info.run_id)               # reproducibility handle

name argümanı, MLflow 3.x'te kullanımdan kaldırılan artifact_path yerine geçer; güncel API farkındalığını göstermek için değinmeye değer bir değişikliktir. ML hattı doğrulama desenlerine atıfta bulunarak özellik ve veri kümesi izlemesinden söz eden adaylar genellikle daha yüksek puan alır, çünkü tekrar üretilebilirlik yalnızca modele değil tüm hatta bağlıdır.

Model Registry 2026: Sürümleme ve Terfi

MLflow Model Registry, bir çalışma artifact'ini yönetişimi olan, terfi ettirilebilir bir nesneye dönüştürür. Son dönemdeki en büyük değişim ve 2026 mülakatlarının sık sorgulanan konusu, isimlendirilmiş aşamalardan uzaklaşmadır.

S4: MLflow Model Registry bir modeli nasıl terfi ettirir ve 2026'da ne değişti?

Önceki MLflow sürümleri modelleri Staging, Production ve Archived olarak isimlendirilmiş sabit aşamalar üzerinden terfi ettiriyordu. MLflow 3.x, bu aşamaları takma adlar (alias) ve etiketler lehine kullanımdan kaldırır; çünkü sabit kodlanmış bir aşama listesi champion, challenger veya shadow gibi gerçek dağıtım topolojilerini ifade edemiyordu. Bir alias, tek bir sürüme işaret eden değiştirilebilir bir göstericidir; dolayısıyla terfi, modeli değiştirmek yerine alias'ı yeniden atamaya dönüşür.

python
# register_and_promote.py
import mlflow
from mlflow import MlflowClient

client = MlflowClient()

# Register a logged run artifact as a new model version
result = mlflow.register_model(
    model_uri=f"runs:/{run_id}/model",
    name="churn-classifier"
)

# MLflow 3.x: aliases replace deprecated stages
client.set_registered_model_alias(
    name="churn-classifier",
    alias="champion",        # production traffic resolves here
    version=result.version
)

# Any service loads the current champion without knowing the version
model = mlflow.pyfunc.load_model("models:/churn-classifier@champion")

Tüketiciler models:/churn-classifier@champion yüklediği için, bir geri alma işlemi yeniden dağıtım gerektirmeden alias'ın önceki bir sürüme tek seferde yeniden atanmasından ibarettir. Resmi MLflow Model Registry belgeleri alias yönetişimini ve webhook tetikleyicilerini ayrıntılı biçimde ele alır.

Tek Cümlede Alias'lar ile Aşamalar

Aşamalar "bu model hangi sabit kovada" sorusunu yanıtlarken, alias'lar "şu anda hangi sürüm champion" sorusunu yanıtlar; bu da blue-green ve canary dağıtımlarının trafiği gerçekte nasıl yönlendirdiğine birebir karşılık gelir.

Data Science & ML mülakatlarında başarılı olmaya hazır mısın?

İnteraktif simülatörler, flashcards ve teknik testlerle pratik yap.

Makine Öğrenmesi Dağıtım Desenleri ve Servis Etme

Dağıtım soruları, model yayına almış adaylarla yalnızca model eğitmiş olanları birbirinden ayırır. Desen seçimi kişisel tercihi değil, gecikme bütçesini takip eder.

S5: Toplu (batch), çevrimiçi (online) ve akış (streaming) makine öğrenmesi dağıtımını karşılaştırın.

| Desen | Gecikme | Tipik kullanım senaryosu | Servis yüzeyi | |---------|---------|------------------|-----------------| | Batch | Saatlerle günlük arası | Churn skorlama, öneri tazeleme | Bir tabloya yazan zamanlanmış iş | | Çevrimiçi (gerçek zamanlı) | On milisaniyeler | Dolandırıcılık kontrolü, istek anında sıralama | REST veya gRPC uç noktası | | Akış | Saniyenin altında, sürekli | Olay akışlarında anomali tespiti | Mesaj kuyruğundaki tüketici |

Takip sorusu neredeyse her zaman çevrimiçi durumun nasıl servis edileceğini sorar. Bir MLflow modeli kendi ortamını paketler; bu yüzden onu servis etmek, bir registry URI'sine karşı tek bir komuttan ibarettir.

bash
# serve_model.sh
# Serve the current champion as a REST endpoint on port 5001
mlflow models serve \
  --model-uri "models:/churn-classifier@champion" \
  --host 0.0.0.0 --port 5001 --env-manager uv

S6: Blue-green ve canary dağıtımları bir model sürümü için riski nasıl azaltır?

Blue-green, birbirinin aynısı iki ortam tutar ve yeni model kontrolleri geçtikten sonra tüm trafiği bir anda değiştirir; bu da anında bir geri alma yolu sunar. Canary ise trafiğin küçük bir yüzdesini yeni sürüme yönlendirir, canlı metrikleri izler, ardından kademeli olarak artırır. Modeller için canary genellikle daha güvenlidir, çünkü model kalitesi sorunları yalnızca gerçek girdilere karşı ortaya çıkar ve canary etki alanını kullanıcıların yalnızca bir kısmıyla sınırlar.

Makine Öğrenmesi Hatları için Test ve CI/CD

S7: CI/CD, standart bir yazılım hattının test etmediği neyi bir ML hattında test eder?

Bir yazılım CI hattı, kod üzerinde birim ve entegrasyon testleri çalıştırır. Bir ML hattı bunların üzerine veri ve model testleri ekler: gelen veride şema doğrulama, bir eğitim çalışmasının bozuk özellikleri sessizce almasını önleyen dağılım kontrolleri ve bir adayın sabit bir ayrılmış (holdout) küme üzerinde mevcut champion'dan düşük skor aldığında derlemeyi başarısız kılan bir model kalite kapısı. Bu nedenle ML için sürekli teslimat, yalnızca bir konteyner imajını değil bir model artifact'ini terfi ettirir ve terfi kapısı tek başına yeşil bir test paketi değil, bir metrik eşiğidir. Titiz bir hat ayrıca veri anlık görüntülerini ve bağımlılık sürümlerini sabitler; böylece herhangi bir yeniden çalıştırma belirlenimcidir (deterministik) ve tekrar üretilebilir bir derlemeyi bugün rastlantısal olarak geçen bir derlemeden ayıran şey de budur.

Gözlemleme, Veri Kayması ve Model Yeniden Eğitimi

Dağıtılmış bir model, dünya altından kaydıkça bozulur; bu yüzden gözlemleme soruları kıdemli sinyalinin ortaya çıktığı yerdir.

S8: Veri kayması nasıl tespit edilir ve hangi metrik onu nicelendirir?

Veri kayması, üretim girdilerinin dağılımının eğitim dağılımından uzaklaştığı anlamına gelir. Popülasyon Kararlılık İndeksi (PSI), yaygın ve çerçeveden bağımsız bir ölçüttür: bir referans dağılımını kovalara ayırır, üretim frekanslarını bu kovalarla karşılaştırır ve ağırlıklı logaritmik farkları toplar.

python
# population_stability_index.py
import numpy as np

def psi(reference, production, bins=10):
    # Bin edges come from the reference (training) distribution
    edges = np.quantile(reference, np.linspace(0, 1, bins + 1))
    edges[0], edges[-1] = -np.inf, np.inf

    ref_pct = np.histogram(reference, edges)[0] / len(reference)
    prod_pct = np.histogram(production, edges)[0] / len(production)

    # Clip to avoid division by zero and log(0)
    ref_pct = np.clip(ref_pct, 1e-6, None)
    prod_pct = np.clip(prod_pct, 1e-6, None)

    return float(np.sum((prod_pct - ref_pct) * np.log(prod_pct / ref_pct)))

# PSI < 0.1 stable | 0.1-0.25 moderate shift | > 0.25 major drift, investigate
score = psi(reference_scores, production_scores)

Elle yazılmış bir metriğin ötesinde, üretim ekipleri özellik kaymasını, hedef kaymasını ve veri kalitesini düzenli aralıklarla izlemek için Evidently gibi araçlara başvurur. Eksiksiz bir yanıt, veri kaymasını (girdiler değişir) kavram kaymasından (girdi-çıktı ilişkisi değişir) ayırır, çünkü ikincisi yalnızca girdileri izleyerek yakalanamaz ve etiketli sonuçlar gerektirir.

S9: Bir yeniden eğitim hattını ne tetiklemeli?

Sabit bir tempoyla zaman tabanlı yeniden eğitim en basit seçenektir; ancak hiçbir şey değişmediğinde işlem gücünü israf eder ve bir şey bozulduğunda yavaş tepki verir. Daha iyi tetikleyiciler metrik tabanlıdır: PSI bir eşiği aştığında, canlı bir değerlendirme metriği bir tabanın altına düştüğünde veya yeni etiketlenmiş veriler üzerinde zamanlanmış bir geriye dönük test (backtest) gerilediğinde yeniden eğitilir. Yeniden eğitim işi ardından bir challenger kaydeder; bir canary dağıtımı, herhangi bir alias yeniden atanmadan önce bunu mevcut champion ile karşılaştırır.

MLOps Sistem Tasarımı Mülakat Soruları

S10: Yüzlerce modeli tutarlı özelliklerle servis eden bir platform tasarlayın.

Beklenen merkezi bileşen, özellikleri bir kez hesaplayıp aynı değerleri hem eğitime hem çıkarıma sunarak eğitim-servis çarpıklığını (training-serving skew) çözen bir özellik deposudur (feature store). Feast gibi araçlar, eğitim için bir çevrimdışı depo ve servis için düşük gecikmeli bir çevrimiçi depo sağlar. Eksiksiz bir tasarım ayrıca sürümleme için bir model registry, soy takibi için bir izleme sunucusu, hatlar için bir orkestratör ve döngüyü yeniden eğitime geri kapatan bir gözlemleme katmanı adlandırır. Yanıtı, bu özellik mühendisliği mülakat rehberinde ele alınan ödünleşimler gibi gerçek özellik çalışmasına dayandırmak, diyagram ezberi yerine uygulamalı deneyimin işaretidir.

Eğitim-Servis Çarpıklığı Tuzağı

En yaygın MLOps tasarım hatası, bir özelliği eğitim not defterinde bir şekilde, servis kodunda başka bir şekilde hesaplamaktır. Bir özellik deposu tam da bunu imkânsız kılmak için vardır; bu yüzden mülakatı yapanlar, bir sistem tasarımı yanıtına "özellik" kelimesi girdiği anda bunun adlandırılmasını bekler.

Sonuç

  • MLOps, DevOps'a veri ve model sürümlemenin eklenmesi olarak çerçevelenmelidir: tekrar üretilebilirlik, terfi güvenliği ve gözlemleme, mülakatı yapanların puanladığı üç eksendir
  • MLflow 3.x API değişimi bilinmelidir: alias'lar ve etiketler, kullanımdan kaldırılan Staging ve Production aşamalarının yerini alır ve log_model artık artifact_path yerine name alır
  • Dağıtım deseni gecikme bütçesine göre seçilmeli ve model sürümlerinde blue-green yerine varsayılan olarak canary tercih edilmelidir, çünkü kalite sorunları yalnızca canlı girdilere karşı ortaya çıkar
  • Kayma, PSI gibi somut bir metrikle nicelendirilmeli ve veri kayması kavram kaymasından ayırt edilmelidir, çünkü etiket olmadan yalnızca biri görünürdür
  • Yeniden eğitim takvime göre değil metriklere göre tetiklenmeli ve ortaya çıkan challenger, champion alias'ı yeniden atanmadan önce bir canary'den geçirilmelidir
  • Herhangi bir sistem tasarımı yanıtında, eğitim-servis çarpıklığı açığını bir takip sorusu olarak gündeme gelmeden kapatmak için bir özellik deposu adlandırılmalıdır

Pratik yapmaya başla!

Mülakat simülatörleri ve teknik testlerle bilgini test et.

Etiketler

#data-science
#mlops
#mlflow
#machine-learning
#interview

Paylaş

İlgili makaleler