- Identifies a pipeline execution.
- Each pipeline call is a new run with a unique id (e.g. calling
search.pystarts a new search run and produces a newexperiment_id;train.pyproducestrain_run_id, etc.). - Each id must be unique within that pipeline (e.g. each
experiment_idmust differ from all of the otherexperiment_ids). - Format:
{timestamp}_{uuid8}(created dynamically at runtime). - Only search and training can have multiple calls for the same id (failure management - e.g. if training fails at iteration 1500 out of 2000, call
train.pywith the sametrain_run_idand continue from the last iteration persisted in thefailure_managementfolder).
- Identifies a frozen artifact.
- Snapshot identity must remain stable once written.
- Snapshots are immutable after creation.
- Final resolved config for search and training must follow the following order:
- Global defaults
- Algorithm-specific defaults
- Model specs
- Search-or-train-specific configs
- Environment configs
- best params (training only)
- Config hash is saved for each run that uses configs.
- Pipelines that use multiple separate configs store hash for all of them (e.g. train runs store
config_hashfor the final resolved configs, but alsopipeline_cfg_hashfor sklearn pipeline-specific configs). - Config hash must uniquely identify the fully resolved config.
- Identical configs must produce identical hashes.
- Any modification to resolved config must change the hash.
- Config validation must be implemented wherever configs are used.
- Pipeline execution must be halted and raise an error if config validation fails.
- Config resolution should fail unless
_meta.validation_status == "ok"_meta.validation_errors == null
- SHA-256 hash generated by
hash_streaming.pyat runtime (implemented in multiple pipelines) should match the one stored in metadata.
- The actual data types found in loaded datasets' columns must match those defined in the feature registry.
- Each frozen feature set must contain a Entity Key column.
-
Schema hash generated at runtime (when loading features) must equal the schema hash saved in the metadata of a given feature set.
-
Note: only validates the input schema.
- In-memory hash generated at runtime (when loading features) should equal the in-memory hash saved in the metadata of a given feature set.
- Hash mismatch does not block execution, since it does not violate system integrity. System integrity is guaranteed by file hash consistency. In-memory hash mismatch gets logged for informational purposes, but it is only possible to get in-memory hash mismatch along with a file hash match if the in-memory mismatch is harmless (pandas-related quirks). Mismatch logs a warning.
- File hash generated at runtime (when loading features) must equal the file hash saved in the metadata of a given feature set.
- Operator hash generated at runtime (during feature freezing or loading) must equal the one found in the feature registry or metadata.
random_statemust be explicitly stored.- Param distributions and configurations must be stored in metadata.
- CV strategy must be serialized or describable.
- Best parameters must originate from recorded search results.
- All metadata writes must be atomic.
- Partial writes must not be observable.
- Registry updates must occur under lock.
- Registry mutation must occur under exclusive lock.
- Promotion must be idempotent.
- Failed promotions must not corrupt registry state.
-
Reproducibility is strongly guaranteed when the following match:
config_hashmatches- python version matches
- conda environment hash matches
git_commitmatches- OS matches
- hardware matches
-
If any of the above differ, reproducibility is not fully guaranteed.
-
Config hash match is very important for reproducibility; python version, conda environment hash and git commit matches are moderately important; os and hardware matches are the least important.
-
It is technically possible to get the same results with config hash match alone, but the user assumes responsibility for any unexpected results in that case.