Thema: reproducibility
-
Eine begrenzte HTTP-Beobachtung dokumentieren
Eine knappe Methode, um eine einzelne HTTP-Beobachtung so zu dokumentieren, dass ein anderer Beitragender sie wiederholen kann, ohne Zugangsdaten oder private Daten offenzulegen.
-
CI und lokale Prüfungen identisch halten: ein Einstiegspunkt, festgepinnte Werkzeuge, derselbe Container
Eine Prüfung, die lokal besteht, sollte auch in der CI bestehen und umgekehrt: jede Prüfung einmal als benannte Aufgabe definieren, die Toolchain in einem committeten Manifest festpinnen, aus dem sowohl der Bootstrap als auch die Pipeline installieren, die CI im selben Container-Image wie die Entwicklungsumgebung ausführen, Locale und Zeitzone fixieren und jeden nur in der CI auftretenden Fehlschlag als zu beseitigenden Paritätsfehler behandeln, bevor das Symptom behoben wird.
-
Reproduzierbarkeit eines Machine-Learning-Experiments: Seeds, Umgebung, Daten und die Grenzen des Determinismus
Ein Experiment erneut auszuführen und dieselbe Zahl zu erhalten, verlangt explizit übergebene feste Zufallszustände, festgepinnte Bibliotheksversionen, einen identifizierten Datensatz samt Split sowie das Wissen, dass GPU-Kernel und Bibliotheksversionen Ergebnisse dennoch verändern können; das Protokoll macht Durchläufe reproduzierbar, wo das möglich ist, und macht explizit, wo nicht.
-
Provenienz und Versionierung für kleine Datensätze
Rohdaten bleiben unveränderlich, gesichert durch Prüfsummen und eine dokumentierte Herkunft; neue Dateien entstehen über Skripte statt durch Bearbeitung, Datenverweise werden zusammen mit dem Code versioniert (DVC oder Git LFS), das Paket wird mit einer datapackage.json beschrieben, und die Herkunft wird in PROV-Begriffen festgehalten – so lässt sich jede Zahl in einem Bericht auf einen Commit, eine Prüfsumme und ein Skript zurückführen.
-
Serialisiertes JSON für Hashes deterministisch machen
Vor dem Hashen von JSON einen engen Serialisierungsvertrag festlegen und wiederholbare Python-Ausgabe von sprachübergreifendem kanonischem JSON unterscheiden.
-
NuGet-Abhängigkeiten pinnen: PackageReference, zentrale Paketverwaltung und packages.lock.json
NuGet löst beim Restore die niedrigste zutreffende Version jedes Pakets auf, sodass ein Restore driften kann, wenn neue Versionen oder gleitende Bereiche auftauchen; ein wiederholbarer Build deklariert Versionen einmalig in Directory.Packages.props, aktiviert RestorePackagesWithLockFile, damit packages.lock.json den vollständigen Abschluss festhält, committet die Lock-Datei für Anwendungen und restored in CI mit --locked-mode.
-
Ein kleines Experiment vorregistrieren, bevor die Daten betrachtet werden
Hypothese, primäres Ergebnis, Stichprobe und Abbruchregel, Ausschlüsse und Analyseplan schriftlich festhalten, dann das Dokument mit Zeitstempel committen oder registrieren, bevor die Daten erhoben oder eingesehen werden; die geplante Analyse zuerst berichten und alles andere als explorativ kennzeichnen.
-
Keeping a notebook for small experiments: a generic protocol
Every benchmark run, configuration trial or A/B test gets a dated, append-only entry written before and after the run: question, expected outcome, exact setup with versions and checksums, raw outputs, and an interpretation kept apart from the observation, so that any quoted number can be traced and rerun.
-
Versioning a trained model: the artefact together with the code, data, parameters and environment that produced it
A model file alone cannot be reproduced, audited or safely replaced; version it as a record that links the serialised artefact to the code commit, the dataset version, the hyperparameters, the metrics on the fixed test split and the exact dependency versions, and promote versions with aliases rather than by overwriting a file.
Maschinenlesbar: JSON