DevOps
Die Praxis, Machine-Learning-Modelle zuverlässig und effizient in Produktion zu bringen und zu betreiben – die Verbindung von ML, DevOps und Data Engineering.
Die systematische Verwaltung verschiedener Versionen von ML-Modellen – inklusive Gewichte, Hyperparameter, Trainingsdaten und Metriken für Reproduzierbarkeit.
Model Versioning speichert jede Version deines ML-Modells mit allen Informationen, die nötig sind, um es zu reproduzieren. So kannst du jederzeit zurückgehen oder Versionen vergleichen.
Was wird versioniert?
model_v1.0/
├── model.pkl # Modell-Gewichte
├── config.yaml # Hyperparameter
├── requirements.txt # Dependencies
├── training_data_hash.txt # Daten-Referenz
├── metrics.json # Performance-Metriken
└── metadata.json # Wer, wann, warum
Lifecycle einer Modellversion:
Development → Staging → Production → Archived
│ │ │ │
v0.1 v0.9 v1.0 v0.8
(Experiment) (Testing) (Live) (Retired)
import mlflow
# Training und Logging
with mlflow.start_run():
model = train_model(X, y)
# Metriken loggen
mlflow.log_metric("accuracy", 0.95)
mlflow.log_metric("f1_score", 0.93)
# Modell registrieren
mlflow.sklearn.log_model(
model,
"model",
registered_model_name="fraud_detector"
)
# Version zu Production promoten
client = mlflow.tracking.MlflowClient()
client.transition_model_version_stage(
name="fraud_detector",
version=3,
stage="Production"
)
# Modell tracken (nicht in Git, sondern in DVC)
dvc add models/model.pkl
# Erzeugt models/model.pkl.dvc (klein, geht in Git)
git add models/model.pkl.dvc
git commit -m "Add model v1.0"
# Modell in Remote Storage pushen
dvc push
# Alte Version auschecken
git checkout v0.9
dvc checkout
from huggingface_hub import HfApi
api = HfApi()
# Modell hochladen mit Version
api.upload_folder(
folder_path="./my_model",
repo_id="username/my-model",
commit_message="v1.0: Improved accuracy"
)
# Bestimmte Version laden
from transformers import AutoModel
model = AutoModel.from_pretrained(
"username/my-model",
revision="v1.0" # Oder commit hash
)
{
"version": "1.0.0",
"created_at": "2026-03-11T14:30:00Z",
"created_by": "ml-pipeline",
"training": {
"dataset": "s3://data/train_v3.parquet",
"dataset_hash": "abc123...",
"epochs": 10,
"learning_rate": 0.001
},
"metrics": {
"accuracy": 0.95,
"f1_score": 0.93,
"latency_p99_ms": 45
},
"dependencies": {
"python": "3.11",
"torch": "2.2.0",
"transformers": "4.38.0"
},
"stage": "production",
"parent_version": "0.9.0"
}
| Aspekt | Empfehlung |
|---|---|
| Naming | Semantic Versioning + Stage |
| Storage | S3, GCS, Azure Blob für Modelle |
| Metadata | Immer mit Modell speichern |
| Automation | CI/CD für Promotion |
| Retention | Policy für alte Versionen |
Model Versioning ist wie Git für ML-Modelle: Du kannst jederzeit zu einer früheren Version zurückkehren, Änderungen nachvollziehen und verschiedene Experimente parallel verwalten.
Versioniert Modell-Gewichte, Code, Daten und Konfiguration
Ermöglicht Reproduzierbarkeit und Rollback
Zentral für MLOps und Compliance
Reproduzierbarkeit
Exakt dasselbe Modell später wieder erstellen
Rollback
Bei Problemen zur vorherigen Version zurückkehren
Sicherheit
Audit-Trail für regulierte Branchen
A/B Testing
Verschiedene Modellversionen vergleichen
Modell-Gewichte, Training-Code, Hyperparameter, Trainingsdaten (oder Hash), Dependencies, Metriken. Alles was nötig ist, um das Modell zu reproduzieren.
Für Code ja, für Modelle nein. Modell-Dateien sind zu groß für Git. Nutze Git LFS, DVC oder spezialisierte Tools wie MLflow.
Semantic Versioning (1.0.0) oder Timestamps (2026-03-11). Plus: Stage-Labels wie 'staging', 'production', 'archived'.