Repository navigation
fix: harden FPM collector completion and failure handling - #379
Draft
Arsene12358 wants to merge 3 commits into
Draft
Arsene12358 wants to merge 3 commits into
Arsene12358 wants to merge 3 commits into
Conversation
Signed-off-by: Yiming Liu <yimingl@nvidia.com>
Keep each collector engine alive until its local merged benchmark artifact and any advertised worker-probe sidecar are recorded. Bind completion artifacts to the run and local DP shard, retain legacy producers without sidecars, and preserve recorded partial or failed probe evidence for quality validation. Bound post-rank finalization independently of the collection budget, preserve raw timings on failure, and cover delayed merge/probe output, both two-node completion orders, stale artifacts, and deadline failures. Validation: 350 collector tests passed; independently rechecked against failed full-grid and successful P/D smoke artifacts. Signed-off-by: Yiming Liu <yimingl@nvidia.com>
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: true
Comment |
Observe failed node futures immediately so existing command-scope cancellation stops live peer steps before pool shutdown. Preserve the original error and every node's output logs. Add a real-process regression with a failing second node and live first node, plus multi-node success coverage. All 67 Slurm unit tests and Ruff checks pass. Signed-off-by: Yiming Liu <yimingl@nvidia.com>
This branch has not been deployed
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.
Why and what changed
Newer Dynamo self-benchmark writes a worker-probe sidecar alongside its rank timing files. AISimulate could treat that sidecar as a rank measurement. On full grids, it could also stop the engines after rank files appeared but before local merged results and the advertised probe finished writing. Separately, a later Slurm node could fail during startup while the collector waited on an earlier node’s unfinished future.
Classify probe sidecars separately and wait for correctly bound local merged/probe artifacts before teardown. A separate 120-second finalization window starts after local rank measurements complete, does not reset during polling, and remains capped by the collection deadline. Recorded partial or failed probe observations remain visible to downstream validation. Observe Slurm node futures in completion order so the first observed failure promptly triggers existing cancellation of owned child processes and preserves both nodes’ logs and the original failure.
Review map
collector/fpm_forward/runtime/fpm_exec.shfor lifecycle ordering and artifact binding, thencollector/fpm_forward/native_artifact.pyfor rank-file discovery andcollector/fpm_forward/slurm.pyfor failure propagation.FPM_FINALIZATION_TIMEOUT_SECONDSoverride, default 120 and range 1–3600 seconds. Existing artifact schemas are unchanged.Evidence
8bc44d6d4993efc0ecf1260acb507aa57821ca0d, independently rerun by task and whole-branch reviewers. Coverage includes runtime wrapper, artifact parsing, runner, Slurm, and measurement evidence.8bc44d6d4993efc0ecf1260acb507aa57821ca0d.8bc44d6d4993efc0ecf1260acb507aa57821ca0d; independent task and fresh whole-branch reviews, no findings.Reproduce the collector test subset from
python/aisimulate(the timeout plugin is disabled for macOS):Modeling or data provenance
This changes collector control flow and artifact classification. Validation uses synthetic boundary fixtures plus preserved GB300 DEP8 artifacts from pinned vLLM 0.27.0 and current Dynamo PR source revisions. Timing values, collection grids, aggregation, and quality thresholds are unchanged. Probe-file completion does not establish measurement quality or worker-restoration success. Slurm failure handling cancels owned child commands; it does not cancel the caller’s allocation.
Tracking