Dion3: An Efficient Muon Optimizer Revision
- Dion3 is an optimized revision of the Muon optimizer that reduces matrix-orthogonalization costs through Gram Newton–Schulz, symmetric GPU kernels, fractional updates, and megabatched communication.
- Dion3 supports Muon and NorMuon variants, uses error feedback to preserve residual momentum during partial row or column updates, and is available as a drop-in replacement through the `dion` package.
- Experiments report comparable or improved loss and accuracy versus Muon and NorMuon, with optimizer-step speedups of up to approximately 6× and communication reductions that scale roughly with the selected update fraction.
Dion3 is a revision of the Muon optimizer that combines algorithmic, kernel-level, update-rule, and distributed-communication changes to reduce the cost of matrix orthogonalization. It replaces or augments conventional Newton–Schulz orthogonalization with Gram Newton–Schulz, exploits symmetry through CuteDSL kernels, orthogonalizes only a selected fraction of momentum rows or columns, and coalesces distributed collectives through megabatching. Dion3 supports Muon and NorMuon variants and is distributed through the dion package as a drop-in replacement for Muon. The reported experiments show comparable or improved loss relative to Muon and NorMuon, with optimizer-step reductions of up to approximately (Amsel et al., 12 Aug 2026).
1. Motivation and relationship to Muon
Muon maintains a matrix-valued momentum buffer. For a parameter matrix and gradient , the momentum recurrence is
and the parameter update is
possibly with weight decay and per-matrix learning-rate scaling. If is an SVD, its polar factor is . The polar operation therefore preserves the singular-vector structure while replacing the singular values by $1$, distinguishing Muon from SGD with momentum.
Because exact polar decomposition is expensive, Muon approximates it using a five-step Newton–Schulz iteration. For a normalized matrix , the standard iteration is
Assuming 0 and defining the aspect ratio 1, one iteration requires, ignoring lower-order operations,
- 2 FLOPs for 3;
- 4 FLOPs for 5;
- 6 FLOPs for multiplication back by 7.
Thus 8 iterations cost
9
For 0, this becomes 1 across 15 matrix multiplications. Muon consequently has cubic complexity for square matrices and a particularly strong dependence on 2 for rectangular transformer matrices. MLP, MoE, and attention-projection matrices can have 3, with increasingly asymmetric matrices occurring in fine-grained MoEs.
Sharding introduces a second cost. Under FSDP or related schemes, the shards of a momentum matrix must generally be assembled before orthogonalization and scattered afterward. A conventional implementation processes batches of approximately 4 matrices, producing 5 communication rounds per step for 6 matrices. The resulting overhead includes full-matrix communication volume, collective-launch latency, synchronization, and poor interconnect utilization for small messages.
Dion3 addresses these costs at four levels:
- Gram Newton–Schulz: operates primarily on a smaller symmetric Gram matrix.
- CuteDSL symmetric kernels: avoid recomputing the redundant triangular half of symmetric products.
- Fractional row or column updates: orthogonalize and update only a selected fraction of the momentum matrix.
- Megabatched communication: packs same-shaped matrices into a small number of distributed collectives.
NorMuon extends Muon with row-wise second-moment normalization. For 7, it maintains
8
forms
9
and rescales the result to preserve the Frobenius norm. Dion3 supports both Muon and NorMuon variants.
2. Gram Newton–Schulz orthogonalization
For 0 with 1,
2
Gram Newton–Schulz forms the symmetric Gram matrix
3
and approximates its inverse square root. The final output is
4
where 5 approximates 6.
The reformulation follows from expressing each odd Newton–Schulz polynomial as
7
where
8
The scalar recurrence is
9
0
1
The composition of the Newton–Schulz polynomials is then 2, with 3 approaching 4. The matrix recurrence is
5
6
7
In exact arithmetic, Gram Newton–Schulz is mathematically equivalent to applying the original Newton–Schulz polynomial sequence directly to 8.
Computational scaling
The Gram formulation requires two large rectangular products:
- formation of 9;
- final multiplication 0.
The iterative operations act on 1 matrices. With symmetric matrix multiplication, the paper gives the naive Gram cost as
2
compared with
3
for standard Newton–Schulz using symmetric products. At 4, the costs are equal, so Dion3 falls back to standard Newton–Schulz for square matrices. For 5, Gram Newton–Schulz is cheaper, with asymptotic dependence changing from
6
to
7
For 8 and 9, representative of a 0-expanded MLP, the reported FLOP reductions are 55% relative to standard Newton–Schulz with symmetric GEMMs and 68% relative to an implementation without symmetric GEMMs.
Numerical stability
Naive Gram Newton–Schulz can be unstable in half precision because finite-precision formation of 1 can produce small negative eigenvalues even though an exact Gram matrix is positive semidefinite. The inverse-square-root iteration behaves poorly on such eigenvalues: under
2
a negative 3 can grow in magnitude instead of converging. Eigenvector drift caused by roundoff can amplify the problem.
The stabilized implementation uses a restart with the recommended five iterations:
- run two Gram iterations;
- explicitly reconstruct the intermediate matrix;
- form a fresh Gram matrix;
- run the remaining three iterations.
If 4 is the output after two iterations, the restart forms
5
and reinitializes the inverse-square-root iteration. This adds approximately
6
FLOPs but limits error accumulation. The reported stability analysis, assuming spurious eigenvalues as low as approximately 7, identifies restarting after iteration 2 as the best condition-number-control strategy for the five-step Polar Express coefficients.
The production implementation additionally uses float16 rather than bfloat16 by default, normalizes the input by 8 with 9, applies a safety factor such as scaling the input argument by $1$0, and avoids explicitly materializing some $1$1 additions in numerically sensitive paths. The stabilized method preserves training quality, whereas naive Gram Newton–Schulz can produce loss spikes, infinities, and divergence.
3. Symmetric CuteDSL kernels
The Gram matrices and intermediate matrices satisfy
$1$2
A conventional GEMM nevertheless computes both triangular halves. Dion3’s CuteDSL kernels compute only the lower triangle and copy it to the upper triangle. For a symmetric output $1$3, the kernel computes $1$4 only for $1$5, then writes
$1$6
The kernels use a triangular tile scheduler, an epilogue that writes each computed lower-triangular tile and its transpose, special handling for diagonal tiles, and fusion of expressions such as
$1$7
and matrix-quadratic operations. The implementation targets NVIDIA Hopper and Blackwell GPUs and uses $1$8 tile operation with architecture-specific cluster and thread-block configurations.
The kernels are implemented in roughly 160 lines by wrapping standard CuteDSL GEMM abstractions. For sufficiently large matrices, they achieve approximately $1$9 the speed of cuBLAS GEMM for symmetric products, with or without an epilogue addition. Their largest benefit arises in Gram Newton–Schulz because that algorithm performs many small symmetric operations.
The reported performance effects include:
- 0–1 speedup of the Newton–Schulz routine with kernelized Gram Newton–Schulz;
- 2–3 end-to-end Muon optimizer-step speedup on a single H100 across tested architectures;
- approximately 4 speedup for exposed orthogonalization work estimated for Kimi K2;
- approximately 5 speedup on higher-aspect-ratio models such as Gemma-1B and the tested MoE model.
In quality experiments on Hopper and Blackwell, replacing standard Newton–Schulz with stabilized, kernelized Gram Newton–Schulz preserved validation perplexity to within approximately 6.
4. Fractional row and column updates
Dion3’s fractional update rule avoids orthogonalizing the full momentum matrix. Let
7
be the updated momentum matrix. For a fraction 8, define
9
Dion3 selects a set
0
which by default consists of the 1 rows with largest 2 norm:
3
It forms
4
computes
5
and updates only the selected rows:
6
Unselected rows receive no orthogonalized update during that step, although weight decay remains applied to all rows. Columns can be selected instead of rows. The implementation selects along the sharded dimension when possible; otherwise it chooses the smaller dimension.
When 7, Dion3 reduces to Muon or NorMuon in exact arithmetic, apart from implementation-level effects such as operation ordering and finite-precision behavior.
Error feedback
Dion3 decays only the selected component of momentum. Define the selected matrix embedded in the full shape by
8
The momentum update is
9
or equivalently,
00
Selected rows are damped by 01, whereas unselected rows are retained without damping. Residual momentum therefore accumulates and can cause previously ignored rows to be selected in later steps. This mechanism is analogous to Dion’s error feedback, but Dion uses a low-rank factorization while Dion3 uses direct row or column selection.
Compute and communication reduction
For a selected matrix of shape 02, the relevant multiplication costs become approximately
03
and
04
The rectangular portions can therefore decrease by roughly 05, while communication volume falls approximately linearly:
06
Selection also changes the aspect ratio to
07
making Gram Newton–Schulz relatively more attractive. The paper recommends 08 or 09. Random selection performed only somewhat worse than top-10-norm selection in initial experiments, suggesting that error feedback may be a major contributor to the approximation’s behavior.
Because a full Muon update has Frobenius norm
11
whereas a selected update has norm
12
matching update magnitudes gives
13
The experiments found the corresponding relation
14
for the 1B NorMuon/Dion3 experiments.
5. Megabatched distributed communication
Conventional distributed Muon processing handles approximately 15 matrices per communication round on 16 GPUs, requiring 17 all-to-all rounds for 18 matrices. Every round incurs fixed latency and synchronization overhead, while small per-link payloads fail to saturate the interconnect.
A four-H100 NCCL microbenchmark connected by NVLink reports:
- an all-to-all latency floor of approximately 19;
- approximately 20–21 attributable to host-side dispatch;
- approximately 10% of peak bandwidth for a 256 KiB per-link payload;
- 80–90% of peak bandwidth when per-link payloads reach approximately 16–32 MiB.
Dion3 groups all matrices with the same shape into a single batch. For each shape group, it packs local momentum shards, performs one all-to-all to assemble the matrices, orthogonalizes the batch, and performs one all-to-all or equivalent operation to scatter the results. Since transformers contain only a small number of distinct matrix shapes, the number of communication rounds becomes approximately 22 with respect to model depth rather than 23.
Megabatching does not change the mathematical update, state layout, checkpoint format, or orthogonalization procedure. It changes the timing and organization of tensor movement. On GH200 systems, the reported Muon optimizer-step measurements were:
| Model and configuration | Ordinary batching | Megabatching | Change |
|---|---|---|---|
| 1B, 1 node, 8 FSDP shards | 80.7 ms | 52.1 ms | 24 |
| 1B, 4 nodes, 32 FSDP shards | 61.9 ms | 59.3 ms | 25 |
| 14B, 1 node, 8 FSDP shards | 144.0 ms | 140.8 ms | 26 |
| 14B, 4 nodes, 32 FSDP shards | 94.7 ms | 89.1 ms | 27 |
The largest benefit occurs for the 1B, 8-shard case, where communication dominates and each rank holds many matrices. For the 14B model, Newton–Schulz computation dominates, limiting the effect of communication coalescing.
Dion3 also permits compressed data-parallel synchronization. When row selection can be performed locally, replicas need synchronize only the selected submatrix rather than the full momentum matrix, reducing data-parallel communication by approximately 28. Local per-shard selection avoids global top-29 synchronization but is not equivalent to global top-30 selection.
6. Empirical results
Optimization quality
The principal quality experiments trained dense decoder-only transformers on ClimbMix. The 1B experiment used 100B tokens, FSDP, MXFP8 weights, sequence length 31, and tuned NorMuon as the baseline with
32
Dion3 used the learning-rate transfer rule
33
For 34, the best loss occurred near the predicted learning-rate-transfer line. Dion3 variants consistently tracked below NorMuon and finished approximately 35 cross-entropy points lower, with the best result at 36. The paper presents this as an experimental result rather than a universal theoretical guarantee.
The 3B–14B experiments trained for 10B tokens:
| Model | NorMuon loss | Dion3 loss, 37 | Loss difference | NorMuon accuracy | Dion3 accuracy | Accuracy difference |
|---|---|---|---|---|---|---|
| 3B | 2.269 | 2.257 | 38 | 53.9% | 54.9% | 39 |
| 4B | 2.243 | 2.232 | 40 | 55.2% | 54.9% | 41 |
| 7B | 2.220 | 2.206 | 42 | 56.0% | 56.1% | 43 |
| 14B | 2.189 | 2.162 | 44 | 57.4% | 58.1% | 45 |
Dion3 had lower validation loss at every reported scale and higher downstream accuracy at three of four scales. At 14B, the accuracy improvement was 46 percentage points. In the 47 ablation, Dion3 and NorMuon produced essentially identical curves, ending at 2.2141 and 2.2146, respectively.
Optimizer-step speed
The speed benchmarks successively added symmetric kernels, Gram Newton–Schulz, fractional updates, and megabatching. Timings excluded forward and backward passes and used CUDA-event measurements over 25 steps. Relative to standard Muon on larger models, the reported effects were:
- symmetric kernels plus Gram Newton–Schulz: at least 48 faster;
- fractional updates with 49: an additional approximately 50;
- fractional updates with 51: an additional approximately 52;
- complete speedups of 53 for 54 and 55 for 56.
The abstract summarizes the practical result as up to 57, reflecting variation across measurements.
For a 7B model on four GH200 GPUs, the measured Muon GPU times were:
| Configuration | Optimizer-step time |
|---|---|
| Standard Newton–Schulz, PyTorch | 360.6 ms |
| Standard plus symmetric kernels | 274.4 ms |
| Gram Newton–Schulz, PyTorch kernels | 296.6 ms |
| Gram Newton–Schulz plus CuteDSL kernels | 217.7 ms |
| Fractional update, 58 | 101.5 ms |
| Fractional update, 59 | 59.6 ms |
For a 14B model on eight B200 GPUs, Muon time decreased from 153.8 ms with standard PyTorch operations to 34.8 ms with Gram Newton–Schulz, CuteDSL kernels, and 60. Communication decreased from 5479 MB to 1370 MB, consistent with approximately proportional scaling in 61.
The full-stack 7B GH200 example reports Muon at approximately 62 AdamW optimizer-step time before Dion3’s optimizations and approximately 63 AdamW afterward.
7. Implementation, limitations, and scope
Dion3 is distributed through the open-source dion package as a drop-in Muon replacement. The package supports Muon, NorMuon, Dion3 fractional updates, standard and Gram Newton–Schulz, FSDP2, DDP, mixed sharding, megabatched collectives, and compressed data-parallel synchronization. A separate gram-newton-schulz package provides a drop-in replacement for Muon’s Newton–Schulz routine.
Important implementation details include CUDA graph capture and replay, custom Triton kernels for fused weight decay and selected-row updates, float32 NorMuon normalization, half-precision Newton–Schulz, top-64-norm row selection by default, local per-shard selection in distributed settings, megabatching by matrix shape, fallback to standard Newton–Schulz for square matrices, and explicit splitting of naturally distinct matrices such as SwiGLU up and gate weights before orthogonalization.
Splitting SwiGLU up and gate matrices separately improved Llama-430M perplexity by approximately 65. Attention projections were not split by head because this worsened loss in the reported tests, although the paper notes that head-wise splitting may be beneficial in architectures whose computation treats heads independently.
The principal limitations are:
- Empirical rather than universal fractional-update quality: Dion3 improved loss in the reported ClimbMix experiments, but the generality of this behavior remains unresolved.
- Condition-number effects: forming 66 squares the condition number, making Gram Newton–Schulz less suitable for high-accuracy polar decomposition.
- Half-precision stability: naive Gram Newton–Schulz can diverge, and the recommended restart schedule is tied to the iteration count and coefficient sequence.
- Local-versus-global selection: independent per-shard selection avoids synchronization but differs from global top-67 selection.
- Launch overhead: small models can become launch-bound because fractional selection introduces additional operations and kernel launches; CUDA graphs are important in this regime.
- Hardware and shape dependence: Gram Newton–Schulz benefits most from large aspect ratios, CuteDSL kernels target Hopper and Blackwell, and megabatching is most effective when many small matrices are communicated.
Dion3’s contribution is therefore a coordinated systems-and-algorithmic design rather than a single orthogonalization formula. Gram Newton–Schulz reduces the dependence on rectangular matrix dimensions, CuteDSL kernels reduce redundant symmetric arithmetic, fractional updates reduce computation and communication through a controlled approximation with error feedback, and megabatching reduces collective latency. The reported evidence supports matching or improving Muon and NorMuon loss in the tested settings while substantially reducing optimizer-step time, but the fractional update’s behavior outside those settings remains an empirical question.