Repository navigation
Conversation
Userbuffers buffers and the cuBLASMp workspace are shared by every layer, so a tensor saved for backward that aliases one is overwritten by the next layer's forward pass. A single layer cannot observe this numerically. The layer runner now checks every tensor saved during the test model's forward and backward passes and fails if its storage overlaps the buffer returned by get_buffer(). With the cuBLASMp backend, the check runs with cuBLASMp 0.11.0 or newer, where get_buffer() views the gathered input in its workspace. The multi-layer TransformerLayer cases removed in NVIDIA#3692 were added in NVIDIA#1554 to catch this, but relied on numerical tolerances to detect it. Signed-off-by: Alp Dener <adener@nvidia.com>
Contributor
[Low impact] The PR appears safe to merge; no actionable issues were found. SummaryAdds a direct check for saved tensors that share memory with communication-overlap buffers.
Review was source-only; GPU tests were not run. Reviews (1) · Last reviewed commit: "[PyTorch] Check saved tensors against co..." · Reviewed by Greptile |
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.
Description
Userbuffers and the cuBLASMp buffers for comm+GEMM overlap are shared by every layer, so a tensor saved for backward that aliases one is overwritten by the next layer's forward pass. A single layer cannot observe this numerically. The layer runner now checks every tensor saved during the test model's forward and backward passes and fails if its storage overlaps the buffer returned by
get_buffer(). With the cuBLASMp backend, the check runs with cuBLASMp 0.11.0 or newer, whereget_buffer()views the gathered input in its workspace (cuBLASMp buffer was not exposed via API in older versions).The multi-layer TransformerLayer cases removed in #3692 were added in #1554 to catch this, but relied on numerical tolerances to detect it. This new test checks the root cause instead of relying on numerical failures.
Type of change
Checklist: