Fix calculation of checkpoint gap in reports#824
Conversation
|
MLCommons CLA bot All contributors have signed the MLCommons CLA ✍️ ✅ |
|
This is again, down to the report, the same issue with the gap calculation @FileSystemGuy . Reported it here #825 |
|
Thanks for this — the mechanism is right, and the model-plumbing of the invocation bookends is exactly what the reportgen path was missing. I'd like to accept this approach, but there's one gap I think we need to close before it fully fixes #825 for the v3.0 round. The constraint: older submissions are eligible, and they have no bookendsFor v3.0 we are accepting previously-generated results with no regeneration required. That matters here because the invocation bookends are very recent additions to the v3.0 codebase, not a baseline every result dir carries:
So a large fraction of eligible submissions were generated before #787 and have The flaw this creates in the current PRFor a pre-#787 result dir, the write-side fallback chain collapses straight to the summary end: write_end = (
_parse_summary_timestamp(ordered[0].invocation_end_time) # "" -> None
or _parse_summary_timestamp(ordered[0].end_datetime) # -> summary "end"
)That is exactly the measurement #825 is about — it charges the write-side post-benchmark cluster collection against the 30s cache-flush budget. And because that collection window scales with node count, the large-topology submissions are precisely the ones that will still trip the false The standalone submission checker already handles those older dirs — it has a middle fallback tier between the bookend and the summary end:
The reportgen path in this PR only has tiers 1 and 3, so it diverges from the standalone checker for exactly the pre-#787 vintage. (That middle tier exists specifically because pre-bookend dirs are expected to validate — which is the same situation we're in for this round.) Suggested enhancementAdd the middle tier to the reportgen path so it matches the standalone checker for the write side:
With the middle tier added, this PR would fix #825 for the whole eligible set — including the large-topology older submissions that are the ones most likely to hit it — while staying a bounded change (one field + one helper reuse + one fallback line on top of what you have). Happy to pair on it or push a follow-up commit if that's easier. Thanks again! |
|
@wolfgang-desalvador Just in case you weren't notified by github that I added a response to your PR... |
Working on it @FileSystemGuy |
This pull request updates the handling of benchmark invocation timing metadata to improve the accuracy of cache-flush gap measurement and ensure compliance with the Rules.md specification. The main changes introduce new fields for invocation bookends, propagate them throughout the data model, and update logic in the checkpointing submission checker to prefer these authoritative timestamps.
Enhancements to timing metadata handling:
invocation_start_timeandinvocation_end_timefields to theBenchmarkRunDatadataclass, including documentation explaining their significance for cache-flush gap measurement and their use as authoritative origins per Rules.md §4.7.1.parseand_from_metadatamethods inmodels.pyto extract and populate the new invocation bookend fields from metadata, falling back to empty strings if not present. [1] [2] [3]invocation_start_timeandinvocation_end_timein the model class for convenient and consistent access.Submission checker logic improvements:
invocation_end_timeandinvocation_start_time) when calculating the cache-flush gap, with a fallback to the older summary fields for backward compatibility. This ensures startup/collection overhead is not incorrectly included in gap measurements.