[Research] LLM GRPO Training on RX 7900 XTX — 3 Actionable Findings for RDNA3 Optimization #6553
ChenHongYu2026
started this conversation in
General
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
[Research] LLM GRPO Training on RX 7900 XTX — 3 Actionable Findings for RDNA3 Optimization
Context
Links:
Finding 1: 4-bit Quantization is Net-Negative on RDNA3
Root cause: RDNA3 has no dedicated INT4 compute units. Every NF4→BF16 dequantization before GEMM is pure overhead with no hardware acceleration — unlike NVIDIA's INT4 Tensor Cores (1248 TOPS on A100) that absorb dequant cost within the compute pipeline.
Implication: QLoRA — the go-to technique for consumer-GPU fine-tuning — is actively harmful on RDNA3 for training workloads. A WMMA-native INT4 path or a fused dequant+GEMM kernel would unlock this segment.
Recommendation: Always prefer BF16 over 4-bit on RDNA3 for training. The VRAM "savings" (10.2 GB vs 13.9 GB = 27% reduction) are illusory because activations + optimizer state dominate at 3B scale.
Finding 2: Batch-1 GEMV Utilization is ~29% — The Fundamental Decoding Ceiling
Root cause: Batch-1 GEMV has arithmetic intensity ≈ 1 FLOP/byte. The WMMA execution path on RDNA3 cannot saturate bandwidth at this intensity — occupancy and memory access patterns are the bottleneck, not kernel launch overhead (graph capture yields zero improvement).
Scaling with batch size (the optimization lever):
Implication: Speculative decoding on RDNA3 caps at ~1.5× (confirmed across 4 methods: draft model, FLy, Medusa, EAGLE). The real lever is generation-batch scaling — decoupling it from the backward micro-batch raises GRPO training throughput to 795.5 tok/s (97.6% of the memory-wall-constrained optimum).
Finding 3: Unsloth Kernel Fusion Yields Only +5.2% on RDNA3
Root cause: Unsloth's fused kernels eliminate intermediate memory round-trips — highly effective on HBM (5.3 TB/s on MI300X) where memory traffic is the bottleneck. On GDDR6 (960 GB/s), the WMMA compute path is already the dominant constraint; fusing memory operations yields diminishing returns.
Implication: The "2× speedup" marketing (benchmarked on CDNA/Instinct) does not transfer to consumer RDNA3. Framework selection on consumer AMD contributes < 6% throughput variation — hyperparameter tuning (sequence length, generation batch) yields 30%+ improvements.
Bonus: 19 Documented Pitfalls for RDNA3 Training
The full paper includes a comprehensive pitfall-to-solution table. Top 5 most impactful:
HSA_OVERRIDE_GFX_VERSIONmissing → silent crashes11.0.0HIP_VISIBLE_DEVICES=0expandable_segments:Truetorch.compile(reduce-overhead)= zero improvement on decodeattn_implementation='eager'Methodology Note
All throughput values use a post-hoc corrected measurement caliber. Our initial profiler had a cumulative-token-counting bug (inflating values 5.5–10.6× depending on logging frequency). The correction (final cumulative tokens / wall time) was verified against per-step completion-length reconstruction. We report this openly as part of our validity protocol — measurement-pipeline bugs are exactly what per-step validity checking is designed to catch.
What Would Help the Consumer RDNA3 AI Ecosystem
Based on 15 days of measurement, the highest-impact improvements would be:
Reproducibility
Everything is open-source with a
Makefileone-liner to reproduce:Happy to share raw JSON benchmark data or discuss methodology if useful. No ask — just thought the data might save someone a few weeks of investigation on consumer RDNA3.
Best,
Hongyu Chen
DOI: 10.5281/zenodo.21695686 | Code: GitHub
All reactions