Hey @KellerJordan, big fan of Muon — we've been using it in our framework.
We're developing MuonTR, a Muon variant specialized for deterministic Token-Routed MoE (no learned router, no top-K, CUDA graph compatible). Architecture is under review at TMLR.
Key additions on top of Muon:
Per-expert Newton-Schulz: orthogonalizes each expert slice [H, I] independently instead of the full [E, H, I] tensor, so each expert maintains its own orthogonal direction
Per-expert LR scaling: experts seeing fewer tokens (Zipf routing) get higher LR
Expert-aware weight decay: lighter decay for routed experts to preserve specialization
Gradient normalization by token count: prevents high-frequency experts from dominating
Draft implementation: https://github.com/Complexity-ML/complexity-framework/blob/main/complexity/training/muon_tr.py
Currently training a 384M Token-Routed MoE vs dense baseline. With standard AdamW the loss gap converges from +0.31 to +0.09 but plateaus. We plan to benchmark MuonTR next.
Would love your thoughts on the per-expert orthogonalization approach — does it make sense from the Newton-Schulz perspective to orthogonalize each expert slice separately?
References:
Architecture: https://openreview.net/forum?id=jZq6EVboC6 (TMLR, under review)
Hey @KellerJordan, big fan of Muon — we've been using it in our framework.
We're developing MuonTR, a Muon variant specialized for deterministic Token-Routed MoE (no learned router, no top-K, CUDA graph compatible). Architecture is under review at TMLR.
Key additions on top of Muon:
Per-expert Newton-Schulz: orthogonalizes each expert slice [H, I] independently instead of the full [E, H, I] tensor, so each expert maintains its own orthogonal direction
Per-expert LR scaling: experts seeing fewer tokens (Zipf routing) get higher LR
Expert-aware weight decay: lighter decay for routed experts to preserve specialization
Gradient normalization by token count: prevents high-frequency experts from dominating
Draft implementation: https://github.com/Complexity-ML/complexity-framework/blob/main/complexity/training/muon_tr.py
Currently training a 384M Token-Routed MoE vs dense baseline. With standard AdamW the loss gap converges from +0.31 to +0.09 but plateaus. We plan to benchmark MuonTR next.
Would love your thoughts on the per-expert orthogonalization approach — does it make sense from the Newton-Schulz perspective to orthogonalize each expert slice separately?
References:
Architecture: https://openreview.net/forum?id=jZq6EVboC6 (TMLR, under review)