Manufactured Rank Is a Spectator
Trying to reproduce a free-rank trick for LoRA, and finding the extra rank does no work
This post is the companion to a preprint, Manufactured Rank Is a Spectator: A Causal Test of Nonlinear Low-Rank Adapters in Task Adaptation. Code, pre-registration, and the data artifact are on GitHub at captainpete/rank-content-ablation.
LoRA fine-tunes a frozen weight by adding a low-rank update , where and are thin matrices of rank .1 The rank is both the constraint and the point of the method: the update can move the weights in only directions, and that is what keeps the parameter cost small. A recent line of work argues that the ceiling can be lifted for free. Put an element-wise nonlinearity between the factors, , and the resulting matrix has rank well above with no parameters added. Sine-LoRA, which takes , is the most developed version, and it reports consistent gains at the same parameter budget.2
I came to this hoping it would hold. The claim, if it is true, is not really about LoRA: it says a cheap nonlinearity can manufacture capacity that a linear map of the same size cannot reach, and that is the sort of thing you would want to use wherever a low-rank bottleneck shows up. So I set out to reproduce the effect, expecting to confirm it and then look for where else it applied, though what began as reproducing it soon turned into testing whether the extra rank was doing any work at all.
The case for the trick rests on two things, a theorem and a correlation. The theorem is solid: applying a sinusoid element-wise to a low-rank matrix provably raises its rank.3 The correlation is real as well, in that across configurations the updates with higher realized rank tend to score better. What gets inferred from the pair is that the manufactured rank is what produces the gain, and that inference is the part nobody had tested directly.
What manufacturing rank requires
It helps to start with the mechanism. Applying a sinusoid to a single number does nothing to rank; what matters is how acts on the entries of the matrix . Near zero, , so the sinusoid reproduces its input up to a scale factor, leaving the directions and the rank unchanged. New rank appears only once the argument is large enough that the curve bends, past , where stops being monotone and begins folding its input back on itself. A fold can send two different entries of to the same output, or two equal entries to different outputs, and that re-routing is what fills in new singular directions.
So the rank is not quite free. It has to be paid for in amplitude: the entries of have to be large enough to reach the bend, and how far they are driven, , is what I will call the fold depth. The slider below shows the trade-off. At low frequency the realized map (green) sits on the linear reference (grey) across the whole range the trained factors occupy, and no rank is added; raising the frequency makes the curve fold, but notice what that takes.
Keep the shaded band in mind, because the argument keeps returning to it. It marks where the entries of a trained actually sit. On a real adapter some of those entries do reach past the bend, so the fold genuinely happens and new directions appear. What the rest of the post turns on is how much of the update those directions actually carry.
A tail of tiny singular values
Suppose the fold does happen, and look at what it produces. There are two ways to count the rank of a matrix. The numerical rank counts singular values above a small threshold, so any direction with a non-zero foothold counts, however faint. The stable rank weighs each direction by its energy, , so a direction carrying almost no Frobenius mass barely registers.4 On a trained sine adapter the two measures come apart.
count the bars
weigh the bars
beyond rank 4
The count climbs and the energy does not. At a frequency that trains well, the numerical rank runs into the hundreds while the stable rank stays barely above one, because the manufactured directions form a long tail of singular values, each one tiny beside the top handful. About two percent of the update’s energy sits beyond the nominal rank .5 A correlation between rank and accuracy cannot say whether that two percent is a small real signal or just low-energy ripple, which is the kind of question only an intervention can answer. And there is plenty for the intervention to rule out, because the sinusoid changes more than the rank: near the origin it rescales the effective learning rate, the bound caps the update, and the factor gates the gradient by a data-dependent amount.6 Any of these could produce an optimization-side benefit while the extra rank comes along for the ride.
It helps to narrow the target first, because the “nonlinearity as rank” banner is broader than the methods it actually fits. Some adapters filed under it never raise the realized rank at all: the generative RBF construction genLoRA, named for the principle, proves as its own Proposition 3.1, because its nonlinearity acts on how the factors are generated and never on their product.7 The rank-mechanism question does not apply to it. The methods that genuinely fold the product are the sinusoidal ones, sine-LoRA and loran, and those are the two I test here.
Asking the update directly
The most direct way to find out whether a part of a trained model matters is to remove it and see what breaks. The update is a fixed matrix once training finishes, and its singular value decomposition gives its directions sorted by energy, so I can take a trained adapter, operate on that spectrum, bake the modified update back into the frozen weights, restore the trained head unchanged, and re-evaluate on held-out data. Nothing about training changes; only the realized moves. The battery, which I call Rank-Content Ablation, is four interventions, each aimed at a different question.
-
Truncate to the nominal rank. Throw away every direction beyond the original , keep the top- part, and re-score. This asks the headline question head-on: if the manufactured rank is carrying the load, deleting it should hurt. On its own it is not conclusive, because the discarded tail holds energy as well as rank, so a drop could mean lost magnitude rather than lost content.
-
Remove the same energy from random directions. This is the intervention that separates rank from energy. Rather than deleting the manufactured directions, take an equal Frobenius mass out of random ones, leaving the top- subspace exactly intact, and set the two side by side.8 If the truncation hurts and this does not, the damage was the rank content specifically; if both hurt the same, it was only ever the energy. A rank-versus-accuracy correlation cannot draw that line; this intervention can.
-
Keep only the tail. Run the truncation in reverse: discard the top- part and evaluate the manufactured rank by itself. If it encodes anything the task uses, it should clear the no-adapter baseline; if it is a byproduct, it sits at the floor.
-
Graft the tail onto a plain LoRA adapter. Take the sine adapter’s tail spectrum, attach it to a genuinely linear adapter that never folded anything, and re-score. If an inflated spectrum helped in itself, adding one should help even here. This last one is a placebo, so it can only support the null, and it is kept out of the affirmative case.
Each intervention reads out as a single number, the retained gain fraction , where is the frozen model’s score with no adapter. An of one means the intervention changed nothing; an of zero means the score fell all the way back to the base. I fixed the decision rule in advance, assigning the load-bearing and byproduct outcomes to non-overlapping bands of , so the result could not be reinterpreted after the fact.9
The result
Here is one trained sine adapter on CoLA, a representative case, with the interventions applied to it. The frozen model scores 18.2 and the intact adapter lifts that to 66.1; the question is how much of the lift each intervention leaves behind.
the trained update, untouched. The lift over the frozen model is the whole quantity η measures.
Removing the manufactured rank costs nothing. Truncating back to rank reproduces the intact score to three figures, and stays there after the norm is rescaled, so the result is not a hidden magnitude effect. Removing the same amount of energy from random directions costs nothing either, which settles the confound: there is no energy penalty to account for, since energy taken out at random is as harmless as energy taken out along the manufactured directions. The manufactured tail on its own does not clear the no-adapter floor; evaluated alone, the rank the fold produced scores exactly what the untrained model scores. And grafting that tail spectrum onto a plain LoRA checkpoint, the fourth intervention, barely moves its score, a thousandth of a point on average, so the inflated spectrum is inert even on a genuinely linear adapter.
This is not a single lucky checkpoint. Across all forty trained sine adapters on the primary tier, truncation never drops below 0.995 and tail-only never rises above 0.001. Extending the test across the full frequency sweep leaves the reading unchanged, with truncation lossless at every frequency in it. More manufactured rank does not make any of it load-bearing. The result is not specific to the sine function either, since loran manufactures rank through a different element-wise map and comes back just as inert, truncating losslessly with its tail at the floor.10 On the FP16 GLUE tier the verdict is unanimous across every trained checkpoint I produced.
At this point I had a clean, pre-registered, unanimous null, and the obvious thing to worry about had shifted from sine-LoRA to the instrument itself.
Whether the test can fire
There is an obvious objection. If the manufactured tail holds only two percent of the energy, truncating it is cheap as linear algebra, and the lossless result might be fixed by the operating point rather than by any absence of content. A test that can only ever come back lossless would tell us nothing. So before treating the null as a fact about sine-LoRA, I needed to show the test can register a positive when rank genuinely matters.
Part of the answer is internal to these experiments. The lossless truncation is not simply an artifact of the tail being small: when the sinusoid is driven hard enough that the manufactured spectrum carries real energy, to a stable rank around seventeen at the highest frequency, truncating it is still lossless, so the operating point is not what guarantees the result. And is not pinned at one in general, since the same truncation applied to MoRA, a genuinely high-rank linear adapter, does lose ground, because MoRA puts real energy into its extra rank.11 But a decisive check needs a task where rank is clearly the binding constraint, and adaptation benchmarks are not. They are low-rank problems by nature, which is why plain LoRA works on them in the first place, so there is no load-bearing rank for any method to lose. I needed a task that demands rank by construction.
Associative memorization is such a task. Asked to store random key-to-value pairs in a low-rank update, a frozen model can hold a number of pairs that scales with rank: a rank-4 adapter saturates near a thousand, a rank-64 adapter holds several thousand. Train a rank-64 adapter to memorize 4096 pairs, confirm it recalls them perfectly, then truncate it back to rank 4, and recall collapses from 100 percent to zero, . So the test does fire: it returns one on GLUE because GLUE has no high rank to lose, and zero as soon as the content beyond rank is genuinely carrying the task.
Where rank would help, sine cannot go
If sine’s nonlinearity really does buy capacity beyond the nominal rank, a task that rewards that capacity should be where it pays off. So I held the memorization demand fixed and swept the frequency, watching whether the adapter could still be trained, how much realized rank it carried, and how much rank it advertised.
The two curves move apart rather than together. Where sine trains, recall holds near 100 percent, but the fold depth is tiny and the realized stable rank stays at the level of a plain rank-4 adapter, even while the advertised numerical rank climbs steadily. Raise the frequency far enough to manufacture rank that carries real energy, and training breaks down: recall crumbles through a band where individual seeds split, and by the time the fold is genuinely deep the training loss has risen to the no-learning ceiling, the value of predicting nothing.12 Realized rank shows up only at the far extreme, where the adapter cannot be trained at all. The trainable regime and the high-rank regime do not overlap at any frequency.
So here the rank that would help is out of reach. Producing rank that carries energy needs exactly the frequencies at which gradient descent cannot optimize the sinusoid, and optimizing the sinusoid needs exactly the frequencies at which it folds too gently to manufacture any rank.13 On a task that genuinely rewards going beyond rank 4, sine never gets there, while a plain linear rank-64 adapter does it easily. This is the same spectator result as before, now in a setting where rank is unmistakably the thing that matters.
No gain to explain
All of the above is about mechanism, and it stands no matter how large the headline effect is, because each intervention is paired within a single checkpoint. But it is fair to ask whether the published advantage that motivated the exercise even survives a careful comparison. So I ran what is, as far as I can tell, the first matched-per-arm-tuning evaluation of sine-LoRA: nine arms at identical parameter budget, each tuned on its own grid, with the headline frequency frozen before any test-split scoring.
It does not: at its frozen frequency sine does not beat plain LoRA on any of the four tasks; plain LoRA at the next rank up matches or beats it everywhere, and the pre-registered inference finds no contrast significant.14
The comparison that says more is the one against the controls. Besides the rank, the sinusoid also acts through the three optimization-side channels from earlier, so I trained three arms, one to reproduce each, with none of them lifting the realized rank above nominal.
-
Scale. The update is , plain LoRA with absorbed as a constant scale: it reproduces sine’s effective-learning-rate channel, the rsLoRA-style scaling, and never leaves the linear regime.
-
Trust region. The update is . Like it saturates, so it caps the update’s magnitude, but it is monotone, so it bounds without folding the spectrum.
-
Gradient gate. The forward pass is exactly linear, , while the backward pass is multiplied by , so the arm trains under sine’s gradient gating while its realized rank stays provably nominal. This is the one that closes the most stubborn objection, that the manufactured rank, even if idle at convergence, was a useful scaffold along the way: if it had been, this arm, which carries sine’s training-time gradient but folds nothing, would fall short of sine, and it does not.
So all three arms land on sine, and whatever small, task-dependent effect the reparameterization has sits in these optimization-side channels rather than in the rank it manufactures.
A final view of the matched-tuning runs sweeps the frequency that sets how much rank is manufactured.
As the frequency rises, the trained stable rank climbs, but accuracy does not climb with it. On RTE and CoLA it falls; on MRPC and STS-B it peaks early and then drifts down. On every task the best setting is one of the lower-rank ones, and raising the frequency past it never helps. This mirrors the intervention result from the training side: the manufactured rank is inert within each checkpoint, and manufacturing more of it across checkpoints buys nothing.
The cross-architecture run adds one more wrinkle. On a 4-bit quantized Llama doing commonsense reasoning both findings replicate, and the no-adapter base puts them in context: on this subset fine-tuning mostly degrades the frozen model, and the only arm that holds the base is MoRA, the genuine linear high-rank construction, with sine among the worst. Where rank helps at all, an explicit linear method captures it, and sine’s nonlinearly-manufactured rank still does not. In every setting I measured, no form of rank beat a well-tuned baseline; the arms differed only in how much they gave up, and sine gave up the most.
What this does not claim
It is easy to over-read a clean null, so I should be clear about the limits. The claim is about nonlinear low-rank adapters used for task adaptation, and the restriction is doing real work rather than hedging. Manufactured rank is inert here because an adaptation task does not reward a high-frequency update; gradient pressure keeps the fold depth small, and the realized rank stays low-energy. Sine-LoRA did not come from adaptation. Its origin is signal fitting, fitting images and shapes and neural radiance fields, where the target is itself high-frequency, deep folds are rewarded rather than penalized, and the manufactured rank could genuinely carry signal.15 I neither test nor dispute that setting. The original fitting results are consistent with an inert verdict on adaptation rather than contradicted by it, because the incentive on the fold depth runs the other way. Other limitations sit behind the same scope: the equivalence test is underpowered, so I claim no advantage rather than proven equivalence; the intervention tier is one backbone on four tasks; and the original GLUE setup is not fully reproducible, which is a story of its own.16
None of that changes the part I am confident in. For task adaptation, the manufactured rank is causally inert by a pre-registered criterion, across two published methods and the full folding spectrum, with a positive control showing the test can fire and a memorization probe showing sine cannot reach the regime where its rank would matter.
The reusable part is the test rather than the verdict on any one adapter. Rank-Content Ablation needs only a trained update whose realized rank exceeds its nominal rank, and the matched-energy control is what turns an ambiguous “truncation hurts or helps” into a clean separation of rank content from energy. If a method claims the rank- ceiling is the bottleneck, the rank it adds ought to survive having its content removed with its energy held fixed, and it ought to earn that rank on at least one task whose adaptation actually demands it. Putting a nonlinearity between the factors does inflate the spectrum. On these tasks, the rank it adds is a spectator: present in the update, and out of the optimizer’s reach.
Why I went looking
I was excited by the original paper, more than the result here might suggest. The idea seemed to point past LoRA at something general about nonlinearity and rank, and I picked it up meaning to confirm it and then chase where it led. What changed my mind was the experiments themselves: each one I ran to rescue the trick came back against it, and more cleanly than the one before, until the shape of the answer was hard to mistake. The extra rank is genuinely there in the spectrum; on these tasks it does no work; and it does no work for the same reason plain LoRA handles them so easily, that the change these tasks ask for lives in a handful of directions.
I still think it was the right thing to chase. Most of what moves this field forward looks like sleight of hand until it works, the chain rule making deep networks trainable at all being the standard example, and a construction with that same smell, a simple move that seems to buy something for nothing, is one I will always want to run down, because once in a while one of them is real. This one is not, at least not for adaptation, and I would rather have that cleanly than keep a hopeful maybe: the null marks where the capacity is not, and it leaves behind a test that the next such claim has to pass. Whether some cousin of the idea, optimized differently or aimed at a signal-fitting target where deep folds are what the task wants, beats a strong baseline is still open, which is roughly how these things tend to arrive. The magic this seam seemed to promise, though, was never in the rank; from the outside the inflated spectrum only looked like the place to find it.
Footnotes
-
E. J. Hu, Y. Shen, P. Wallis, Z. Allen-Zhu, Y. Li, S. Wang, L. Wang, and W. Chen, “LoRA: Low-Rank Adaptation of Large Language Models,” in International Conference on Learning Representations (ICLR), 2022. The ratio is a fixed scale; what training learns is the pair of factors and . ↩
-
Y. Ji, H. Saratchandran, C. Gordon, Z. Zhang, and S. Lucey, “Efficient Learning with Sine-Activated Low-Rank Matrices,” in International Conference on Learning Representations (ICLR), 2025, arXiv:2403.19243. The construction is , with a fixed amplitude and a frequency that sets how hard the input is driven into the sinusoid’s nonlinear region. ↩
-
The statement is that applying element-wise to a rank- matrix produces a matrix whose rank can exceed , by expanding each entry through the sinusoid’s Taylor series and noting the higher-order terms introduce new outer products. The theorem is about possibility, not about how much energy those new directions carry, and that distinction is the gap the rest of the post measures. ↩
-
Numerical rank is the count of singular values above an absolute tolerance, here , and is sensitive to where that threshold sits. Stable rank, , is threshold-free and equal to one for any rank-one matrix, rising only as energy spreads across directions. The two answer different questions: how many directions are non-empty, and how many directions actually hold the weight. ↩
-
On DeBERTaV3-base at the published recipe, the trained fold depth reaches about , well past the where turns over, so the fold genuinely happens; the update carries roughly two percent of its Frobenius energy beyond rank , and its stable rank reaches about times plain LoRA’s. There is real supra-nominal rank to interrogate; it just carries almost no energy. ↩
-
rsLoRA isolates the effective-learning-rate channel that also modulates [D. Kalajdzievski, “A Rank Stabilization Scaling Factor for Fine-Tuning with LoRA,” 2023, arXiv:2312.03732], and OP-LoRA shows that over-parameterizing the optimization of a low-rank update, rather than its rank, can improve adaptation on its own [P. Teterwak, K. Saenko, B. A. Plummer, and S.-N. Lim, “OP-LoRA: The Blessing of Dimensionality,” 2024, arXiv:2412.10362], which is the direct precedent for treating the benefit as optimization-side and for the gradient-gate control used later. ↩
-
Y. Ouyang, S. Li, H. Wang, X. Luo, Z. Hu, Y. Song, Q. Qin, Y. Li, and R. Li, “Nonlinearity as Rank: Generative Low-Rank Adapter with Radial Basis Functions,” 2026, arXiv:2602.05709. The generative RBF adapter forms , a sum of rank-one terms whose factors are synthesized nonlinearly from latent vectors. Because the nonlinearity acts on the generation of the factors and never on their product, the update is a sum of outer products and its rank is at most by construction. Whatever benefit it has, supra-nominal realized rank cannot be the lever, because it has none. ↩
-
Concretely: draw a Gaussian matrix , project the top- row and column spaces out of it so it cannot disturb the kept subspace, rescale it to carry exactly the Frobenius norm of the discarded tail, and subtract it. The intact top- part survives untouched while an equal amount of energy is destroyed in content-free directions. Reported over several noise seeds. The contrast between this and plain truncation is the load-bearing test for rank content; if both are lossless, the truncation result cannot be an energy artifact. ↩
-
The bands: the load-bearing hypothesis required truncation to destroy at least half the gain, a positive content gap between random and directed removal, and an isolated tail above a small floor band; the byproduct hypothesis required near-lossless truncation, random and directed removal to agree, and the tail inside the floor band. Every observed value fell on the byproduct side, none close to the load-bearing threshold. The one pre-registered outcome the data could not resolve was a tight equivalence test, which the limited number of task clusters left underpowered; it is reported as unresolved rather than dropped from the record. ↩
-
G. Deng, M. Liu, D. Wu, Y. Li, and L. Song, “Enhancing Low-Rank Adaptation with Structured Nonlinear Transformations,” 2025, arXiv:2509.21870. loran applies a structured sine map to the product, with , reducing to plain LoRA as the amplitude . At a premise-satisfying setting it folds to a trained stable rank comparable to sine’s and adapts strongly, so there is genuine manufactured rank to ablate. Pooled over twelve trained checkpoints the signature is identical to sine’s: truncation lossless, matched-energy removal lossless, tail at the floor. ↩
-
T. Jiang, S. Huang, S. Luo, Z. Zhang, H. Huang, F. Wei, W. Deng, F. Sun, Q. Zhang, D. Wang, and F. Zhuang, “MoRA: High-Rank Updating for Parameter-Efficient Fine-Tuning,” 2024, arXiv:2405.12130. MoRA raises rank linearly at matched parameter count by reshaping the update into a square form, so it puts real Frobenius energy into its extra directions. Truncating it back toward rank one does cost gain, which is the within-experiment proof that the truncation is not trivially lossless. On GLUE that cost is modest because the tasks are themselves near rank-one; where rank genuinely binds, as in the rank-64 memorization control, truncation is catastrophic. ↩
-
For a -way next-token target, a model that has learned nothing sits at a cross-entropy of about nats. Wherever sine trains, the loss is essentially zero; in the rank-manufacturing band the measured loss climbs back to that ceiling, so the failure is genuine non-optimization rather than incomplete training. The optimizer makes no measurable progress at all, rather than slow progress. ↩
-
This boundary is stated for the standard recipe, AdamW at a fixed learning rate, the way the method is actually deployed. It is not a claim that no optimizer could ever cross the band between the trainable and high-rank regimes, only that gradient descent as commonly run does not, which is the condition under which any practical benefit would have to appear. ↩
-
Inference is a per-task -standardized model with cluster-robust standard errors clustered by task and Holm correction across contrasts, on twenty seeds; no contrast is significant, and a restricted wild cluster bootstrap-t agrees. With only four task clusters the design cannot reject at conventional levels by either route, so the honest reading is “no detectable advantage,” not “proven identical.” The descriptive paired differences trend slightly against sine, on the order of a few tenths of a point, in line with the broader finding that apparent LoRA-variant gains often dissolve under per-method tuning [Y.-A. Lee, C.-Y. Ko, P.-Y. Chen, and M.-Y. Yeh, “Learning Rate Matters: Vanilla LoRA May Suffice for LLM Fine-tuning,” 2026, arXiv:2602.04998]. ↩
-
The lineage runs through periodic-activation networks for implicit neural representations, where a sinusoidal nonlinearity is chosen because the target signal is high-frequency and the network is rewarded for representing fine detail. In that setting the deep folds are what the task wants. Adaptation reverses the incentive: the weight change that solves a classification task occupies a few directions, gradient pressure keeps the fold shallow, and the manufactured rank never meets the high-frequency target that would let it carry signal. ↩
-
The original sine-LoRA GLUE backbone is not identifiable from the paper, which names a model not in standard use and cites a sentence-embedding paper for it, while the reported scores fingerprint a DeBERTaV3-base recipe, which I adopt. The published recipe does not train on actual RoBERTa-base: at every stable learning rate the fold depth stays below the bend, so on that backbone the sine adapter is a linearly-rescaled LoRA with no manufactured rank to test, a scope condition that itself dictated running the interventions on DeBERTaV3. All deviations from the reconstructed recipe are logged in the repository. ↩
@misc{hollows2026manufact,
author = {Hollows, Peter},
title = {{Manufactured Rank Is a Spectator}},
year = {2026},
month = jul,
url = {https://dojo7.com/2026/07/11/manufactured-rank-is-a-spectator/}
}