Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 27 additions & 2 deletions mlpstorage_py/benchmarks/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -294,6 +294,24 @@ def _execute_command(

return stdout, stderr, return_code

@staticmethod
def _apply_dotted_overrides(params, overrides):
"""Apply override_parameters (dotted keys) into a nested params dict.

Fixes #365: makes metadata['parameters'] reflect the effective
run configuration (YAML defaults + CLI overrides), which is what
the submission_checker reads.
"""
import copy
out = copy.deepcopy(params)
for dotted, value in (overrides or {}).items():
parts = dotted.split('.')
cur = out
for p in parts[:-1]:
cur = cur.setdefault(p, {})
cur[parts[-1]] = value
return out

@property
def metadata(self) -> Dict[str, Any]:
"""Generate metadata dict capturing the benchmark run configuration.
Expand Down Expand Up @@ -322,9 +340,16 @@ def metadata(self) -> Dict[str, Any]:
'result_dir': self.run_result_output,
}

# Parameters - prefer combined_params if available (includes YAML + overrides)
# Parameters - YAML defaults with CLI overrides applied (fixes #365).
# combined_params from process_dlio_params() does not fold CLI
# overrides into nested keys (e.g. checkpoint.num_checkpoints_*),
# so the submission_checker (which reads from `parameters`)
# under-counts two-phase submissions. Apply override_parameters
# here so `parameters` reflects the effective run config;
# `override_parameters` is still emitted unchanged for audit.
if hasattr(self, 'combined_params'):
metadata['parameters'] = self.combined_params
metadata['parameters'] = self._apply_dotted_overrides(
self.combined_params, getattr(self, 'params_dict', {}))
else:
metadata['parameters'] = {}

Expand Down
Loading