Conversation
Signed-off-by: Kai Xu <kaix@nvidia.com>
|
Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually. Contributors can view more details about this message here. |
Contributor
|
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: trueComment |
kaix-nv
added this pull request to stack #2510
September 22, 2026 21:27
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## kaix/linear-attention-qat-m4 #2509 +/- ##
================================================================
- Coverage 70.52% 70.38% -0.14%
================================================================
Files 617 620 +3
Lines 68119 68559 +440
================================================================
+ Hits 48039 48257 +218
- Misses 20080 20302 +222
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
kaix-nv
removed this pull request from stack #2510
September 23, 2026 01:07
Contributor
|
This was referenced Sep 23, 2026
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.
Superseded by #2519: Decode is delivered before prefill and inverse, with signed INT8 state and replay-anchor support. Prefill composition follows in #2503 and inverse in #2507. This closed PR and its branch retain the original qualification history.
What does this PR do?
Type of change: New feature, new example, new tests, documentation.
Adds experimental differentiable GDN/KDA decode policies for training: per-token FP8 state writes, optional log-retention grid rounding, and anchor-plus-encoded-update replay. Workloads supply explicit prefix lengths, preserving gradients across prefill/decode handoff, anchor refresh, and continuation. Policies persist through ModelOpt save/restore.
A Torch reference defines write/readout order and codec metadata. A fused FP32 Triton forward/backward implements token and encode-once replay with internal state checkpoints. A fixed key-reduction tree and matching dynamic FP8 scale arithmetic prevent tiny arithmetic differences from flipping rounding ties and accumulating along near-unit-decay trajectories. Replay factors are computed from the current reconstructed trajectory, never a teacher state.
The default execution path is unchanged. Serving caches, compressed storage, native low-precision speedups, and higher-order fused differentiation are outside this draft. The study keeps the exact solve; it does not enable the Neumann candidate rejected in #2507.
Usage
Use
*gdn_state_quantizerfor GDN. Token mode omits the replay settings. Seedocs/linear_attention_decode.mdfor carry/readout contracts and unsupported cases.Testing
1e-4.Pinned Arcee KDA / Wikitext-2 pilot: 32 validation blocks selected log grid 1/256 before test access. Exact, token-state FP8, state FP8 + selected grid, and replay each completed 32 attention-only updates with finite gradients for all trainable parameters and verified weight changes. On 64 held-out suffix-scored blocks, post-training perplexities were 12.6413 / 12.6567 / 12.6530 / 12.6466. All approximations met the 0.02 NLL pilot margin; the largest 95% upper bound was 0.002703. This is a short-context, single-model pilot, not broad quality recovery.
For complete
[1,257,4,128]prefix/suffix training on H100 (prefix 64, three warmups, 20 interleaved samples), KDA token/decay/replay took 11.265 / 11.310 / 11.569 ms versus 228.732 / 235.972 / 327.361 ms for matching Torch references. Exact FLA with BF16 Q/K/V took 2.347 ms. Numerical outputs/state matched the references and maximum gradient relative-norm error was below 3.4e-7. GDN results and paired intervals are indocs/linear_attention_decode_study.md; raw receipts bind retained source snapshots. Final import/comment cleanup preserves the non-import AST and was regression-tested; the benchmark harness differs only in typing import-name ordering.Additional tests cover full-width state/value tails at codec blocks 32/128 and composition of prefix FP8, Neumann solve, elementwise rounding, and replay across packed/empty sequences and state layouts. These synthetic composition tests do not promote the Neumann algorithm for model quality.
Before your PR is "Ready for review"
CONTRIBUTING.md: N/A No new dependency or copied third-party implementation.Additional Information
Stacked on #2507 (M4), following #2506 (KDA prefill), #2503 (GDN materialized prefill), and #2497 (GDN state/W QDQ). This draft models numerical behavior for QAT and has no inference performance or compressed-storage claim.