refactor: replace uniform_ noise with rand-based formulation for torch.compile() #350
+1
−1
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.
Summary
This PR refactors the additive noise generation logic in
quantize()to improve compatibility withtorch.compile/ TorchDynamo.The previous implementation relied on an in-place
uniform_()random operation, which can cause graph breaks or compilation issues undertorch.compile.This PR replaces it with a
rand_like()formulation that is compile friendly while preserving identical statistical behaviorObserved Issues
In several environments,
torch.compilefails when encountering in-place random initialization insidequantize().I observed
torch.compile(fullgraph=True)failures in some environments originating fromtorch.ops.aten.uniform.default. TorchInductorasserts an expected size/stride for the temporary buffer at runtime, but the actual stride can differ (e.g., due to layout differences such as channels-last), causing assert_size_stride to fail.rand_like()avoids the issue becauseTorchInductorlowers it as an out-of-place value-producing operation, whereasaten.uniformis lowered with static stride assumptions that can conflict with runtime layouts.What Changed
Error Reproducing
Unfortunately, I’m not able to provide a reliable minimal reproducing code for this issue.
I apologize for the lack of a reproducible test case.
Compatibility
This change preserves:
Thanks for reading
I appreciate your time reviewing this change.