Delta-Matching: Closing the Final Gap of Native 8-bit Training for LLMs
Organizations: Carnegie Mellon University · NVIDIA · NVIDIA & Massachusetts Institute of Technology
Abstract
Reliable FP8 attention remains a barrier to fully native 8-bit large language model training. We derive how forward-backward inconsistencies produce stale delta and empirically show how it distorts training dynamics. Our stale-delta hybrid runs show a modest loss gap at 569M parameters but substantial loss increases and downstream degradation at 1.67B and 5.29B. QK normalization, NoPE (no positional encoding), and lower-learning-rate context extension mitigate or delay degradation without eliminating it. This pattern suggests accumulated optimization error that smaller models and short runs can conceal. We propose Delta-Matching, proving that it restores the softmax gradient's zero-row-sum invariant under the stated numerical assumptions. It enables native block-scaled FP8 in every forward and backward attention-core matmul without architectural changes, smaller global batches, or auxiliary forward outputs. Across tested architectures, scales, and training stages, Delta-Matching matches BF16/FP32 mixed-precision training loss and overall downstream performance. We will release our implementation, trained models, and data recipes.
Figures & tables
| In-Context Recall | General Capabilities | |||||||
| Configuration | Method | Validation CE | RULER-4K | RULER-8K | Extraction | TriviaQA | MMLU | CS9 |
| NoPE | BF16/FP32 MP | |||||||
| Naive FP8 (Stale Delta) | ||||||||
| Delta-Matching ( ours ) | ||||||||
| No QK-norm | BF16/FP32 MP | |||||||
| Naive FP8 (Stale Delta) | Training diverged | |||||||
| In-Context Recall | General Capabilities | |||||||
|---|---|---|---|---|---|---|---|---|
| Architecture | Method | Validation CE | RULER-4K | RULER-8K | Extraction | TriviaQA | MMLU | CS9 |
| GDN/MLA | BF16/FP32 MP | |||||||
| Naive FP8 (Stale Delta) | ||||||||
| Delta-Matching ( ours ) | ||||||||
| KDA/GQA | BF16/FP32 MP | |||||||
| Naive FP8 (Stale Delta) | ||||||||
| In-Context Recall | General Capabilities | |||||||
|---|---|---|---|---|---|---|---|---|
| Parameters | Method | Validation CE | RULER-4K | RULER-8K | Extraction | TriviaQA | MMLU | CS9 |
| 0.569B | BF16/FP32 MP | |||||||
| Naive FP8 (Stale Delta) | ||||||||
| Delta-Matching ( ours ) | ||||||||
| 5.289B | BF16/FP32 MP | |||||||
| Naive FP8 (Stale Delta) | ||||||||
| Method | RULER-4K | RULER-8K | RULER-16K | RULER-32K | RULER-64K | Extraction |
|---|---|---|---|---|---|---|
| BF16/FP32 MP | ||||||
| cuDNN/TE FP8 (1st seed) | Training diverged | |||||
| cuDNN/TE FP8 (2nd seed) | ||||||
| Naive FP8 (Stale Delta) | ||||||
| Delta-Matching ( ours ) | ||||||
Appendix figures & tables20 assets
Supplementary material from the paper’s appendix.
Appendix
| Model | Params (B) | Hidden | FFN | RoPE fraction | |||
|---|---|---|---|---|---|---|---|
| GDN/GQA | 0.5693 | 15/5 | 1280 | 3840 | 6/2 | 256 | |
| GDN/GQA | 1.6654 | 18/6 | 2048 | 6144 | 16/4 | 128 | |
| GDN/GQA | 1.6654 | 18/6 | 2048 | 6144 | 8/2 | 256 | |
| GDN/GQA | 5.2886 | 24/8 | 3072 | 9216 | 16/4 | 256 | |
| GDN/MLA | 1.6654 | 18/6 | 2048 | 6144 | 16/16 | 128 | |
| KDA/GQA | 1.6648 | 18/6 | 2048 | 8064 | 16/4 | 128 |
| ID | Configuration | Attention core | FFNs | Projections |
|---|---|---|---|---|
| P0 | BF16 reference | BF16 | BF16 | BF16 |
| P1 | FP8 FFNs only | BF16 | FP8 | BF16 |
| P2 | Attention-core-only FP8 | FP8 | BF16 | BF16 |
| P3 | FP8 attention and FFNs | FP8 | FP8 | BF16 |
| P4 | FP8 attention, FFNs, and projections | FP8 | FP8 | FP8 |
| Results | Model or variant | MP | FP8 | GPUs |
|---|---|---|---|---|
| Figure 3 | 1.67B GDN/GQA, | P1 | P4 | H100 |
| Figure 9 | 1.67B GDN/GQA, Muon, | P1 | P4 | H100 |
| Table 21 | 1.67B GDN/GQA, Muon and AdamW, | P1 | P4 | H100 |
| Table 1(a) | 1.67B GDN/GQA, | P1 | P4 | H100 |
| Table 2 | NoPE | P1 | P4 | H100 |
| Table 2 | No QK-norm | P1 | P4 | H200 |
| Setting | ||
|---|---|---|
| quantization blocks | 128 query rows | 64 query rows |
| quantization blocks | 64 keys | 32 keys |
| Forward probability groups | 64 keys | 32 keys |
| quantization tiles | ||
| Forward promotion window | 256 keys | 128 keys |
| promotion window | 512 query rows | 512 query rows |
| Before FP8 cast | After FP8 cast | |||
| Correction | Layers 3–19 | Layer 23 | Layers 3–19 | Layer 23 |
| BF16/FP32 checkpoint activations | ||||
| Stale delta | ||||
| Consistent | ||||
| Delta-Matching | ||||
| Delta-Matching checkpoint activations | ||||
| Kernel | Forward | Backward | Forward + backward |
|---|---|---|---|
| Head dimension 128, 16 query heads, 4 key-value heads | |||
| FA3 BF16 | ( ) | ( ) | ( ) |
| cuDNN BF16 | ( ) | ( ) | ( ) |
| cuDNN/TE FP8 | ( ) | ( ) | ( ) |
| Ours, stale delta | ( ) | ( ) | ( ) |
| Ours, Delta-Matching | ( ) | ( ) | ( ) |
| Method | Validation CE | RULER-4K | RULER-8K | Extraction | TriviaQA | MMLU |
|---|---|---|---|---|---|---|
| BF16/FP32 MP | ||||||
| BF16/FP32 MP + FP8 FFN | ||||||
| FP8 Attn (Stale Delta) + FP8 FFN | ||||||
| Delta-Matching + FP8 FFN | ||||||
| Delta-Matching + FP8 FFN + FP8 QKVO |
| Method | Correction | Validation CE | CE vs MP |
|---|---|---|---|
| BF16/FP32 MP | Reference | ||
| Naive FP8 (Stale Delta) | |||
| Auxiliary BF16-output delta | |||
| Delta-Matching |
| In-Context Recall | General Capabilities | ||||||
|---|---|---|---|---|---|---|---|
| Method | Validation CE | RULER-4K | RULER-8K | Extraction | TriviaQA | MMLU | CS9 |
| BF16/FP32 MP | |||||||
| Naive FP8 (Stale Delta) | |||||||
| SageBwd-style | |||||||
| Delta-Matching | |||||||
| Seed | Layer | Method | Entropy | ||
|---|---|---|---|---|---|
| First | 19 | BF16/FP32 MP | 1 | ||
| SageBwd-style | 64 | ||||
| Second | 15 | BF16/FP32 MP | 0 | ||
| SageBwd-style | 29 |
| In-Context Recall | General Capabilities | |||||||
|---|---|---|---|---|---|---|---|---|
| Method | Validation CE | RULER-4K | RULER-8K | Extraction | TriviaQA | MMLU | CS9 | |
| BF16/FP32 MP | 2 | |||||||
| FA3-MS (stale) | 1 | |||||||
| FA3-MS (externally matched) | 1 | N/E | ||||||
| Delta-Matching ( ours ) | 2 | |||||||
| Method | Validation CE | Max. gain product | Top-six share (%) | |
|---|---|---|---|---|
| 1.67B GDN/GQA | ||||
| BF16/FP32 MP | ||||
| Naive FP8 (Stale Delta) | ||||
| Delta-Matching | ||||
| 1.67B Mamba-2/GQA | ||||
| BF16/FP32 MP | ||||
| Method | Validation CE | RULER-4K | RULER-8K | Extraction | TriviaQA | MMLU | CS9 |
|---|---|---|---|---|---|---|---|
| BF16/FP32 MP | |||||||
| Naive FP8 (Stale Delta) | |||||||
| Delta-Matching ( ours ) |
| Method | Validation CE | RULER-4K | RULER-8K | Extraction | TriviaQA | MMLU | CS9 |
|---|---|---|---|---|---|---|---|
| BF16/FP32 MP | |||||||
| Naive FP8 (Stale Delta) | |||||||
| Delta-Matching ( ours ) |
| Method | Validation CE | RULER-4K | RULER-8K | Extraction | MMLU | CS9 |
|---|---|---|---|---|---|---|
| 1.05M tokens per step, 28,610 updates | ||||||
| BF16/FP32 MP | ||||||
| Naive FP8 (Stale Delta) | ||||||
| Delta-Matching | ||||||
| 2.10M tokens per step, 14,305 updates | ||||||
| Naive FP8 (Stale Delta) | ||||||
| In-Context Recall | General Capabilities | |||||||
|---|---|---|---|---|---|---|---|---|
| Optimizer | Method | Validation CE | RULER-4K | RULER-8K | Extraction | TriviaQA | MMLU | CS9 |
| Muon | BF16/FP32 MP | |||||||
| Naive FP8 (Stale Delta) | ||||||||
| Delta-Matching ( ours ) | ||||||||
| AdamW | BF16/FP32 MP | |||||||
| Naive FP8 (Stale Delta) | ||||||||
| Optimizer | Method | LAMBADA | HellaSwag | PIQA | ARC-Easy | SciQ | OpenBookQA | WinoGrande | COPA | ARC-Challenge | Avg |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Muon | BF16/FP32 MP | ||||||||||
| Naive FP8 (Stale Delta) | |||||||||||
| Delta-Matching ( ours ) | |||||||||||
| AdamW | BF16/FP32 MP | ||||||||||
| Naive FP8 (Stale Delta) | |||||||||||
| Delta-Matching ( ours ) |
| Method | TriviaQA | MMLU | CS9 |
|---|---|---|---|
| BF16/FP32 MP | |||
| cuDNN/TE FP8 (1st seed) | Training diverged | ||
| cuDNN/TE FP8 (2nd seed) | |||
| Naive FP8 (Stale Delta) | |||
| Delta-Matching ( ours ) | |||