Skip to content

3rd: fix(reportgen/validate): four warnings-only review-tooling fixes (C1/C2/P5/P6)#828

Draft
FileSystemGuy wants to merge 9 commits into
validate-flaw-warningsfrom
reportgen-validator-fixes
Draft

3rd: fix(reportgen/validate): four warnings-only review-tooling fixes (C1/C2/P5/P6)#828
FileSystemGuy wants to merge 9 commits into
validate-flaw-warningsfrom
reportgen-validator-fixes

Conversation

@FileSystemGuy

Copy link
Copy Markdown
Contributor

Summary

Third branch in the review-tooling stack. Four low-blast-radius correctness fixes to reportgen / validate, applied so they can be used during the v3.0 submission-review window while submitters stay on v3.0-rc1. Every change is warnings-at-most — none introduces a new hard-fail and none can flip a submission pass → fail.

Stacked on top of:

Review this PR's diff against validate-flaw-warnings; it isolates just the commits below.

Changes

Item Fix
C1JSONParser.__contains__ Referenced self.messages (nonexistent) → AttributeError. Now uses self.d. Was latent because callers reach []/.get, never in.
C2 — 4.3.4 aggregate accelerator memory An aggregate-memory shortfall hard-failed the submission. The 80 GiB H100 per-accelerator figure is only a baseline (checkpointing metadata carries no accelerator-type field), so it now surfaces via warn_violation (with the accelerator count + a pointer to verify against the real accelerator memory) and returns True.
P6 — metric-block filtering DLIOResultParser.parse stored summary['metric'] unfiltered, so a scalar/string entry could reach report_generator's fmean(metric_list) and raise TypeError. New _filter_list_metrics() filters to list-valued keys on both parse paths and logs a diagnostic when keys are dropped or the block collapses to nothing — a blank metrics column is now traceable to a logged reason instead of vanishing silently.
P5 — kvcache total data loss _aggregate_option_results folded an empty trial's sum([]) == 0.0 into the across-trial mean and coerced a fully-empty aggregate to 0.0, making a total data loss indistinguishable from a real measured zero. It now skips no-data trials and emits None (blank) on total loss. A present-rank 0.0 (CPU-tier working set) is a legitimate measured value and is still counted.

Testing

TDD RED→GREEN for each item. Full CI-mirror sweep green after every commit:

  • tests/ — 2970 passed, 1 skipped
  • mlpstorage_py/tests — 898 passed
  • vdb_benchmark/tests — 228 passed
  • kv_cache_benchmark/tests — 238 passed

Notes

'key in parser' raised AttributeError because __contains__ referenced a
non-existent self.messages instead of self.d. Latent (callers use []/.get).
…(C1)

'key in parser' now works instead of raising AttributeError. Isolated
correctness fix; callers previously used []/.get() so nothing relied on
the broken behavior.
_aggregate_workload_metrics is wired (accumulate_results), not 'not yet
wired'; the metrics={} in _model_group_folder is a throwaway proxy, not
the call site. Point the vdb-aggregate ref at VectorDBBenchmark._run_aggregate
(method name, not a brittle line number). Comment-only.
…(C2)

Late-stage doctrine: 4.3.4 must not flip a submission INVALID. New tests
expect warn_violation + return True when aggregate accelerator memory <
checkpoint size. Adds chkpt_summary_num_accelerators conftest knob.
Aggregate accelerator memory shortfall now surfaces via warn_violation and
returns True instead of flipping the submission INVALID. The 80 GiB H100
per-accelerator baseline is advisory (checkpointing metadata carries no
accelerator-type field), so this must not hard-fail during the submission
window. Enriched the message with the accelerator count and a pointer to
verify against the actual accelerator's memory.
…t (P6)

Two gaps in rules/models.py metric handling:
- DLIOResultParser.parse stores summary['metric'] UNFILTERED, so a scalar
  or string entry can reach report_generator's fmean(metric_list) and raise
  TypeError; the parse path must filter to list-valued keys like the
  metadata-complete path does.
- Both paths blank metrics silently (metrics=None) when no list-valued keys
  survive; a diagnostic must be logged so an empty metrics column is
  traceable to a reason.

RED: parse keeps the scalars; the collapse-to-None path logs nothing.
Add module-level _filter_list_metrics(): filters a DLIO summary 'metric'
block to list-valued keys (so report_generator's fmean never receives a
scalar) and logs a diagnostic both when non-list keys are dropped and when
the block collapses to nothing — a blank metrics column is now always
traceable to a logged reason.

- DLIOResultParser.parse now filters summary['metric'] through the helper
  instead of storing it unfiltered (was a latent fmean TypeError on the
  metadata-incomplete fallback path).
- ResultFilesExtractor._from_metadata routes through the same helper and
  gains a logger param, threaded from extract(), so the collapse-to-None
  case is no longer silent.

Warnings-only: no validity change, no new hard-fail.
_aggregate_option_results folds an empty trial's sum([])==0.0 into the
across-trial fmean and coerces a fully-empty aggregate to 0.0, so a total
data loss (no rank produced any result) is indistinguishable from a real
measured zero when reportgen surfaces it verbatim.

RED asserts: total loss -> None for all five aggregated fields; an empty
trial is skipped rather than diluting the mean (4.0, not 2.0). Also flips
test_none_p95_when_no_successful_reads to match its own name (None).
_aggregate_option_results now skips a trial that produced no rank data
(guarding the per-trial append) instead of folding its sum([])==0.0 into
the across-trial mean, and blanks the aggregated bandwidth/throughput
fields to None on total loss instead of coercing to 0.0. A present-rank
0.0 (CPU-tier working set) is still a legitimate measured value and is
counted. reportgen passes these through verbatim, so a blank cell now
means no data rather than a measured zero.

Warnings-only: no validity change; total loss was already logged per-rank.
@github-actions

Copy link
Copy Markdown

MLCommons CLA bot All contributors have signed the MLCommons CLA ✍️ ✅

@FileSystemGuy FileSystemGuy changed the title fix(reportgen/validate): four warnings-only review-tooling fixes (C1/C2/P5/P6) 3rd: fix(reportgen/validate): four warnings-only review-tooling fixes (C1/C2/P5/P6) Jul 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant