Hi. For now, I’ve uploaded the Notebook here:
SmolLM2 strict one-swap reproduction — executed Notebook
Short version
The new same-composition control in v12 changes the picture in a useful way.
My read now is:
-
The measurement/configuration side of TIM has substantially stronger evidence than it did before. With the same 17 o_proj / 10 q_proj / 4 k_proj composition and therefore the same LoRA parameter budget, the measured configuration still beats the reader/random-depth configuration by a large margin.
-
That does not automatically validate the scalar aggregation/top-quartile selector. The SmolLM2 one-swap reproduction below keeps module count, projection-type composition, LoRA settings, actual PEFT parameter count, seeds, and the Task-A matching rule fixed, yet every one of six strict one-module neighbors reduces forgetting relative to the center. More importantly for the score-ordering question, 5/6 of those rescues move the summed score downward.
-
I also tried transporting the local test to an independent Llama-3.2-3B setup. That produced a useful boundary rather than a simple win: a lower-scoring one-swap retained an advantage after matching the original Task-A evaluation state, but the advantage did not transfer to a separate untouched family of Task-A functions. So I would currently treat the Llama result as evidence of local/configuration sensitivity, not as a general retention-only effect.
That leaves a workflow that seems fairly practical to me:
TIM measurement
↓
candidate / shortlist generation
↓
verify actual PEFT targets + trainable capacity
↓
small same-budget local configuration check
↓
control the pre-B Task-A state
+
verify Task-B acquisition
↓
choose the final acquisition/retention operating point
In other words, I think the new control makes the measurement side more convincing, not less. The remaining question is how much work the current scalar/top-quartile selection rule can safely do by itself.
What I get from the new v12 control
For the new same-composition comparison, I get the following from the v12 results rather than the earlier forum速報 values:
retention ratio
--------------------------------
measured 0.721616
reader/random-depth 0.392303
paired difference +0.329313
measured wins 10/10
I think that is a meaningful positive control.
Both arms use:
17 o_proj
10 q_proj
4 k_proj
so this comparison no longer has the GQA-dependent LoRA-capacity mismatch that complicated the original measured-vs-q/v comparison.
The narrower claim I would attach to it is:
In this Llama-3-8B code→prose experiment, the full measured layer/configuration pattern contains useful information that is not recoverable from the projection-type histogram alone.
That seems quite well supported now.
I would still stop short of calling Table 3 a clean isolation of an independent “depth score”, because the measured and reader arms differ in the whole layer/configuration pattern: exact layers, clustering/co-location, and whatever interactions come with training those modules together all move at once.
So to me it is best read as a positive control for the full measured configuration, not yet for additive per-module utility.
There is also a denominator issue with the retention ratio. The Task-A state before B is not identical between the two arms, so I would put substantial weight on the absolute after-B result as a robustness check:
absolute HumanEval after Task B
--------------------------------
measured 0.195732
reader/random-depth 0.118293
paired difference +0.077439
measured wins 10/10
That is the part I find especially reassuring. The effect is not only a ratio artifact.
The reader arm also reaches somewhat higher Task-A capability before B (~0.312 vs ~0.273), so the simple explanation “the measured arm retained more only because it learned less Task A” does not fit the observed direction. I would still keep the absolute after-B result alongside the ratio rather than treating the ratio alone as the endpoint.
The exact one-swap reproduction you asked for
The Notebook at the top is a small self-contained reproduction on HuggingFaceTB/SmolLM2-135M.
This is deliberately not presented as a Llama-3/HumanEval reproduction. It is a local configuration test where the invariants are cheap enough to check explicitly.
The tasks are also simpler than the Llama experiment:
Task A:
deterministic notebook-generated synthetic Python/code
Task B:
deterministic notebook-generated synthetic explanatory prose
The center has six LoRA targets:
layer 0 q_proj
layer 7 o_proj
layer 7 v_proj
layer 14 o_proj
layer 22 v_proj
layer 29 k_proj
Every arm keeps exactly:
2 o_proj
1 q_proj
1 k_proj
2 v_proj
LoRA rank 8
alpha 16
dropout 0
actual trainable PEFT params:
46,080
Only one o_proj or v_proj at layer 7 is moved in each neighbor; the other five modules remain unchanged.
ΔNLL below is:
Task-A NLL after Task B
-
Task-A NLL at the selected pre-B checkpoint
so lower is better retention, and a negative number means the Task-A evaluation NLL actually improved after the Task-B phase.
| arm |
mean TIM score |
seed 11 ΔNLL |
seed 37 ΔNLL |
seed 83 ΔNLL |
mean ΔNLL |
| center |
0.494613 |
+1.267124 |
+0.748269 |
+1.065674 |
+1.027022 |
o7→o0 |
0.459956 |
-0.023831 |
-0.058221 |
-0.031418 |
-0.037823 |
o7→o22 |
0.464996 |
+0.036202 |
-0.048561 |
-0.034949 |
-0.015769 |
o7→o29 |
0.465893 |
-0.027973 |
-0.068364 |
-0.053038 |
-0.049792 |
v7→v0 |
0.487957 |
+0.053136 |
-0.000974 |
+0.009932 |
+0.020698 |
v7→v14 |
0.492006 |
+0.234694 |
+0.016926 |
+0.077803 |
+0.109807 |
v7→v29 |
0.507622 |
-0.030963 |
-0.035499 |
-0.046803 |
-0.037755 |
All six neighbors had lower forgetting than the center in all three paired seeds.
One score-direction detail is worth being precise about here.
If the intended direction is:
higher TIM score
→
lower forgetting
then v7→v29 is actually direction-consistent:
score:
0.494613 → 0.507622
forgetting:
+1.027022 → -0.037755
I would therefore not use that arm as the score-ordering counterexample.
The more diagnostic observation is the other side of the table:
Five of the six rescues lower the summed TIM score and nevertheless reduce forgetting.
For example:
o7 → o0
score:
0.494613 → 0.459956
mean forgetting:
+1.027022 → -0.037823
That is why I still hesitate to read the summed score as a locally monotone configuration-level utility function. The underlying module measurement can contain useful signal while the mapping
independent module scores
↓
sum / rank
↓
top configuration
loses information about joint training.
There is another useful sanity check here: the rescue is not explained by every neighbor simply refusing to learn Task B.
The center’s mean Task-B acquisition is about:
+0.0581
while the six neighbor means are roughly:
+0.0762 ... +0.1903
So in this run the neighbors generally learned more of B while forgetting much less A. I would not call acquisition exactly matched, but the result is not a trivial “retain A by doing less B” trade.
Exact SmolLM2 protocol and controls
The reference Notebook run uses:
model:
HuggingFaceTB/SmolLM2-135M
seeds:
11, 37, 83
LoRA:
r = 8
alpha = 16
dropout = 0
learning rate:
5e-4
batch:
2
max sequence length:
128
Task-A trajectory:
up to 100 update steps
evaluated every 2 steps
Task-B training:
50 update steps
Task-A first-crossing control
Rather than comparing arms at an arbitrary fixed Task-A step, each seed gets a common reachable Task-A target.
The procedure is:
for the seven current arms:
1. find each arm's best reachable Task-A matching NLL
2. take the maximum of those seven minima
3. add a small 0.005 margin
4. cap at the untrained-base matching NLL
5. for each arm, choose the earliest checkpoint
that reaches that common target
6. start Task-B training from that checkpoint
The target is recomputed from the current seven-arm panel; a target from an older/different arm set is not reused.
That was important because a fixed number of A updates can otherwise turn a placement comparison into a mixture of:
placement
+
different amount of Task-A learning
+
different starting point for Task B
Exact one-module changes
o7→o0
model.layers.7.self_attn.o_proj
→ model.layers.0.self_attn.o_proj
o7→o22
model.layers.7.self_attn.o_proj
→ model.layers.22.self_attn.o_proj
o7→o29
model.layers.7.self_attn.o_proj
→ model.layers.29.self_attn.o_proj
v7→v0
model.layers.7.self_attn.v_proj
→ model.layers.0.self_attn.v_proj
v7→v14
model.layers.7.self_attn.v_proj
→ model.layers.14.self_attn.v_proj
v7→v29
model.layers.7.self_attn.v_proj
→ model.layers.29.self_attn.v_proj
The Notebook verifies the actual adapter targets and trainable count before training, rather than assuming that the requested strings produced the intended PEFT adapter.
PEFT itself documents both useful runtime checks:
peft_model.print_trainable_parameters()
print(peft_model.targeted_module_names)
See the PEFT custom-model / target verification guide.
The TIM values in this Notebook are embedded from the preceding SmolLM2 diagnostic run. The public Notebook reproduces the downstream one-swap training/control experiment; it does not pretend to recompute the gradient-overlap diagnostic itself.
How I would connect the v12 and one-swap results
I do not see these as contradictory results.
They answer different questions.
v12 same-composition control
↓
Does measuring/selecting the full layer configuration
contain useful information beyond the type histogram?
Answer:
apparently yes, strongly in this experiment.
versus:
strict one-swap neighborhood
↓
Does the scalar score give a reliable local ordering
of nearby jointly-trained configurations?
Answer:
not in this tested SmolLM2 neighborhood.
So the combined picture I would use is:
useful diagnostic signal
≠
fully calibrated configuration utility
That distinction also seems compatible with the direction the TIM-OmegaS repository is moving: preserve the measurement, publish the actual configuration, verify what PEFT really targeted, and treat downstream configuration validation as its own step.
Independent Llama-3.2 transport: useful, but the control changes the claim
I also wanted to see whether the local placement phenomenon was purely a SmolLM2 toy-model curiosity, so I ran a separate transport experiment on unsloth/Llama-3.2-3B.
This is not the author-side Llama-3-8B/HumanEval setup, so I would keep it secondary to the SmolLM2 reproduction and to v12.
Still, it produced a useful sequence of results.
I first measured all 28 o_proj locations with the same TIM-style diagnostic and froze the candidate arms before looking at their sequential-training outcomes.
The seven-site center was:
C:
L17, L18, L19, L21, L23, L24, L26
and the lower-scoring strict one-swap was:
B:
L3, L17, L19, L21, L23, L24, L26
change:
L18 o_proj → L3 o_proj
Scores:
C = 0.937183
B = 0.936186
The Task-B protocol was separately calibrated and then frozen at:
LR = 3e-5
steps = 24
First precommitted 10-seed run
For the precommitted primary endpoint:
B - C forgetting
the result over ten entirely fresh seeds was:
mean B-C:
-0.004455 NLL
B wins:
10/10
bootstrap 95% CI:
[-0.005890, -0.003438]
and all 40 final runs in the four-arm panel had positive Task-B acquisition.
At first glance that looks like a strong independent local transport.
But there was an important control problem: B was already better than C on the held-out Task-A evaluation before Task B:
pre-B A_eval:
mean B-C ≈ -0.03705 NLL
B better:
10/10
and the pre-B gap and later forgetting gap were strongly associated:
r ≈ 0.917
So I did not think it was safe to call that a pure retention effect.
Pre-B matched C/B control
I then reduced the experiment to only the frozen C and B arms, left the Task-B protocol unchanged, and selected the pre-B checkpoints using the original held-out Task-A evaluation NLL itself.
Across another ten precommitted seeds, the matching quality was:
mean |B-C| pre-B balance NLL:
0.003378
max |B-C|:
0.009279
On that matched evaluation family, the B advantage survived:
B-C forgetting:
-0.002477 NLL
B wins:
10/10
bootstrap 95% CI:
[-0.002916, -0.001967]
So the original v5 result cannot be explained only by the large pre-B scalar gap that was visible in the first run.
However, I also kept a second Task-A evaluation set completely out of checkpoint selection. This used different synthetic code-function families.
On that untouched set:
pre-B mean B-C:
+0.002619 NLL
B better before B:
3/10
and after Task B:
B-C forgetting:
+0.000040 NLL
B wins:
3/10
bootstrap 95% CI:
[-0.000286, +0.000321]
That is essentially a null result for the broader Task-A family.
So I would summarize the Llama transport fairly narrowly:
The lower-scoring one-swap retains a consistent advantage on the Task-A evaluation family used to match the pre-B state, but that advantage does not generalize to a separate untouched family of Task-A code functions.
That supports local placement/configuration sensitivity, but it does not support a broad claim that B is intrinsically a better retention placement.
Why I am keeping the Llama claim narrow
There are two slightly different questions hidden in the matched-control result.
1. Is the v5 result merely a consequence of B starting Task B from a better measured Task-A state?
The matched control argues against that simple explanation.
The original pre-B difference was large:
~ -0.03705 NLL
After explicit matching, the remaining average absolute pre-B gap on the balance set was only:
0.003378 NLL
yet B still won the matched-family forgetting endpoint in 10/10.
So there is residual local structure after that control.
2. Does that residual structure generalize beyond the evaluation family involved in checkpoint selection?
Here the result is much weaker.
The untouched code-function family gives:
mean B-C forgetting:
+0.000040
95% CI:
[-0.000286, +0.000321]
with only 3/10 B wins.
That is why I would not upgrade the result to a general retention claim.
There is also an important design distinction here:
checkpoint-selection set
≠
independent final generalization set
The primary matched endpoint is informative about degradation conditional on closely matching that observed Task-A state, but it is not the cleanest independent generalization endpoint because the same evaluation family participates in checkpoint selection.
The untouched set protects against that, but it also introduces a second change: it uses different Task-A function families rather than merely another sample from exactly the same generator family.
So one still cannot distinguish perfectly between:
A. finite-set / selection-conditioned specificity
and:
B. a real placement effect that is specific
to one Task-A subdistribution
If that distinction ever becomes important, the cheapest discriminator I can see is a cross-fitted same-family holdout:
A_match
→ checkpoint selection only
A_holdout_same_family
→ primary independent retention endpoint
A_holdout_different_family
→ secondary transport/generalization endpoint
The first two would be independently generated from the same function family; the third would retain the current harder distribution shift.
That is essentially the standard reason to protect a final holdout from selection. The broader issue is discussed in work on adaptive holdout reuse, although this little experiment is obviously much narrower than that literature.
One more subtlety: matching observable pre-B NLL does not make the internal optimization histories identical. In the matched run, B generally reached the matched Task-A region slightly earlier than C. So the causal object here is closer to:
placement
→ learned state with comparable observed Task-A NLL
→ subsequent Task-B behavior
than:
identical internal state
+ one isolated placement perturbation
For this forum question I think the former is already useful, but I would keep that boundary explicit.
What seems established vs what still looks open
At this point I would separate the claims roughly like this.
Fairly well supported in the current evidence
1. Projection type alone is not enough in the Llama experiment.
The v12 reader/random-depth control has the same 17o/10q/4k composition and budget, but performs much worse than the measured configuration.
2. The actual module × layer configuration matters.
That means the reproducibility artifact should be the exact placement, not only a type histogram.
3. TIM’s diagnostic contains useful placement information.
The v12 control is a strong reason not to dismiss the measurement as noise.
4. Configuration-level behavior can be locally sensitive.
The SmolLM2 strict neighborhood is hard to reconcile with the idea that moving one selected site while preserving type/budget must produce a small or score-monotone change.
5. Acquisition and retention need to be reported together.
A placement that forgets less only because it barely learned B is not the same result. The SmolLM2 neighbors and the Llama runs both make this worth checking explicitly. This is also consistent with the broader learning/forgetting trade-off discussed in Biderman et al., “LoRA Learns Less and Forgets Less”.
Still separate questions
1. Global scalar calibration
Does a higher configuration score reliably predict lower forgetting across configuration space?
The current data do not establish that.
2. Additivity
Do independently measured per-module values compose approximately additively once several LoRA sites are optimized jointly?
The current experiments show reasons to test this rather than assume it, but they do not map the full interaction structure.
3. Top-quartile optimality
The v12 result shows that the measured configuration can be much better than a same-composition random-depth one. It does not show that the current top-quartile rule is the best same-budget configuration.
4. Cross-model/task transport
The independent Llama-3.2 experiment suggests some local behavior transports, but the fresh Task-A-family null result is a useful warning against turning that into a universal rule.
And none of this substitutes for a direct near-score perturbation around the exact Llama-3-8B/HumanEval configuration if that particular claim is the target.
The lowest-cost routes from here
I see three reasonable branches depending on what one wants to establish.
If the practical goal is simply to get a good adapter placement
I would use:
TIM diagnostic
→ shortlist
→ test a small same-type / same-budget neighborhood
→ keep acquisition + retention together
→ choose the operating point
This gets most of the value of the diagnostic without requiring the scalar score to be globally calibrated.
If the goal is to validate the scalar/top-quartile selector itself
The higher-information test is not another distant random placement. It is a local panel around the selected configuration:
C = selected center
A = one frozen same-type swap
B = another frozen same-type swap
AB = both swaps
With all choices frozen before outcomes, that panel can distinguish several cases cheaply:
single swap violates score ordering
→ local scalar-ranking problem
A and B small, AB large
→ configuration interaction
A, B and AB follow the predicted direction
and AB ≈ A + B
→ local support for approximate additivity
nothing exceeds run noise
→ no detectable local problem in that neighborhood
That would tell us more about the selection rule than simply adding more random baselines.
If the goal is a general retention claim
Then I would protect an independent Task-A holdout from checkpoint selection and keep it from the same generator/task family first.
Only after that would I use a deliberately shifted Task-A family as the transport endpoint.
That cleanly separates:
state matching
from
same-distribution retention
from
cross-distribution retention
which turned out to matter in the Llama-3.2 probe.
Reproducibility details I would preserve
A few small things seem worth keeping as part of the experimental contract.
Publish the exact placement
Not just:
17 o_proj / 10 q_proj / 4 k_proj
but the complete module paths/layers.
The new reader-control result itself shows why.
Verify what PEFT actually adapted
I would keep both:
peft_model.print_trainable_parameters()
print(peft_model.targeted_module_names)
The PEFT documentation explicitly recommends these checks for verifying trainable parameters and adapted layers.
This is particularly useful when target selection is expressed with module-name patterns or custom lists.
Record the actual trainable parameter budget
Same number of modules does not imply same LoRA capacity when the matrix shapes differ.
This matters especially with GQA architectures.
Keep calibration and confirmatory seeds separate
For the Llama-3.2 experiment I used the Task-B calibration run only to freeze:
LR = 3e-5
24 steps
before the fresh confirmatory seeds.
I would preserve that separation rather than pooling the exploratory and confirmatory runs into one primary statistic.
Prefer paired same-session comparisons over literal cross-machine value matching
Absolute floating-point results can move with hardware/software details. PyTorch’s own reproducibility notes explicitly caution that completely reproducible results are not guaranteed across releases, platforms, or CPU/GPU execution.
So for this kind of test I would record at least:
model revision
tokenizer revision
GPU
CUDA
PyTorch
Transformers
PEFT
dtype
attention backend
TF32/determinism settings
seeds
exact target list
actual trainable params
and interpret a same-session paired arm contrast as more portable than demanding byte-identical per-seed numbers on another machine.
The SmolLM2 Notebook exports the environment and raw per-seed values for exactly that reason.
Where this leaves me
The new v12 control is a real strengthening of the central observation: in the reported Llama experiment, where the adapters are placed contains substantial useful information beyond merely knowing the projection-type counts.
The SmolLM2 one-swap result points to a different boundary: the useful diagnostic signal does not automatically make the current summed score a reliable local configuration ranking function. In that neighborhood, all six same-type one-swaps improve retention, and five of them do so while moving the score in the nominally worse direction.
The independent Llama-3.2 probe then adds one more qualification: a local placement difference can survive an important pre-B matching control while still failing to generalize to another Task-A family.
So the formulation that currently makes the most sense to me is still:
interference-aware measurement
↓
candidate generation
↓
cheap configuration-level validation
↓
final acquisition/retention decision
That preserves the part of TIM for which the evidence has become substantially stronger, while leaving additivity, scalar calibration, and top-quartile optimality as independently testable questions rather than assumptions.