Learn AI with Python · Lektion

Reproduzierbarkeit: Seeds, Konfigurationen und Umgebungen

random.seed(), np.random.seed(), YAML-Konfigurationsdateien und Umgebungen mit pip freeze festschreiben.

Lektion 3 von 413 Schritte

Reproduzierbarkeit: Seeds, Konfigurationen und Umgebungen ist eine kostenlose Learn AI with Python-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Learn AI with Python-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Learn AI with Python-Kurs umfasst insgesamt 4 Lektionen.

Warum Reproduzierbarkeit?

Ein Experiment, das Sie nicht reproduzieren können, ist keine Wissenschaft. Wenn derselbe Code bei zweimaliger Ausführung unterschiedliche Ergebnisse liefert, können Sie Vergleichen nicht vertrauen und Regressionen nicht zuverlässig untersuchen.

Drei Säulen machen KI-Arbeit reproduzierbar: festgelegte Zufalls-Seeds, ausgelagerte Konfigurationen und festgeschriebene Umgebungen.

Quellen der Zufälligkeit

Zufälligkeit kann an vielen Stellen auftreten: beim Durchmischen der Daten, bei der Aufteilung in Trainings- und Testdaten, bei der Initialisierung von Gewichten, bei Dropout und bei Augmentierungen. Jede dieser Stellen kann einen anderen Zufallszahlengenerator verwenden.

Um einen Lauf zu reproduzieren, müssen Sie jeden Generator initialisieren, den Ihr Code verwendet.

Python und NumPy mit einem Seed versehen

Initialisieren Sie die Generatoren der Standardbibliothek und von NumPy mit einem einzigen festgelegten Seed (42 ist eine gängige Konvention).

import random
import numpy as np

random.seed(42)
np.random.seed(42)

Frameworks mit Seeds initialisieren

ML-Frameworks verfügen über eigene Zufallszahlengeneratoren. Initialisieren Sie auch diese und übergeben Sie den Seed an Funktionen, die random_state akzeptieren.

import numpy as np
from sklearn.model_selection import train_test_split

X_train, X_test = train_test_split(X, test_size=0.2, random_state=42)
# torch.manual_seed(42) / tf.random.set_seed(42) for deep learning

Eine set_seed-Hilfsfunktion

Kapseln Sie die gesamte Initialisierung der Seeds in einer Funktion und rufen Sie diese am Anfang jedes Skripts auf – damit Sie keinen Generator vergessen.

import random, os
import numpy as np

def set_seed(seed=42):
    random.seed(seed)
    np.random.seed(seed)
    os.environ["PYTHONHASHSEED"] = str(seed)

set_seed(42)

Hartcodierte Hyperparameter sind eine Falle

Wenn Sie 0.01, 200 und 0.2 im Code verteilen, lassen sich Läufe nur schwer nachvollziehen und ändern. Betrug die Lernrate in dem Lauf mit dem besten Ergebnis 0.01 oder 0.001?

Die Lösung: Legen Sie alle Hyperparameter in einer Konfigurationsdatei ab, nicht im Code.

YAML-Konfigurationsdateien

YAML ist ein menschenlesbares Format, das sich ideal für Konfigurationen eignet. Eine Datei erfasst sämtliche Einstellungen für einen Lauf.

# config.yaml
seed: 42
model:
  name: random_forest
  n_estimators: 200
  max_depth: 8
training:
  test_size: 0.2
data:
  path: data/processed/train.csv

YAML mit PyYAML einlesen

Laden Sie die Konfiguration am Anfang Ihres Skripts mit PyYAML. Nun liest Ihr Code die Werte aus cfg, anstatt sie fest im Code zu hinterlegen.

import yaml

with open("config.yaml") as f:
    cfg = yaml.safe_load(f)

print(cfg["model"]["n_estimators"])   # 200
set_seed(cfg["seed"])

Konfiguration an den Code übergeben

Funktionen erhalten die Konfiguration oder deren Werte als Argumente. Für ein neues Experiment ändern Sie die YAML-Datei, nicht den Python-Code.

from sklearn.ensemble import RandomForestClassifier

m = cfg["model"]
model = RandomForestClassifier(
    n_estimators=m["n_estimators"],
    max_depth=m["max_depth"],
    random_state=cfg["seed"],
)

Die Umgebung mit festen Versionen versehen

Unterschiedliche Bibliotheksversionen erzeugen unterschiedliche Ergebnisse. Legen Sie exakte Versionen fest, damit andere Personen und auch Ihr zukünftiges Ich denselben Software-Stack installieren.

# requirements.txt with pinned versions
pandas==2.2.0
scikit-learn==1.4.0
numpy==1.26.4

# generate it with:
# pip freeze > requirements.txt

Virtuelle Umgebungen

Isolieren Sie jedes Projekt, damit dessen festgelegte Versionen nicht mit denen anderer Projekte kollidieren. Erstellen und aktivieren Sie eine virtuelle Umgebung und installieren Sie anschließend die Abhängigkeiten aus der Datei mit den festgelegten Versionen.

python -m venv .venv
source .venv/bin/activate   # Windows: .venv\Scripts\activate
pip install -r requirements.txt

Schnelltest: Hyperparameter

Sie möchten zehn verschiedene Hyperparameter-Kombinationen ausprobieren und jeden Lauf reproduzierbar und nachvollziehbar halten.

Rückblick: Reproduzierbarkeit

Sie haben die drei Säulen reproduzierbarer KI kennengelernt:

  • Seeds: random.seed(42), np.random.seed(42), Framework-Seeds und random_state
  • Konfigurationen: alle Hyperparameter in config.yaml, geladen mit PyYAML
  • Umgebungen: festgelegte Versionen in requirements.txt innerhalb einer virtuellen Umgebung

Ändern Sie die Konfiguration, nicht den Code. Als Nächstes: Best Practices für Jupyter-Notebooks.

Kostenlos starten

Lerne Python mit einem KI-Tutor — kostenlos

Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.

Kurse
53
Lektionen
225

Häufig gestellte Fragen

Ist die Lektion „Reproduzierbarkeit: Seeds, Konfigurationen und Umgebungen“ kostenlos?

Ja — der vollständige Text von „Reproduzierbarkeit: Seeds, Konfigurationen und Umgebungen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Learn AI with Python-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Learn AI with Python-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Reproduzierbarkeit: Seeds, Konfigurationen und Umgebungen“?

random.seed(), np.random.seed(), YAML-Konfigurationsdateien und Umgebungen mit pip freeze festschreiben. Du übst Learn AI with Python mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Learn AI with Python zu starten?

Keine Vorkenntnisse erforderlich. Learn AI with Python auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „Reproduzierbarkeit: Seeds, Konfigurationen und Umgebungen“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Learn AI with Python-Lektion Code schreiben und ausführen?

Ja. Jede Learn AI with Python-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Professionelle Verzeichnisstruktur für KI-Projekte
  2. Git für KI-Projekte
  3. Reproduzierbarkeit: Seeds, Konfigurationen und Umgebungen
  4. Best Practices für Jupyter Notebooks
← Zurück zu Learn AI with Python