checkpointing: --hpc flag to relax §4.7.1 cache-flush gap on HPC shared filesystems - #833
Closed
zhenghh04 wants to merge 1 commit into
Closed
checkpointing: --hpc flag to relax §4.7.1 cache-flush gap on HPC shared filesystems#833zhenghh04 wants to merge 1 commit into
zhenghh04 wants to merge 1 commit into
Conversation
…C shared filesystems On an HPC shared parallel filesystem the two-invocation failover callout of Rules.md §4.7.1 cannot meet the 30-second budget: the write and read phases are separate batch-scheduler jobs whose node sets cannot be guaranteed identical, and the read invocation's per-invocation MPI spawn + DLIO re-initialization over a multi-TB checkpoint tree alone can take minutes to reach main.py (measured ~226-268s on ALCF systems). This makes a valid CLOSED checkpoint submission impossible on such systems even though cold reads are ensured by the storage layer / benchmark (remote parallel FS, O_DIRECT, or posix_fadvise(DONTNEED) on close). Add an opt-in `--hpc` flag to `mlpstorage ... checkpointing run` (and configview) that declares this environment. argparse records it as `args.hpc`, which Benchmark.write_metadata already serializes into each run's metadata.json via vars(self.args) — so no extra plumbing is needed to surface it to the validator. When set, the validator relaxes cache_flush_validation (the 30s gap) and checkpoint_invocation_structure (the 1-or-2 invocation shape) from errors to warnings, so the exemption is visible in the report rather than silently applied. - cli/checkpointing_args.py: add --hpc (run/configview) + hpc=False default so vars(args) always carries it. - submission_checker/checks/checkpointing_checks.py: add _hpc_exempt() and early-return-with-warning in both §4.7.1 checks. - Rules.md §4.7.1, ManPage.md, cli/help_formatter.py: document the exemption. - tests/test_checkpoint_hpc_exemption.py: the 30s gap and invocation-structure checks still bite without --hpc (regression guards) and pass with a warning when it is set; argparse registration + namespace default.
|
MLCommons CLA bot All contributors have signed the MLCommons CLA ✍️ ✅ |
Contributor
|
@zhenghh04 You can submit this as OPEN and we can massage it later into CLOSED. OPEN does not check the inter-phase-gap at all. PR#834 is available for you. This PR and PR#834 will not be merged into main, just clone PR#834 into a local workspace and use that code for your run. We'll come back to how to support systems like yours after this submission round. |
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.
Problem
Rules.md §4.7.1 models a client-node failover: when the storage system needs an
external callout between the write and read phases (e.g. to clear a client-side
cache when checkpoint-per-client < 3× node memory), the submitter must run the
write and read phases as two invocations, and the validator requires the
read invocation to reach
main.pywithin 30 seconds of the write invocationending.
On an HPC shared parallel filesystem this 30-second budget is not
achievable:
cannot be guaranteed identical across the two allocations.
re-initialization over a multi-TB checkpoint tree alone takes minutes to
reach
main.py— we measured ~226–268 s on ALCF systems, far over the30 s cap.
So a valid CLOSED checkpoint submission is currently impossible on these
systems, even though cold reads are already guaranteed by the storage layer /
benchmark on HPC: a remote parallel filesystem (Lustre/GPFS/DAOS),
--o-direct,and/or the benchmark's own
posix_fadvise(POSIX_FADV_DONTNEED)on file close.The 30 s wall-clock window is an enterprise-recovery model that does not map to
the HPC deployment.
Change
Add an opt-in
--hpcflag tomlpstorage ... checkpointing run(andconfigview) that declares this environment.args.hpc;Benchmark.write_metadataalreadyserializes
vars(self.args)into each run'smetadata.json, so the flagreaches the validator with no extra plumbing.
cache_flush_validation(the 30 s gap) andcheckpoint_invocation_structure(the 1-or-2 invocation shape) — from errors to warnings. The exemption is
therefore visible in the report, not silently applied, and is recorded in
metadata.jsonfor auditability.ManPage.md, and the CLI help document the exemption andmake clear the submitter remains responsible for cold reads.
This is a deliberate, transparent relaxation for the HPC deployment class; it is
structured so it can later be tightened to require an explicit attested eviction
mechanism (fadvise / O_DIRECT) without reworking the plumbing, if the WG prefers.
Testing
mlpstorage_py/tests/test_checkpoint_hpc_exemption.py(new):cache_flush_validation, and 3 invocations still failcheckpoint_invocation_structure, when--hpcis absent;--hpcboth pass and emit a warning instead;--hpconrun/configview(notdatasize) and defaultsit False in the namespace everywhere.
All checkpointing + gap validator tests pass (88 passed locally).
Context
Sibling of the ALCF PALS launcher fixes #818 (CAP-02b results-dir probe) and
#819 (kvcache
--mca), which unblocked multi-node checkpoint/kvcache runs onALCF HPE-Cray PALS. This PR removes the last blocker to a valid CLOSED
checkpoint submission from an HPC shared parallel filesystem.