Reproducibility

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

Fortgeschritten2 Min Lesezeit

Erklärung starten

Auf einen Blick

3 Punkte

  1. Gleiche Daten + Code + Config = Gleiche Ergebnisse
  2. Erfordert Versionierung von Daten, Code und Umgebung
  3. Random Seeds, deterministische Operationen, Dependency Pinning

Sofortantwort

Reproducibility einfach erklärt

Gleiche Inputs, gleiche Ergebnisse – Grundprinzip für vertrauenswürdiges ML.

Kurz gesagt
Gleiche Daten + Code + Config = Gleiche Ergebnisse
Typischer Einsatz
Wissenschaftliche Validierung, Debugging, Sicherheit
Wichtig zu wissen
Random Seeds, deterministische Operationen, Dependency Pinning

Reproducibility im Überblick

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

Technisch betrachtet

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)

01Einsatzbereiche

Wann ist Reproducibility sinnvoll?

Geeignet für

  • Wissenschaftliche ValidierungAndere können deine Ergebnisse verifizieren
  • DebuggingProbleme reproduzieren um sie zu fixen
  • SicherheitAudit-Anforderungen erfüllen
  • TeamarbeitKollegen können deine Experimente nachvollziehen

↑ Inhalt

02Werkzeuge

Womit Reproducibility umgesetzt wird

↑ Inhalt

Merksatz

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'.

  1. Gleiche Daten + Code + Config = Gleiche Ergebnisse
  2. Erfordert Versionierung von Daten, Code und Umgebung
  3. Random Seeds, deterministische Operationen, Dependency Pinning

04Anwenden

Reproducibility praktisch anwenden

↑ Inhalt

05Redaktion

Herkunft und Stand

Redaktion und Aktualität

Ebenex RedaktionRedaktion

Veröffentlicht
Aktualisiert

Dieses Feld entwickelt sich schnell. Oben stehen Veröffentlichung und letzte Änderung; ein Prüfdatum kommt dazu, sobald die Erklärung nach ihrer letzten Änderung geprüft wurde.

↑ Inhalt

06FAQ

Häufige Fragen zu Reproducibility

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.

↑ Inhalt

07Weiterlernen

Was möchtest du als Nächstes verstehen?

↑ Inhalt