<EbeneX/>
DevOps Grundlagen · Updated 11. März 2026

Reproducibility

Definition

Die Fähigkeit, ML-Experimente und Modelle exakt zu reproduzieren – gleiche Daten, gleicher Code, gleiche Ergebnisse. Grundprinzip für wissenschaftliche und produktive ML-Arbeit.

Fortgeschritten 2 Min. Lesezeit EN: Reproducibility

Einfach erklärt

Reproducibility bedeutet: Wenn du ein ML-Experiment wiederholst, bekommst du exakt dieselben Ergebnisse. Das klingt selbstverständlich, ist aber in der Praxis überraschend schwer.

Warum ist das schwer?

Experiment am Montag:
- Daten: train.csv (Version?)
- Code: model.py (welcher Commit?)
- Libraries: torch (welche Version?)
- Random Seed: (gesetzt?)
- GPU: (deterministisch?)
→ Accuracy: 94.5%

Experiment am Freitag:
- "Dieselben" Inputs
→ Accuracy: 93.8%  ← Warum anders?!

Was muss versioniert werden?

KomponenteBeispielTool
Codemodel.py, train.pyGit
Datentrain.csv, test.csvDVC, Git LFS
Confighyperparameters.yamlGit
EnvironmentPython 3.11, torch 2.2Docker, pip freeze
Random Stateseed=42Im Code setzen

Technischer Deep Dive

Random Seeds setzen

import random
import numpy as np
import torch

def set_seed(seed: int = 42):
    random.seed(seed)
    np.random.seed(seed)
    torch.manual_seed(seed)
    torch.cuda.manual_seed_all(seed)
    
    # Für volle Determinismus (langsamer)
    torch.backends.cudnn.deterministic = True
    torch.backends.cudnn.benchmark = False
    torch.use_deterministic_algorithms(True)

set_seed(42)

Dependencies pinnen

# requirements.txt mit exakten Versionen
pip freeze > requirements.txt

# Oder mit pip-tools
pip-compile requirements.in --generate-hashes
# requirements.txt
torch==2.2.0
transformers==4.38.0
numpy==1.26.4
scikit-learn==1.4.0

Docker für Umgebung

FROM python:3.11-slim

WORKDIR /app

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

# Reproduzierbar: Gleicher Container = Gleiche Umgebung
CMD ["python", "train.py"]

DVC Pipeline

# dvc.yaml
stages:
  preprocess:
    cmd: python preprocess.py
    deps:
      - data/raw/
      - preprocess.py
    outs:
      - data/processed/
  
  train:
    cmd: python train.py
    deps:
      - data/processed/
      - train.py
      - config.yaml
    params:
      - config.yaml:
    outs:
      - models/model.pkl
    metrics:
      - metrics.json:
        cache: false
# Pipeline reproduzieren
dvc repro

# Zu alter Version zurück
git checkout v1.0
dvc checkout
dvc repro

Experiment Logging

import mlflow

mlflow.set_experiment("fraud_detection")

with mlflow.start_run():
    # Config loggen
    mlflow.log_params({
        "learning_rate": 0.001,
        "epochs": 10,
        "batch_size": 32,
        "seed": 42
    })
    
    # Code-Version
    mlflow.log_param("git_commit", get_git_commit())
    
    # Daten-Hash
    mlflow.log_param("data_hash", hash_file("train.csv"))
    
    # Training
    model = train(...)
    
    # Metriken
    mlflow.log_metrics({"accuracy": 0.95, "f1": 0.93})
    
    # Modell
    mlflow.sklearn.log_model(model, "model")

Checkliste

  • Random Seeds gesetzt
  • Dependencies gepinnt
  • Daten versioniert
  • Code in Git
  • Config geloggt
  • Umgebung dokumentiert (Docker)
  • GPU-Determinismus aktiviert (wenn nötig)

Reproducibility ist wie ein Kochrezept mit exakten Mengenangaben: Wenn du dieselben Zutaten in derselben Menge verwendest, sollte das Gericht jedes Mal gleich schmecken – nicht 'ungefähr ähnlich'.

Gleiche Daten + Code + Config = Gleiche Ergebnisse

Erfordert Versionierung von Daten, Code und Umgebung

Random Seeds, deterministische Operationen, Dependency Pinning

Wissenschaftliche Validierung

Andere können deine Ergebnisse verifizieren

Debugging

Probleme reproduzieren um sie zu fixen

Sicherheit

Audit-Anforderungen erfüllen

Teamarbeit

Kollegen können deine Experimente nachvollziehen

Warum sind ML-Experimente oft nicht reproduzierbar?

Zufälligkeit (Random Seeds), GPU-Nondeterminismus, unterschiedliche Library-Versionen, fehlende Daten-Versionierung, undokumentierte Preprocessing-Schritte.

Kann ich 100% Reproduzierbarkeit auf GPUs erreichen?

Schwierig. CUDA-Operationen sind oft nondeterministisch für Performance. PyTorch bietet torch.use_deterministic_algorithms(True), aber mit Performance-Einbußen.

Was ist der Unterschied zwischen Reproducibility und Replicability?

Reproducibility: Gleiche Daten, gleicher Code → gleiche Ergebnisse. Replicability: Neue Daten, gleiche Methode → ähnliche Ergebnisse. Beides wichtig, aber unterschiedlich.

Dein persönliches Share-Bild für Instagram – 1080×1080px, bereit zum Posten.