Demystifying Manifold Constraints in LLM Pre-training
In 2026, the open-weight model Kimi K3 has about 2.8 trillion total parameters.1 Pretraining is still scaling. But data and compute are not unlimited. The training recipe deserves as much attention as model size. Can we get more from pretraining by changing how weights learn, rather than only adding data or compute?
One clue comes from the weights themselves. Kaiyue Wen reported an unusual pattern in Muse Glimmer: the matrices he examined had nearly the same root-mean-square (RMS) value, about 0.006, across layers and matrix types. RMS measures the typical size of their entries.2
The comparison below shows the weight-RMS patterns in Qwen3-8B and Muse Glimmer.
Comparison between Qwen3-8B and Muse Glimmer
In these plots, weight RMS varies across Qwen3-8B layers and matrix types. Muse Glimmer shows a much more uniform pattern near 0.006.
Qwen3-8B
View larger image · scroll to inspect
Muse Glimmer
View larger image · scroll to inspect
The plots use different vertical-axis ranges. Compare the patterns and labeled values, not bar heights alone.
Why might keeping weight scale fixed help a model learn? That's the puzzle we want to explore.
Normalization itself is not new. What matters here is what we normalize. LayerNorm and RMSNorm act on activations—the signals passed through a model. Other methods act on the updates or the weights themselves.34
Some methods act on more than one object. Hyperball and SSO, for example, also control update norms.89
But adding a weight constraint is more than a rescaling trick. The entries can still change, but not in every possible way. Take the Stiefel constraint discussed in Thinking Machines Lab's Modular Manifolds. It keeps a matrix's columns orthonormal: perpendicular to each other and unit length. Such a matrix cannot become rank-deficient and collapse an input direction to zero. This restricts the transformations the layer can learn, not just the size of its weights.11
Different constraints leave different kinds of freedom. When the allowed weights form a smooth manifold, training becomes a manifold-constrained optimization problem. MCSD, for example, provides algorithms for such problems, including Stiefel constraints.10
From normalization to constrained optimization
Let be a weight matrix, and let be the training loss. A constraint limits the allowed weights to a set :
For a matrix with , the Stiefel constraint is
Its columns are orthonormal, so all singular values are one. The matrix has full column rank and preserves input-vector lengths. A fixed Frobenius norm does not impose these same restrictions.11
Many manifold algorithms choose a direction in the tangent space. This space describes changes that preserve the constraint to first order. For the Stiefel manifold, a tangent direction satisfies
A finite step can still leave the manifold. A retraction maps the candidate weights back to it. Section 0 introduces the update procedure used in our study.1112
One question is how to design an optimizer for these constraints. Another question is how these constraints change training.12 In this blog, we answer the following question to explain the advantages of weight normalization.
How do manifold constraints affect the training dynamics of modern LLMs?
We study activation scales and changes in weight direction, in addition to the final loss.12 First, we define the constrained problem and introduce the optimizer that we use to study it.
Preparation: Candidate Constraints and the Optimizer
Before we explore what weight constraints change, let's define the training problem and choose an optimizer.
Let be a weight matrix. Its input dimension is , and its output dimension is . We minimize the training loss , while keeping in a constraint set :
We start with two ways to fix matrix scale. The Frobenius norm is the square root of the sum of squared entries. The spectral norm is the largest singular value. It measures the largest factor by which the matrix can stretch an input vector.
The two constraint sets are
The radius sets the required norm. Both constraints leave the individual entries free to change.1
Both constraints act on the whole matrix. Later, we will ask whether each row or column needs its own norm constraint.
To train under these constraints, we propose the Msign-Aligned Constrained Riemannian Optimizer (MACRO). Its two variants are MACRO-fro and MACRO-spec.
Why not simply use MuonH or SSO? We want a practical testbed with a convergence guarantee. MuonH normalizes weights and updates, without an explicit tangent-space projection. SSO solves a constrained direction problem through an inner iterative search.45
MACRO builds on the MCSD approach to balance manifold optimization with training cost. It uses a single-loop update, with a convergence guarantee under the paper's assumptions. Here is how the pieces fit together.61
How does MACRO update the weights?
At step , MACRO forms momentum from the current gradient and previous momentum. It then projects onto the tangent space at , giving . This explicit projection distinguishes MACRO from MuonH and is central to our convergence analysis.14
MACRO then follows the spectral steepest-descent framework to compute the update direction:
For a full-rank matrix, this operation keeps the singular vectors and sets the singular values to one.
Next, we scale this direction with the constraint radius:
Here, is the Frobenius norm for MACRO-fro and the spectral norm for MACRO-spec.
The constraint fixes the weight scale. This rescaling controls the proposed update size relative to it. We return to this update-to-weight ratio in Section 3, where small updates can disappear during rounding.1
We then take a step with learning rate . A retraction returns the candidate weights to the constraint set:
Explore the five stages below to see what each part contributes.1
Select a stage to see its role.
Compute the exponential moving average of the gradients.
Convergence result
Theorem 1 gives a convergence bound under the stated assumptions. With the specified learning rate and momentum, the bound is after steps. This matches the rate for stochastic optimization of general smooth, nonconvex functions.1
How do we choose the radius?
We now have a constraint and an update rule. But how large should the constraint be?
The same radius can mean different things for different matrices. The Frobenius norm combines squared values from all entries. The spectral norm measures the largest stretch along an input direction. So we choose the radius from the layer's effect on its inputs, not from the norm value alone.
Our aim is to control activation scale as layer widths change. This shares a goal with width-aware parameterizations such as μP.7
Consider the linear layer . Let and be the RMS values of its inputs and outputs. We choose dimension-dependent radii and leave a separate multiplier for tuning. For normalized Gaussian initialization, the rules are:2
Frobenius
Expected squared output RMS:
Spectral
Output RMS bound:
For the assumptions and probability bounds, open Proposition 1 below. The formulas account for the input dimension and output dimension . The multiplier is independent of these dimensions. Does this extra hyperparameter make constraints harder to use? In Section 1, we show that training is robust to changes in this multiplier when RMSNorm and weight constraints work together.
Proposition 1: Radius selection at initialization
Let , , and . Define
Let have independent standard normal entries. The matrix is independent of .
Frobenius constraint. Set
Then
Spectral constraint. Set
The output satisfies the deterministic bound
For any and ,
with conditional probability at least
The probability is over , for a fixed .
Theorem 2 in Appendix C.2 gives concentration bounds for both initializations. With and , these bounds give with high probability as the widths grow. The aspect-ratio condition is stated in Remark 1 of that appendix.2
What if we constrain each row or column?
Earlier, we fixed one norm for the whole matrix. Would finer control help?
The Frobenius sphere fixes the total squared norm. It does not fix how that total is divided among rows or columns. Oblique manifolds add constraints at this finer level. An output-oblique constraint gives every row the same fixed norm. An input-oblique constraint does the same for columns.3
We match each oblique variant to the same total Frobenius norm as MACRO-fro. This keeps the overall scale fixed while changing how it is shared.
In these tests, neither oblique variant improves validation loss over the matched Frobenius sphere. We therefore focus on the Frobenius and spectral spheres in the following sections.3
Compare Frobenius and oblique constraints
The matched radii are
| Constraint | Required norm | Radius |
|---|---|---|
| Frobenius sphere | One norm for the matrix | |
| Output-oblique | One fixed norm for every row | |
| Input-oblique | One fixed norm for every column |
Each choice gives . The first panel compares validation loss at each tested learning rate. Positive differences mean that the oblique variant has higher loss. The second panel compares maximum row norms during training.
(a)
Validation-loss difference from MACRO-fro
Validation-loss difference
Positive values mean that the oblique method has higher validation loss.
Select a point to see the loss values.
(b)
Maximum row norm during training
Maximum row norm
Select a curve to highlight it.
Neither oblique variant reduces validation loss in this comparison. MACRO-fro and MACRO-iobl also show similar maximum row norms during training.3
With the constraints and radii in place, we can return to the question from the introduction. RMSNorm already rescales activations. What changes when we also fix weight scale?
Manifold Constraints and RMSNorm
The radius analysis in Section 0 links weight scale to the output scale of a linear layer. Weight constraints control weight scale through the radius. RMSNorm can adjust activation scale through its learned parameter . Both mechanisms can therefore affect activation scale, but through different parts of the model.1
For an input vector , RMSNorm applies a learned scale :
The symbol denotes element-wise multiplication. RMSNorm divides the input by its RMS value, then scales each output coordinate with .
If we increase the constraint radius, does RMSNorm adjust in response? Figure 1.1 tracks across different constraint radii, where is the training step.
Figure 1.1 · RMSNorm scale
RMSNorm scale norm ‖γₜ‖₂
Compare the curves at the same training step.
Larger radii correspond to smaller learned values of for both constraints. In other words, RMSNorm adjusts its learned scale in the opposite direction. This compensation can reduce the effect of weight-scale changes on activations.1
The two mechanisms therefore have overlapping roles. We next test the constraints after we remove the standard learnable RMSNorm layers.
Do constraints help without the standard learnable RMSNorm layers?
We use a modified Qwen3-like 330M model for this test. We remove all learnable RMSNorm layers. However, we keep RMS normalization after some nonlinear blocks, including attention blocks. We also keep QK-norm. Weight constraints control the activation scale only indirectly.
We replace SwiGLU with Norm-Gated SwiGLU. It normalizes the Swish branch before the element-wise product. This keeps the output scale of the same order as the output scale of ReLU. The following table shows the ablation architecture.2
| Component | Standard model | Modified model |
|---|---|---|
| Standard learnable RMSNorm layers | Present | Removed |
| Feed-forward activation | SwiGLU | Norm-Gated SwiGLU |
| Parameter-free RMSNorm after attention | Absent | Present |
Norm-Gated SwiGLU
Let be the input, and let be the two projection matrices. Define the two branches:
Norm-Gated SwiGLU computes
The division controls the RMS scale of the Swish branch before multiplication.2
Figure 1.2 compares final validation loss across learning rates from . Lower loss is better.
Figure 1.2 · Modified 330M model
Validation loss
Lower loss is better.
Muon diverges at . Both MACRO variants remain finite at all five learning rates. The lowest losses are 2.813 for Muon, 2.758 for MACRO-fro, and 2.739 for MACRO-spec.3
These results show that weight constraints improve training stability and validation loss in the ablation architecture.
How sensitive is training to the radius?
Weight constraints help stabilize training, but our modified model still uses parameter-free normalization. The two mechanisms have overlapping roles, rather than one simply replacing the other.2
That overlap may offer another benefit when both mechanisms are present. Recall Figure 1.1: larger radii corresponded to smaller learned RMSNorm scales. This compensation suggests that training may be less sensitive to the radius.1
To test this, we return to standard Qwen3 models with learnable RMSNorm. We vary the radius multiplier in the 240M and 600M models. Each method keeps the same learning rate across radius settings.
Figure 1.3 compares final validation perplexity (PPL) at . Lower PPL is better.4
Figure 1.3 · Standard architecture
Validation perplexity (PPL)
Lower PPL is better.
At 600M, PPL changes little over . MACRO-fro ranges from 15.296 to 15.329. MACRO-spec ranges from 15.277 to 15.312. At 240M, MACRO-spec changes more than MACRO-fro across the same range.4
This result agrees with the compensation in Figure 1.1. Learned RMSNorm scales can offset changes in weight scale. This helps explain why a range of radii gives similar performance.
Takeaway
Manifold constraints and RMSNorm have aligned roles: constraints improve stability in the ablation architecture, while performance with standard RMSNorm is relatively insensitive to the radius multiplier.
Manifold Constraints and Weight Decay
RMSNorm is not the only part of the training recipe that controls scale. Weight decay acts directly on the weights. If we now fix their norm, what is left for weight decay to do?
How does weight decay affect rotation?
To see the connection, consider one weight matrix as a vector . Let be its optimizer increment, including the learning rate but not weight decay. The update is
where is the learning rate and is the decay coefficient.
The increment can change both the size and direction of the weights. We split it into a radial component , parallel to , and a tangential component , perpendicular to it. Weight decay combines with the radial component. Figure 2.1 shows the same step before and after this split.
Figure 2.1 · Radial and tangential updates
(a) Optimizer update and decay
Add the optimizer update and the weight-decay update.
(b) Radial and tangential components
Combine the radial component with weight decay. Keep the tangential component unchanged.
The tangential component turns the weight vector. A finite tangential step can also increase its norm. For a small total step, the rotation angle in radians is approximately
The same tangential update gives a larger angle when the weight norm is smaller. So weight scale also affects how far the weights turn.
What happens to that scale over many steps? In fixed-learning-rate experiments, Kosson et al. observed stable weight norms and average rotation after an initial transient.2
A simple random-update model illustrates how this balance can form. Under its assumptions, the expected squared weight norm approaches a fixed level. This is a balance that develops during training, not a norm enforced after every step.
A simple model of norm equilibrium
We use a random-update model to explain the balance. The model uses a fixed learning rate and a fixed decay coefficient.
Let be the update before weight decay. The weight update is
The model uses two conditions at every step:
The expectation is over different sequences of random updates. The first condition sets the expected inner product to zero. Individual updates need not be perpendicular to the weight.
The second condition keeps the expected value of constant across steps. Individual update sizes can still change.
Let , with . The update equation gives
Thus,
The balance point is
When , the increase is more than the decrease. When , the decrease is more than the increase.
The difference from the balance point satisfies
Because , the absolute difference decreases to zero. This result concerns the expected squared norm. The norm can still change at each step.
MACRO takes a different route: it fixes the required norm after each update. Recall from Section 0 that it also scales the proposed update with this norm. Together, these choices give us a more direct way to control rotation.
How does the Frobenius constraint control rotation?
Start with MACRO-fro. It keeps and scales the proposed step to approximately in the same norm. Retraction restores the radius without changing the candidate's direction.
We measure the angle between consecutive weight matrices, treating each matrix as a vector. For a small step that is nearly perpendicular to ,
The radius cancels. Under these conditions, a fixed step size gives a nearly fixed angle.3 Figure 2.2 checks this prediction across different fixed step sizes.
Figure 2.2 · Frobenius constraint
Whole-matrix rotation
Rotation angle (rad)
Select a curve to inspect its rotation angle.
The reported angles remain nearly constant at each setting. Larger step sizes give larger angles. The paper calls this static global rotation: the whole-matrix angle stays nearly steady in these runs.3
The exact Frobenius angle
Let . The whole-matrix angle is
Let be the matrix-sign direction from Section 0. Define its alignment with the weights:
For the normalized update without the small numerical stabilizer, Appendix C.3 gives
For small ,
When is also small, this reduces to . The approximation therefore uses both a small step and small alignment.3
How does the spectral constraint change rotation?
Does fixing the largest singular value give the same kind of control? The strongest stretch is fixed, but the input and output directions associated with it can still change.
Here, we track the leading right singular vector , the input direction that the matrix stretches most. The leading left singular vector gives the corresponding output direction. We measure how these directions change between steps, rather than the whole-matrix angle used above.
The spectral gap separates the largest and second singular values. A smaller gap permits larger changes in the leading directions for the same step size. Their rotation can therefore depend on the changing spectrum, not only on the learning rate.4
Figure 2.3 follows these input and output directions during training.
Figure 2.3 · Spectral constraint
Leading singular-direction rotation
Left singular direction u
Principal angle (rad)
Right singular direction v
Principal angle (rad)
Compare the left and right angles at the same setting.
The measured angles vary during training, with similar trends on the left and right. The paper calls this adaptive subspace rotation.4 Fixing a norm does not give both constraints the same rotation behavior.
How we measure spectral rotation
Let and be the leading left and right singular vectors of . The spectral constraint gives
We measure their changes by
The absolute values treat opposite signs as the same singular direction. These angles are different from the whole-matrix angle in Figure 2.2.
Set . For small angles, the paper gives the estimate
Here, is the second singular value. The denominator is the positive spectral gap used in this estimate. A smaller gap permits a larger rotation for the same step size. This is an estimate, not an equality.4
Does weight decay still improve training?
We can now return to the question at the start. Once the constraint controls weight scale, does weight decay still add a benefit?
We compare and on a 330M Qwen3-like model. Each pair uses the same learning rate and all other settings. The table reports validation loss.
Table 2.1. Each cell shows loss without decay / loss with decay.
| Optimizer | |||
|---|---|---|---|
| MACRO-fro | 2.742 / 2.742 | 2.730 / 2.729 | 2.718 / 2.718 |
| MACRO-spec | 2.728 / 2.727 | 2.715 / 2.715 | 2.783 / 2.783 |
The paired losses differ by at most at the reported precision. Additional weight decay gives little benefit in these tests.5
Other constrained optimizers
The paper also tests MuonH-fro and MuonH-spec with the same decay settings.
| Optimizer | |||
|---|---|---|---|
| MuonH-fro | 2.740 / 2.740 | 2.722 / 2.722 | 2.717 / 2.717 |
| MuonH-spec | 2.728 / 2.729 | 2.715 / 2.715 | 2.766 / 2.766 |
These paired losses also differ by at most .5
Weight-decay tuning for Muon
A separate 240M experiment varies both the learning rate and weight decay for Muon. The table reports validation perplexity (PPL).
| Learning rate | ||||
|---|---|---|---|---|
| 0.008 | 21.348 | 21.020 | 20.845 | 21.168 |
| 0.016 | 20.972 | 20.680 | 20.676 | 21.874 |
| 0.032 | 20.691 | 20.583 | 20.848 | 23.345 |
The best tested decay coefficient changes with the learning rate. The lowest Muon PPL is 20.583. MACRO-fro reaches 20.579 without decay on the constrained matrices. MACRO-spec reaches 20.502.6
Takeaway
MACRO fixes weight scale after each update. Frobenius constraints give nearly steady whole-matrix angles in the fixed-step runs. Spectral constraints allow changing leading-direction angles. Additional weight decay gives little benefit in these tests.
So far, we have asked how far the weights turn. Next, we ask whether a small proposed update changes the stored weight at all.
Manifold Constraints and Low-Precision Training
We have looked at how far an update turns the weights. But that assumes the update changes the stored values. With limited precision, rounding can cancel a small update before it takes effect.
A common mixed-precision setup uses low precision for much of the forward and backward passes. It still keeps FP32 master weights—the parameter values that receive optimizer updates. This can speed up computation and reduce activation memory.1
We go a step further: we store the master weights themselves in BF16, with no extra FP32 copy. This saves additional weight-storage memory, but each updated weight must be rounded back to BF16. Here, we use round-to-nearest.2
Start with one stored weight and a proposed update . The optimizer proposes , but BF16 stores only certain values. Rounding selects the nearest one. If the proposed value stays inside the original rounding interval, the stored weight does not change. We call this update cancellation.
At , adding rounds back to . The update is nonzero; the stored change is zero.2
Proposed value 1.502Stored weight 1.5Actual change 0
Rounding cancels this update. Local ULP: 0.0078125.
Now keep the update at and change the weight. At , the stored value changes to . At , the same update causes no change because the gap between nearby BF16 values is larger.
The update is the same. Only the weight scale changed. So update size alone is not enough: we need to compare it with weight size.
Rounding thresholds
Let denote rounding to the nearest BF16 value. The stored result is
The local gap between neighboring values is a unit in the last place (ULP). If the update is smaller than half the gap in its direction, rounding keeps the original weight.
For the values in Figure 3.1, this condition is
At , the local gap is . Half that gap is , so the update is canceled. At an exact midpoint, the example uses round-to-nearest, ties-to-even.2
The relative threshold for normal BF16 values is about to . The example compares neighboring values directly, including the direction of the update. This is a coordinate-level rule, not a fixed cancellation threshold for a whole matrix.
How do constraints control the relative update size?
For one coordinate, the relative size is . Recall Step 4: Rescale in Section 0. It controls the proposed step size relative to the weight scale. For a matrix, we measure this relationship with the update-to-weight ratio:
Here, is the proposed update before retraction and rounding. For Muon, it excludes weight decay. The ratio also equals the ratio of their RMS norms, so it compares typical entry sizes.2
MACRO-fro fixes the weight norm at and scales the proposed step with the same radius. For the idealized normalized update,
The radius cancels. The relative update follows the learning rate rather than weight growth.
Muon does not tie the update size to the weight norm in this way. If its weights grow without a matching increase in update size, falls. MACRO-spec also controls relative scale, but its ratio depends on the weight spectrum.2
Ratios for the three optimizers
For a matrix , let . The Frobenius and RMS ratios are equal:
For ideal full-rank matrix-sign directions, the three ratios are
The effective Muon coefficient includes its update scaling. The Muon update excludes weight decay. Define the spectral factor
This factor describes the weight spectrum. The formulas use exact norm constraints and omit the small numerical stabilizer.2
For Figure 3.2, Muon ratios use recorded BF16 weight norms and an idealized update estimate. They are estimates of proposed updates, not measurements of the final stored change. The weight norm is measured; the proposed-update ratio is estimated.
This gives us two changes to watch: weights can grow, or updates can shrink. Either can make a proposed update small relative to its weight.
How does weight growth affect Muon?
Does this scale effect appear in training? Figure 3.2 compares weight norms, estimated relative updates, and the loss gap over the same training period.
What about weight decay from Section 2? Its shrinkage can also be too small to change a stored BF16 weight.3
The upper plot shows a selected matrix. The lower plot shows the training-loss gap, defined as BF16 loss minus FP32 loss. A positive gap means that BF16 training has higher loss. Compare Weight norm and Update-to-weight ratio with the gap below.
Solid: BF16. Dashed: FP32.
Weight norm ‖Wₜ‖F
MeasuredTraining-loss gap · BF16 − FP32
Move across either plot to compare the same training step. Click to lock the cursor. Use the slider on a touch screen.
Chart settings and values
Choose the first and last steps. Select the scale option to fit the loss axis to the selected range.
Hold Shift and drag to zoom.
In the key-projection example, the BF16 weight norm rises early and becomes much larger than the FP32 norm. Muon also develops a large training-loss gap early. The smaller relative update provides a scale-based explanation for this gap.3
But weight growth is only one way to reduce the ratio. Even with a fixed norm, the learning rate can still fall.
Why does the MACRO loss gap increase late in training?
Fixing the weight norm does not fix the relative update throughout training. Recall the idealized MACRO-fro relation . Cosine decay lowers the learning rate, so it also lowers .
How much update magnitude might be lost as this ratio falls? We use a simple Gaussian model to connect relative scale with cancellation. The model uses the same ratio and estimates the fraction of absolute-update magnitude that remains.2
This fraction is update retention. It measures how much proposed magnitude survives the model's cancellation rule, not how many coordinates survive. As falls, the model retains less of the proposed magnitude.
Inside the cancellation model
We model a weight coordinate and its proposed update as independent Gaussian variables:
Their means are zero. We set their standard deviations to the corresponding matrix RMS norms. This gives the same relative scale as the training analysis:
The model cancels an update when . It leaves the other updates unchanged:
We use as a BF16 reference. This threshold rule models cancellation, not every effect of BF16 rounding.2
The retained absolute-update fraction is
For example, means that 80% of the proposed absolute-update magnitude remains on average. This is not the fraction of coordinates that survive. The fraction of canceled coordinates is
At , the model cancels half the coordinates but retains about 70.7% of the absolute-update magnitude. The canceled coordinates contribute less magnitude on average.
For the idealized MACRO-fro relation ,
When is much larger than , the model retains most of the update magnitude. As falls, retention decreases. Thus, fixed weight scale does not remove the effect of learning-rate decay.
Figure 3.3 uses this relation for MACRO-fro. It compares the estimate with measured loss gaps; it does not predict a numerical loss gap. The figure has no MACRO-spec retention curve because matched spectral-factor records are unavailable.
Figure 3.3 applies the model to the MACRO-fro learning-rate schedule. The upper plot shows estimated retention. The lower plot shows measured training-loss gaps for both MACRO variants. Select Late training to compare the two patterns.
Retention measures absolute-update magnitude. Cancellation counts coordinates.
MACRO-fro · retained absolute-update fraction
Model estimateSymlog shows zero and negative gaps, with a linear region from −0.001 to +0.001.
MACRO training-loss gap · BF16 − FP32
Step 9,000MACRO-fro · Loss gap +0.0165MACRO-spec · Loss gap +0.0310Model for MACRO-fro: retained magnitude 9.29% · canceled coordinates 94.07%
Chart settings and values
After warmup, the MACRO loss gaps stay small through most of training, then increase near the end. For MACRO-fro, this period also has lower estimated retention. The model helps explain why a small gap can remain even with controlled weight scale.2
The constraint does not change BF16 precision. As the learning rate falls, some updates can still become too small.
How much does this matter in the final model? The table compares final validation loss between each method's BF16 and FP32 runs:
| Optimizer | 240M | 600M |
|---|---|---|
| Muon | +1.1470 | +0.9394 |
| MACRO-fro | +0.0172 | +0.0239 |
| MACRO-spec | +0.0317 | +0.0476 |
Both MACRO variants have a much smaller BF16 penalty in these comparisons.4
Takeaway
Weight scale affects whether small updates survive rounding. MACRO controls the update-to-weight ratio and shows much less BF16 degradation than Muon in these tests. Learning-rate decay can still leave small updates at risk late in training.
Standard Pre-training Results
A smaller BF16 penalty is useful. But does MACRO also improve standard pretraining, and what does it cost?
We started this blog by asking whether a different training recipe could get more from pretraining. We now return to that practical question.
How does MACRO perform across model sizes?
We train Qwen3 models with 240M, 600M, and 1.2B parameters on C4. Each configuration uses 40 training tokens per parameter and five random seeds. Figure 4.1 compares final validation perplexity (PPL); lower is better.1
Figure 4.1 · Standard pre-training
Final validation perplexity
Lower is better. Select a model size.
Both MACRO variants have lower PPL than Muon at all three tested sizes. The best constrained method varies with model size.1
Benchmark details
The standard benchmark uses Qwen3 models on C4, with TorchTitan as the training framework. Each configuration uses 40 tokens per parameter and five random seeds.1
Figure 4.1 retains the reported means and ± values. It compares Muon, MuonH-fro, MuonH-spec, FSO, SSO, MACRO-fro, and MACRO-spec where results are available.
MACRO-spec has the lowest mean PPL at 240M. MuonH-fro has the lowest mean at 600M. MACRO-fro has the lowest mean at 1.2B.
FSO and SSO are not reported at 1.2B. The source attributes this omission to their high per-step costs. Missing results remain labeled Not reported.
The 240M efficiency test uses plain implementations without specialized kernels. Metrics are averaged over training steps and five seeds.2
End-to-end step time measures seconds per training step. TPS/GPU reports token throughput per GPU. MFU means model FLOPs utilization. Lower step time is better; higher throughput and MFU are better.
What is the per-step cost?
In Section 0, we chose a single-loop optimizer to keep the testbed practical. What does that choice cost per training step?
Figure 4.2 compares the 240M model using plain implementations without specialized kernels. Start with end-to-end step time. The other views show token throughput and model FLOPs utilization.2
Figure 4.2 · 240M efficiency
Single-loop and double-loop cost
Lower is better.
Plain implementations · no specialized kernels · average over steps and five seeds
MACRO-fro takes seconds per step, compared with for Muon. That is about ms more, or . MACRO-spec costs more because its tangent projection and retraction use power iteration. Both MACRO variants remain much faster than the double-loop solvers in this test.2
Does MACRO require learning-rate warmup?
We have already revisited weight decay. One more part of the training recipe is worth checking: how much warmup do these methods need?
Figure 4.3 compares four warmup fractions in the 240M and 600M models. It reports final validation PPL.3
Figure 4.3 · Additional training result
Warmup sensitivity
Lower PPL is better. Lines connect only the tested settings.
Final validation PPL
Both MACRO variants give their lowest PPL at warmup in these sweeps. Muon does best at for 240M. At 600M, its results at and are nearly equal. MACRO can therefore train without warmup in the tested configurations.3
Takeaway
A fixed weight norm does more than limit weight magnitude. It interacts with activation normalization, regulates rotation, and controls the relative scale of low-precision updates. These interactions help explain the benefits of adding constraints, beyond a lower final validation loss.