Model Deployment Nedir? Temel Kavramlar

23 September 2025
Summary: Bu makale, makine öğrenmesi modellerinin eğitim aşamasından üretim ortamına nasıl taşındığını, temel kavramları, pratik örnekleri ve kullanılan araçları kapsamlı bir şekilde anlatır. Flask API, Docker containerization ve GitOps yaklaşımlarıyla model dağıtımı adım adım incelenir.

Model Deployment Nedir? Temel Kavramlar

Introduction

Makine öğrenmesi (ML) projelerinde en çok karşılaşılan zorluklardan biri, eğitilmiş modellerin gerçek dünyada kullanılabilir hale getirilmesidir.
Birçok veri bilimci eğitim aşamasında başarılı sonuçlar alır, fakat bu modelleri üretim ortamına (production) aktarmak bambaşka bir süreçtir. İşte bu sürece Model Deployment denir.

Deployment süreci şu soruları kapsar:

  • Model nasıl çağrılacak? (REST API, batch job, stream processing)
  • Model hangi ortamda çalışacak? (On-Prem, Cloud, Edge)
  • Modelin performansı nasıl izlenecek? (Monitoring, Logging)
  • Yeni versiyonlar nasıl devreye alınacak? (CI/CD, A/B Testing)

Bu makalede:

  • Model deployment’ın temel kavramlarını,
  • Flask ile basit bir API kurmayı,
  • Docker containerization sürecini,
  • CI/CD ve GitOps yaklaşımlarını öğreneceğiz.

Prerequisites

Başlamadan önce aşağıdaki bilgi ve araçlara ihtiyacınız olacak:

  • Python programlama dili ve temel ML kütüphaneleri (scikit-learn, joblib)
  • Flask framework bilgisi (REST API geliştirme için)
  • Docker bilgisi (containerization için)
  • Git ve temel CI/CD kavramları
  • Temel ML terimleri: training, inference, model registry

Step 1 – Model Deployment Kavramları

1.1 Batch vs Online Inference

  • Batch Inference: Büyük veri setlerinde toplu tahmin. Örn: Her gece müşteri segmentasyonu çalıştırma.
  • Online Inference: Gerçek zamanlı tahmin. Örn: Kullanıcı bir ürün önerisi istediğinde API üzerinden model tahmini.

1.2 On-Prem vs Cloud Deployment

  • On-Premises: Model, kurumun kendi veri merkezinde çalışır. Daha fazla kontrol, daha fazla operasyonel yük.
  • Cloud Deployment: AWS SageMaker, Azure ML, GCP Vertex AI gibi platformlarda otomatik ölçeklenebilirlik.

1.3 Model Registry

Bir modelin hangi versiyonda, hangi parametrelerle eğitildiğini kaydetmek için Model Registry kullanılır.
Örn: MLflow, DVC, SageMaker Model Registry.

# MLflow ile model kaydetme örneği
mlflow sklearn log-model -m "model.pkl" -r "my_model_registry"

Step 2 – Flask API ile Basit Model Deployment

2.1 Örnek Model Eğitimi

from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
import joblib

# Veri seti
iris = load_iris()
X, y = iris.data, iris.target

# Model eğitimi
model = LogisticRegression(max_iter=200)
model.fit(X, y)

# Kaydet
joblib.dump(model, "model.pkl")

2.2 Flask API Yazımı

from flask import Flask, request, jsonify
import joblib

app = Flask(__name__)
model = joblib.load("model.pkl")

@app.route("/predict", methods=["POST"])
def predict():
    data = request.get_json()
    prediction = model.predict([data["features"]])
    return jsonify({"prediction": prediction.tolist()})

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=5000)

2.3 API Testi

curl -X POST http://localhost:5000/predict     -H "Content-Type: application/json"     -d '{"features":[5.1, 3.5, 1.4, 0.2]}'

Step 3 – Docker ile Containerization

3.1 Dockerfile

FROM python:3.10-slim

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

COPY . .
CMD ["python", "app.py"]

3.2 requirements.txt

flask
scikit-learn
joblib

3.3 Docker Build ve Run

docker build -t flask-ml-model .
docker run -p 5000:5000 flask-ml-model

Step 4 – CI/CD ve GitOps Yaklaşımı

4.1 GitHub Actions ile CI/CD

.github/workflows/deploy.yml

name: Deploy Model API

on:
  push:
    branches: [ main ]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2
    - name: Build Docker image
      run: docker build -t flask-ml-model .
    - name: Push to Registry
      run: docker push myrepo/flask-ml-model:latest

4.2 GitOps – ArgoCD ile Deployment

Kubernetes manifest dosyası:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: ml-model
spec:
  replicas: 2
  selector:
    matchLabels:
      app: ml-model
  template:
    metadata:
      labels:
        app: ml-model
    spec:
      containers:
      - name: ml-model
        image: myrepo/flask-ml-model:latest
        ports:
        - containerPort: 5000

ArgoCD, bu manifesti otomatik olarak Kubernetes cluster’a uygular.


Step 5 – Model Deployment’ın Zorlukları

  • Latency: Gerçek zamanlı tahminlerde düşük gecikme kritik.
  • Scaling: Artan trafik karşısında model podlarının ölçeklenmesi gerekir.
  • Monitoring: Modelin doğruluk oranı zamanla düşebilir (concept drift).
  • Versiyonlama: Yeni modeller A/B testing veya Canary release ile devreye alınmalı.

Conclusion

Bu makalede Model Deployment sürecini inceledik:

  • Temel kavramlar (Batch vs Online, On-Prem vs Cloud, Model Registry),
  • Flask ile REST API üzerinden model dağıtımı,
  • Docker containerization süreci,
  • CI/CD ve GitOps entegrasyonu.
Back to Article Page