MLOps & Modell-Deployment
Von der Entwicklung bis zur Produktion: Best Practices für Machine Learning Operations und Model Deployment
21. Oktober 2025
28 Min Lesezeit
AI learning Team
Was ist MLOps?
MLOps (Machine Learning Operations) kombiniert Machine Learning, DevOps und Data Engineering, um ML-Modelle effizient zu entwickeln, zu deployen und zu warten. Es überbrückt die Lücke zwischen Modellentwicklung und Produktionseinsatz.
In der Praxis scheitern viele ML-Projekte nicht an der Modellqualität, sondern an der fehlenden Infrastruktur für Deployment, Monitoring und Wartung. MLOps löst diese Probleme durch standardisierte Prozesse und Automatisierung.
Die MLOps-Herausforderung
Laut Gartner erreichen nur 15% der ML-Projekte die Produktionsphase. MLOps-Praktiken können diese Quote signifikant verbessern, indem sie den gesamten ML-Lifecycle systematisieren.
Modell-Versionierung mit MLflow
MLflow ist ein Open-Source-Framework für das Management des ML-Lifecycles. Es hilft beim Tracking von Experimenten, Packaging von Code und Deployment von Modellen.
import mlflow
import mlflow.sklearn
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
mlflow.set_experiment("model-training")
with mlflow.start_run():
params = {
"n_estimators": 100,
"max_depth": 10,
"random_state": 42
}
mlflow.log_params(params)
model = RandomForestClassifier(**params)
model.fit(X_train, y_train)
predictions = model.predict(X_test)
accuracy = accuracy_score(y_test, predictions)
mlflow.log_metric("accuracy", accuracy)
mlflow.sklearn.log_model(model, "random_forest_model")
mlflow.log_artifact("feature_importance.png")
print(f"Modell-Genauigkeit: {accuracy:.4f}")
MLflow Komponenten
- Tracking: Experimente, Parameter und Metriken verfolgen
- Projects: ML-Code in reproduzierbarer Form verpacken
- Models: Modelle in verschiedenen Formaten speichern
- Registry: Zentrale Modellverwaltung und Versionierung
REST API für Modell-Serving
Ein häufiger Ansatz für Model Deployment ist die Bereitstellung über eine REST API. Mit FastAPI können Sie schnell und einfach ML-Modelle als Web-Service deployen.
from fastapi import FastAPI, File, UploadFile
from pydantic import BaseModel
import joblib
import numpy as np
app = FastAPI(title="ML Model API")
model = joblib.load("model.pkl")
class PredictionRequest(BaseModel):
features: list[float]
class PredictionResponse(BaseModel):
prediction: int
probability: float
@app.post("/predict", response_model=PredictionResponse)
async def predict(request: PredictionRequest):
features = np.array(request.features).reshape(1, -1)
prediction = model.predict(features)[0]
probability = model.predict_proba(features).max()
return PredictionResponse(
prediction=int(prediction),
probability=float(probability)
)
@app.get("/health")
async def health():
return {"status": "healthy"}
Docker-Container für ML-Modelle
Docker-Container sorgen für Reproduzierbarkeit und einfaches Deployment. Hier ist ein Beispiel-Dockerfile für eine ML-Anwendung:
FROM python:3.9-slim
WORKDIR /app
RUN apt-get update && apt-get install -y \
build-essential \
&& rm -rf /var/lib/apt/lists/*
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
COPY models/model.pkl /app/models/
EXPOSE 8000
HEALTHCHECK --interval=30s --timeout=3s \
CMD curl -f http://localhost:8000/health || exit 1
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
Containerisierung Vorteile
Docker stellt sicher, dass Ihr Modell in jeder Umgebung identisch läuft. Dies eliminiert "funktioniert auf meinem Rechner"-Probleme und vereinfacht Deployment und Skalierung erheblich.
Monitoring und Logging
Produktions-ML-Systeme benötigen kontinuierliches Monitoring, um Modell-Drift zu erkennen und Performance-Probleme frühzeitig zu identifizieren.
import logging
from prometheus_client import Counter, Histogram, start_http_server
import time
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)
logger = logging.getLogger(__name__)
prediction_counter = Counter(
'model_predictions_total',
'Total number of predictions'
)
prediction_latency = Histogram(
'model_prediction_latency_seconds',
'Prediction latency in seconds'
)
def make_prediction_with_monitoring(features):
start_time = time.time()
try:
prediction = model.predict(features)
prediction_counter.inc()
latency = time.time() - start_time
prediction_latency.observe(latency)
logger.info(f"Prediction made in {latency:.3f}s")
return prediction
except Exception as e:
logger.error(f"Prediction failed: {str(e)}")
raise
CI/CD Pipeline für ML
Continuous Integration und Continuous Deployment sind auch für ML-Projekte wichtig. Hier ist ein Beispiel für eine GitHub Actions Workflow:
name: ML Training Pipeline
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
train-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.9'
- name: Install dependencies
run: |
pip install -r requirements.txt
- name: Run tests
run: |
pytest tests/
- name: Train model
run: |
python train.py
- name: Evaluate model
run: |
python evaluate.py
- name: Build Docker image
run: |
docker build -t ml-model:${{ github.sha }} .
- name: Push to registry
run: |
docker push ml-model:${{ github.sha }}
Best Practices für Production ML
Der Übergang von der Entwicklung zur Produktion erfordert besondere Sorgfalt. Hier sind bewährte Praktiken für robuste ML-Systeme:
Production-Ready ML
- Versionierung: Tracken Sie Modelle, Daten und Code systematisch
- Monitoring: Überwachen Sie Model Performance und Data Drift
- A/B Testing: Testen Sie neue Modelle gegen Produktionsmodelle
- Rollback-Strategie: Haben Sie immer einen Plan für schnelles Rollback
- Automated Retraining: Automatisieren Sie Retraining bei Drift
- Feature Store: Zentralisieren Sie Feature Engineering
from evidently import ColumnMapping
from evidently.report import Report
from evidently.metric_preset import DataDriftPreset
column_mapping = ColumnMapping()
data_drift_report = Report(metrics=[
DataDriftPreset(),
])
data_drift_report.run(
reference_data=reference_df,
current_data=production_df,
column_mapping=column_mapping
)
data_drift_report.save_html("drift_report.html")
if data_drift_report.as_dict()['metrics'][0]['result']['drift_detected']:
logger.warning("Data drift detected! Retraining required.")
Fazit
MLOps ist entscheidend für den Erfolg von ML-Projekten in der Produktion. Durch systematische Prozesse, Automatisierung und kontinuierliches Monitoring können Sie robuste, skalierbare ML-Systeme aufbauen.
Beginnen Sie mit einfachen Deployment-Szenarien, etablieren Sie nach und nach MLOps-Praktiken und automatisieren Sie Schritt für Schritt. Die Investition in gute MLOps zahlt sich durch schnellere Iterationen und zuverlässigere Systeme aus.
Nächste Schritte
Erkunden Sie fortgeschrittene Themen wie Feature Stores (Feast), Model Serving (TensorFlow Serving, TorchServe) und Cloud-MLOps mit AWS SageMaker oder Google Vertex AI!