Reproducibility and Archiving#
Practices for traceable MLFF projects.
Seeds#
Trainer.seed controls Python, NumPy, and PyTorch RNGs for splitting and initialization.
Trainer.Splitter.seed controls partition indices separately.
Caution
CUDA kernels may still introduce nondeterminism even with fixed seeds.
Archive with each model#
Minimum artifact set:
config.yamlfrom training outputbest/and optionallylast/checkpointsTraining
train.yaml(or Enerzymette-generatedtrain.yamlper iteration)processed_dataset_<hash>/or instructions to rebuild from raw pickleSplit index files if
Splitter.save: true
Document environment#
Record:
Python, PyTorch, torch-scatter, Enerzyme commit hash
Optional: NequIP, PLUMED, TeraChem versions
Conda export or
requirements.yamlused
Enerzymette task archives#
For external AL, archive the entire task root:
config/templatesal.shlaunchercluster.xyz,cluster.molEach
FFxx_*iteration directory or symlink policyReference PDB/SDF paths cited in configs
Pretrain chains#
pretrain_path links iterations. When publishing results, note the full chain FF00 → FF01 → ... → FFxx and which checkpoint (best vs last) was used for production simulations.
Config drift#
Enerzymette rewrites paths each round. The resolved config.yaml in FFxx_training/ is the authoritative record for that iteration, not the top-level template alone.
QM data provenance#
Store:
Annotate
annotate.yamlper roundFragment SDF inputs
TeraChem template/settings reference
terachem_timingreports for failed-run triage