Menü der Dokumentation
- Startseite
- Dokumentation
- Anforderungen
- Automatisierung
Automatisierung: ein Befehl, feste Versionen, Seeds
Automatisierung erspart Handarbeit, wenn Sie oder andere den Arbeitsablauf wiederholen: ein Befehl, fixierte Versionen, automatisch geladene Eingaben und festgehaltene Seeds. Sie wird neben der Stufe bewertet und ist kein Schritt zu L3.
Zuletzt aktualisiert
AutomationSeparate from the level
1 confirmed gap · 1 needs evidence · 2/4 confirmed
- ?One command produces the resultsNeeds evidence
- The software environment is pinnedConfirmed gap
- Input retrieval is automatedConfirmed
- Random seeds and variability are controlledConfirmed
Bezug zur StufeUnabhängig von der Stufe
Automatisierung macht einen Ablauf leicht wiederholbar, für Sie und für alle, die ihn prüfen. Automatisierung in den Dateien belegt nicht, dass der Ablauf läuft, deshalb hebt sie die Stufe nie an. Seeds reichen nicht immer: Die Hinweise von PyTorch warnen, dass Ergebnisse zwischen CPU und GPU abweichen können.
In diesem Leitfaden
One command produces the results
- Was zählt
- Ein
Makefile,Snakefile, eine Nextflow-Pipeline oderrun.sherzeugt alle Kernergebnisse neu, ohne manuelle oder grafische Schritte. Ein Start bei hinterlegten, dokumentierten Zwischendaten ist erlaubt. - Häufige Lücken
- Skripte in einer Reihenfolge, die nur Sie kennen, ein GUI-Schritt oder ein Start bei undokumentierten Zwischendaten. Code mit externem Dienst: eine Warnung.
- So beheben Sie es
- Legen Sie jeden Schritt in einen Einstiegspunkt, vom Laden der Daten bis zur letzten Abbildung. Machen Sie Tracking-Dienste optional und sagen Sie, wie es ohne sie geht:
.PHONY: all data smoke
all: data results/table1.csv results/figure2.pdf
data:
bash scripts/get_data.sh
results/table1.csv: data
python -m analysis.table1 --out $@
results/figure2.pdf: results/table1.csv analysis/figure2.R
Rscript analysis/figure2.R
smoke:
python -m analysis.table1 --subsample 0.01 --out /tmp/table1_smoke.csvThe software environment is pinned
- Was zählt
- Exakte Versionen aller Pakete in einer Lock-Datei oder einem Container, ein Basis-Image mit Digest oder Tag und die genannte Laufzeitversion.
- Häufige Lücken
- Versionsbereiche, ein
latest-Basis-Image, eine veraltete Lock-Datei, Ergebnisse aus einer Laufzeit, die die Pins ausschließen. Notebooks in undefinierter Umgebung: eine Warnung. - So beheben Sie es
- Fixieren Sie aus einer sauberen Umgebung, in der Ihre Analyse läuft, und erzeugen Sie die Ergebnisse darin. Container starten von einem Basis-Image mit fester Version:
# Python: lock every direct and indirect version in uv.lock
uv lock
# R: record the R version and every package version in renv.lock
Rscript -e 'renv::snapshot()'Input retrieval is automated
- Was zählt
- Der Startbefehl lädt jede offene Eingabe über eine dauerhafte Kennung und prüft ihre Prüfsumme; die Dokumentation nennt das Token für jeden Download mit Zugangsdaten.
- Häufige Lücken
- Links, die jemand anklicken, entpacken und von Hand verschieben muss, ein S3-Bucket mit einem Schlüssel, den niemand erklärt, oder Daten hinter einer Registrierung.
- So beheben Sie es
- Bieten Sie für beschränkte Daten eine kleine offene Teilmenge an. Rufen Sie einen Ladeschritt aus Ihrem einen Befehl auf, etwa mit pooch, und nennen Sie die Token-Variable:
#!/usr/bin/env bash
# scripts/get_data.sh: fetch and verify every open input
set -euo pipefail
mkdir -p data/raw
curl -fL -o data/raw/counts.csv.gz \
"https://zenodo.org/records/0000000/files/counts.csv.gz"
sha256sum -c data/checksums.sha256Random seeds and variability are controlled
- Was zählt
- Jeder Zufallsaufruf im Ergebniscode hat einen Seed, GPU-Schritte sind deterministisch eingestellt, und verbleibende Schwankungen zwischen Läufen sind mit den Ergebnissen dokumentiert.
- Häufige Lücken
- Ein Split ohne Seed, ein GPU-Schritt ohne deterministische Flags oder eine Bibliothek, die trotz Seed schwankt. Parallele Worker ohne reproduzierbare Streams: eine Warnung.
- So beheben Sie es
- Lesen Sie den Seed von der Kommandozeile, setzen Sie alle Generatoren zentral, nutzen Sie reproduzierbare parallele Streams und berichten Sie die Streuung, wie die NeurIPS-Checkliste es verlangt:
import argparse, random
import numpy as np
import torch
parser = argparse.ArgumentParser()
parser.add_argument("--seed", type=int, default=0)
args = parser.parse_args()
random.seed(args.seed)
np.random.seed(args.seed)
torch.manual_seed(args.seed)
torch.use_deterministic_algorithms(True) # error on nondeterministic opsTests und Notebooks
- Was zählt
- Ein kleiner Test lässt die Analyse in der Continuous Integration auf Beispieldaten laufen, und Ergebnis-Notebooks sind nach einem sauberen Lauf von oben nach unten gespeichert.
- Häufige Lücken
- Keine Tests, Zellen außer der Reihe ausgeführt oder Code, der Ergebnisse still verändert: ein stiller Fallback, ein abgeschaltetes Speichern, ein unerreichbarer Zweig.
- So beheben Sie es
- Das sind Warnungen, sie ändern die Stufe nie. Starten Sie den Kernel neu, führen Sie jedes Notebook von oben nach unten aus und lassen Sie Fehler laut scheitern.
Verwandte Themen
Sehen Sie, wo Ihr Projekt steht
Starten Sie die Analyse für Ihr Paper oder Repository. Jeder Befund nennt seinen Bereich und verweist hierher.