MLOps: Modelini Notebook'tan Production'a Taşımanın Gerçek Yolu

MLOps: Modelini Notebook'tan Production'a Taşımanın Gerçek Yolu
Photo by Daniil Komov / Unsplash

Notebook'tan Sonrası: Gerçek Dünya

ML modelini eğittin, notebook'ta %95 accuracy aldın. Tebrikler! Ama şimdi asıl soru: Bu modeli gerçek kullanıcıların hizmetine nasıl sunacaksın? İşte MLOps tam burada devreye giriyor.

MLOps Nedir ve Neden Önemli?

MLOps, machine learning modellerini production'da güvenilir şekilde çalıştırmak için gerekli süreçleri, kültürü ve araçları ifade ediyor. DevOps'un ML dünyasındaki karşılığı diyebilirsin. Ama şunu unutma: MLOps sadece deployment'tan ibaret değil. Modelin tüm yaşam döngüsünü kapsıyor.

Model Serving: Modelleri Canlıya Alma

Model serving, eğittiğin modeli production ortamında servis etme süreci. Burada birkaç temel yaklaşım var:

Real-time serving: Kullanıcıdan gelen isteklere anında yanıt verir. REST API endpoint'leri üzerinden çalışır. Örneğin, kredi başvurusu değerlendirme sistemi.

Batch serving: Büyük veri kümelerini toplu şekilde işler. Günlük raporlar veya toplu tahminler için ideal.

Real-time serving için FastAPI kullanmanı öneririm. İşte basit bir örnek:

from fastapi import FastAPI
from pydantic import BaseModel
import joblib

app = FastAPI()
model = joblib.load('model.pkl')

class PredictionRequest(BaseModel):
    feature1: float
    feature2: float

@app.post('/predict')
async def predict(request: PredictionRequest):
    features = [[request.feature1, request.feature2]]
    prediction = model.predict(features)
    return {'prediction': prediction[0]}

ML Pipeline: Otomasyonun Kalbi

ML pipeline, model geliştirme sürecini otomatikleştiren bir dizi adım. Manual işlemleri minimize eder, tekrarlanabilirliği artırır.

Tipik bir pipeline şu adımlardan oluşur:

Data ingestion: Veriyi çeşitli kaynaklardan alıp işlemeye hazır hale getirir.

Data validation: Gelen verinin kalitesini ve uygunluğunu kontrol eder.

Feature engineering: Ham veriden model için uygun feature'ları üretir.

Model training: Modeli eğitir ve hyperparameter tuning yapar.

Model evaluation: Model performansını test verisi üzerinde değerlendirir.

Model deployment: Başarılı modelleri production'a taşır.

Kubeflow Pipelines kullanarak pipeline'ını şöyle kurabilirsin:

@component
def preprocess_data(data_path: str) -> str:
    # Data preprocessing logic
    return processed_data_path

@component  
def train_model(processed_data: str) -> str:
    # Model training logic
    return model_path

@pipeline(name='ml-pipeline')
def ml_pipeline(data_path: str):
    preprocess_task = preprocess_data(data_path)
    train_task = train_model(preprocess_task.output)

Containerization: Tutarlı Ortamlar

Docker olmadan MLOps düşünmek zor. Container'lar sayesinde development, staging ve production ortamlarında tutarlı çalışma ortamı sağlarsın.

Basit bir Dockerfile örneği:

FROM python:3.9-slim

WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt

COPY . .

CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]

Orchestration: Ölçeklenebilirlik

Kubernetes, container'larını yönetmek ve ölçeklendirmek için en iyi seçenek. Model serving için KServe veya Seldon Core gibi araçları kullanabilirsin.

Kubernetes deployment örneği:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: ml-model
spec:
  replicas: 3
  selector:
    matchLabels:
      app: ml-model
  template:
    metadata:
      labels:
        app: ml-model
    spec:
      containers:
      - name: model-server
        image: your-registry/ml-model:latest
        ports:
        - containerPort: 8000

Monitoring: Production'da Göz Kulak Olmak

Modeli production'a attıktan sonra iş bitmiyor. Model drift, data drift ve performance degradation'i sürekli monitor etmen gerekiyor.

Monitor etmen gereken metrikler:

Model performance: Accuracy, precision, recall gibi metrikler

Data quality: Gelen verinin dağılımı ve istatistikleri

System metrics: CPU, memory kullanımı, latency

Prometheus ve Grafana ile monitoring setup'ı yapabilirsin.

Versioning: Her Şeyin Kaydını Tut

Model versioning, data versioning ve code versioning olmadan MLOps eksik kalır. DVC (Data Version Control) ile data ve model version'larını yönetebilirsin.

MLflow veya Weights & Biases gibi araçlar experiment tracking için işini kolaylaştırır.

Başlamak İçin Pratik Adımlar

MLOps journey'ine başlamak için şu adımları takip et:

1. Mevcut ML workflow'unu analiz et ve manual adımları belirle

2. Basit bir CI/CD pipeline kur (GitHub Actions veya GitLab CI)

3. Modelini Docker container'ına al

4. FastAPI ile basit bir REST API oluştur

5. Local'de Kubernetes (Minikube veya Kind) kur ve deployment yap

6. Temel monitoring metriklerini topla

Unutma: Mükemmeliyetçilik tuzağına düşme. Basit başla, iterasyon yaparak geliştir.

Sonuç: MLOps Bir Yolculuk

MLOps bir varış noktası değil, sürekli gelişen bir yolculuk. Bugün başladığın basit pipeline, yarın karmaşık bir sistemin temelini oluşturacak. Önemli olan başlamak ve sürekli iyileştirmek.

Şimdi elindeki bir modeli al ve bu adımları uygulamaya başla. İlk deployment'ını yap, ilk pipeline'ını kur. Hata yapmaktan korkma - her hata seni bir sonraki seviyeye taşıyacak.