Eliminate duplicated softmax recomputation in indexer loss.#4454
Open
JHCuc3m wants to merge 1 commit into
Open
Eliminate duplicated softmax recomputation in indexer loss.#4454JHCuc3m wants to merge 1 commit into
JHCuc3m wants to merge 1 commit into
Conversation
By inserting `jax.lax.optimization_barrier` after the head aggregation step in `calculate_indexer_loss`, we force the compiler to reuse the head-aggregated intermediate tensor for the subsequent sequence reduction instead of recomputing the entire softmax pipeline from raw QK scores. TAG=agy CONV=5ff94b54-4171-4309-8704-6046df05eb13
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
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
This PR eliminates a duplicated softmax computation in the indexer loss calculation of DeepSeek-V3.2.
Why is this change being made?
In the original implementation, the compiler (XLA) failed to reuse the head-aggregated attention probabilities for the subsequent sequence reduction (L1 normalization). Instead, it recomputed the entire softmax pipeline from the raw QK scores redundantly.
Solution
By inserting
jax.lax.optimization_barrierafter the head aggregation step incalculate_indexer_loss, we force the compiler to materialize and reuse the head-aggregated intermediate tensor for the subsequent sequence reduction instead of recomputing the entire softmax from raw QK scores.It was observed that this reduces execution time for 128K sequence length long context, therefore it should be less of an issue for storing softmax tensor in shorter sequences.
Implementation Details
calculate_indexer_lossinsrc/maxtext/layers/attention_mla.pyto insert the barrier.Tests
All tests passed.
Checklist
Before submitting this PR, please make sure (put X in square brackets):
gemini-reviewlabel.documentation-files).
TAG=agy
CONV=5ff94b54-4171-4309-8704-6046df05eb13