fix(reportgen): warn when a kv_cache row hides a collapsed group or a failed run - #837
Closed
FileSystemGuy wants to merge 5 commits into
Closed
fix(reportgen): warn when a kv_cache row hides a collapsed group or a failed run#837FileSystemGuy wants to merge 5 commits into
FileSystemGuy wants to merge 5 commits into
Conversation
…ure warnings Two silent paths found in closed/ANL/results/crux-eagle: 1. Three runs shared one workload grouping key because the submitter flattened three system directories into one. `_aggregate_kvcache` takes `runs[0]` — filesystem-discovery order, not a rule — so the published values depend on iteration order, and the two dropped runs appear in no table. The only diagnostic was `No valid run directories found` against the workload directory, naming neither the row that was produced nor what was dropped. 2. `partial_failure` / `trial_failures` are written into summary.json by kvcache._write_run_summary and read by nothing. ANL's 8- and 64-node runs lost 70% and 97% of their per-rank result files with all 9 mpirun trials exiting non-zero; open/farmgpu's llama3.1-70b-instruct row publishes today missing 45 rank files. Indistinguishable from a clean row. The determinism test gives each run a distinct host_count so the pick is observable — it currently fails `assert 64 == 1`, which is the ordering dependency itself.
…rtial failures Deterministic selection plus two warnings, on the evidence that the crux-eagle case is not unique: - `_select_kvcache_run` replaces `runs[0]`. Discovery order was genuinely arbitrary — of the three v3.0 groups holding two real runs, it published the earlier run for two and the later run for the third. Earliest `run_datetime` has no better claim than latest, but it is a rule rather than an accident. - `_kvcache_measured_runs` excludes `datasize` from selection. The kv_cache grouping key has no `command` component (D-05), so a `datasize` leaf shares the group with the run it sized; it writes no summary.json. An earlier draft of this fix blanked all twelve KVCache metrics on v3.0-0019/0021/0023/0142 before the expectation diff caught it, which is now pinned by a test. - Collapsed-group and partial_failure warnings ride on `Result.issues`. The collapsed-group warning requires two or more actual `run` invocations, so ANL polaris-nvme's pair of `datasize` leaves stays quiet. Against the v3.0 tree: 3 collapsed groups (ANL crux-eagle 3 runs, Everpure 51hosts_20 and 51hosts_30 2 runs each) and 1 partial failure (open/farmgpu llama3.1-70b-instruct, 45 missing rank files). Six of the seven collapses the first draft reported were datasize siblings, not dropped measurements. One published row moves: v3.0-0019 switches from its later run to its earlier one, since discovery order had picked the later. Refs #836
…ilter format_issues_list(show_all=False) drops every Issue whose validation is CLOSED, conflating two orthogonal fields: validation is the submission category, severity is whether a human needs to look. A finding that does not disqualify a CLOSED submission but does mean its published row is misleading is exactly CLOSED + severity="warning". Two families are invisible today — the datagen leaf-presence warnings, written to be "worth surfacing but not invalidating", and the #836 kv_cache collapsed-group and partial_failure warnings. Both reach only the log stream, alongside 183 other warnings. Refs #836
… list format_issues_list(show_all=False) now keeps CLOSED issues whose severity is "warning", badges them [WARN] in yellow rather than green [CLOSED], drops the "None: " placeholder when an issue carries no parameter, and absorbs the message's own "[WARN] " lead-in so badges don't stack. Ordinary CLOSED chatter still goes. Against the v3.0 tree this adds five lines to the printed summary — the four #836 kv_cache warnings and one datagen leaf-presence warning that had been written to be surfaced and never was. Refs #836
|
MLCommons CLA bot All contributors have signed the MLCommons CLA ✍️ ✅ |
Contributor
Author
|
Closing — these commits belong directly on |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #836.
A kv_cache row could be built from one of several runs in its workload group, chosen by filesystem-discovery order, with no indication on the row. A second, unrelated path let a run that lost most of its per-rank result files publish a row shaped exactly like a clean one.
Base is
reportgen-column-parity(the integration branch) rather thanmain— these touch the same reportgen files the #826–#829 stack rewrote.What changed
Deterministic selection.
_select_kvcache_runreplacesruns[0]. Discovery order was genuinely arbitrary: of the three groups in the v3.0 tree holding two or more real runs, it published the earlier run for two and the later run for the third. Earliestrun_datetimehas no better claim than latest, but it is a rule rather than an accident, and it matches the positional convention Rules.md §2.1.17 already uses for training.datasizeexcluded from selection. The kv_cache grouping key has nocommandcomponent (D-05), so adatasizeleaf lands in the same group as therunit sized. It writes nosummary.json. An earlier draft of this change selected those leaves and blanked all twelve KVCache metrics on rows v3.0-0019 / 0021 / 0023 / 0142; the expectation diff caught it and it is now pinned by a test.Two warnings on
Result.issues. One when a row is built from a subset of its group, naming the published run and every dropped one; one when the published run recordedpartial_failure, with the missing-file and failed-trial counts. The collapsed-group warning requires two or more actualruninvocations, so ANL polaris-nvme's pair ofdatasizeleaves stays quiet.format_issues_list(show_all=False)now shows CLOSED warnings. The filter dropped every issue whosevalidationwasCLOSED, conflating two orthogonal fields —validationis the submission category,severityis whether a human needs to look. Without this the new warnings reach only the log stream, since the fixed webpage-parity schema has no issues column. The datagen leaf-presence warnings, written to be "worth surfacing but not invalidating", had been invisible for the same reason and now print. Warnings are badged[WARN]in yellow rather than green[CLOSED], which on "row built from 1 of 3 runs" reads as approval; the strayNone:placeholder is dropped for issues carrying noparameter.Findings behind the change
The issue's original diagnosis was wrong on two counts; the correction is posted there in full.
crux-eagleis not a novel layout the tool failed to parse. Each run'smetadata.result_dirrecords the path the tool wrote it to —crux-eagle,crux-eagle-n8,crux-eagle-n64, each canonical<system>/kv_cache/llama3.1-8b/run/<ts>/. Three system directories were merged into one at packaging time. Accepting the layout would not fix the collapse, becausesystemnameis path-derived and all three still produce the same grouping key.The two dropped runs are failed runs, not lost measurements:
8nodex8ppnis missing 403 per-rank result files (~70 %) and64nodex8ppn4473 (~97 %), both with 9 of 9 mpirun trials exiting non-zero.partial_failureandtrial_failuresare written bykvcache.py:919,960and were read by nothing, which is the more general bug —open/farmgpu/.../llama3.1-70b-instruct/run/20260709_215001publishes today missing 45 rank files.Verification
Five commits, TDD RED→GREEN throughout. All four CI suites green: 3080 + 911 + 238 + 228 passed, 1 skipped, 0 failures.
Against the v3.0 tree the change produces 3 collapsed-group warnings (ANL crux-eagle 3 runs, Everpure 51hosts_20 and 51hosts_30 2 runs each) and 1 partial_failure warning, adding five lines to the printed summary — the four above plus one datagen leaf warning that had never been visible.
One published row moves: v3.0-0019 (Everpure 51hosts_20) switches from its later run to its earlier one, 85736 → 66113 tok/s and 11 other cells, because discovery order had picked the later run there. Which run represents a submitter's intended submission is not something the tool can know; that question is being raised with the three affected submitters in
ApparentProblems.mdalongside the results refresh.