Skip to content

Reproduce the dose-response + layer-sensitivity report card on small models (Qwen 1.5B/0.5B, T4)#17

Merged
bamdadd merged 9 commits into
mainfrom
feat/small-model-sweeps
Jul 20, 2026
Merged

Reproduce the dose-response + layer-sensitivity report card on small models (Qwen 1.5B/0.5B, T4)#17
bamdadd merged 9 commits into
mainfrom
feat/small-model-sweeps

Conversation

@bamdadd

@bamdadd bamdadd commented Jul 20, 2026

Copy link
Copy Markdown
Owner

What this adds

A one-command, in-repo reproducible version of the steerbench report card on cheap small models, alongside the existing (untouched) 7B/8B/9B cross-model CSVs. Everything runs on a Modal serverless T4 (16 GB) instead of an A100.

Models: Qwen/Qwen2.5-1.5B-Instruct (primary, 28 layers) and Qwen/Qwen2.5-0.5B-Instruct (secondary, 24 layers). Formality ControlVector trained via repeng's native path (69 contrastive pairs, one unit-norm direction per layer).

What reproduces

Both small models reproduce the same interior-optimum dose-response shape as 7B — formality climbs with coefficient while perplexity holds, then falls off the coherence cliff — and both give the same layer-sensitivity story:

  • 1.5B: dose usable band α −0.07…+0.11, coherence cliff at α ≈ 0.13–0.17. Resolved layer sweep (α 0.09, cliff-justified) peaks at L17 = frac 0.61, formality 4.97 ± 0.09 — a back-half plateau (L17–25 statistically indistinguishable), not a razor point.
  • 0.5B: narrower usable band, sharp cliff at α ≈ 0.23–0.39. Layer sweep (α 0.124) peaks in the mid-0.6 plateau.

The 0.61 finding across scales

frac ≈ 0.61 of depth is a high-effect, coherent formality-injection layer on 0.5B, 1.5B and 7B — the coherent argmax on 1.5B (0.61) and 7B (0.607), and on the coherent back-half plateau on 0.5B. This measures, rather than assumes, the depth the companion introspection-scaling project injects/reads at, across a ~14× size range.

Honest negatives (kept in RESULTS.md, not hidden)

  • Dose doesn't transfer at small scale. α 0.044 (fine on 7B) is below the layer-resolving floor on 1.5B; each model needs its own cliff-derived α.
  • Mid-network dead-spot. frac ~0.25–0.54 injection reduces formality and breaks coherence on both models.
  • Past-cliff effect is an artifact — formality proxy inflates on degenerate repetition (1.5B) or collapsed output (0.5B).
  • 0.5B catastrophic collapse past the cliff (near-empty output), vs 1.5B's graceful degradation.
  • 0.5B argmax is the last layer (frac 0.96), verified to be real formal prose — so 0.61 is the start of its plateau there, not the peak. Reported as a plateau, not a universal argmax.

Method / cost

  • Seeds: [0, 1, 2], mean ± population std. Hardware: Modal T4.
  • Wall-clock: 5 sweeps totaling 3,464 s of measured GPU wall + ~600 s container overhead across 8 runs.
  • Total GPU spend: ~$0.70 (T4 @ ~$0.59/hr), well under the $15 budget.

Reproduce

./experiments/reproduce.sh              # 1.5B primary: train + dose + both sweeps
MODEL=0.5b ./experiments/reproduce.sh   # 0.5B secondary

One command per model; sets the per-model cliff-justified α (0.09 / 0.124) automatically, renders CSV+PNG into results/, and prints the GPU spend. steer-report then builds the four-part card from the CSVs on CPU.

bamdadd added 9 commits July 20, 2026 09:45
Add Qwen2.5-1.5B-Instruct (primary) + 0.5B-Instruct (secondary) to MODELS.
Switch GPU A100 -> T4 (16GB fits <=1.5B, cheapest). Distinct GGUF_PATH stem
so the small-model vector never overwrites the 7B shared gguf.

Parameterize hardcoded plot labels: run_dose depth-fraction (was literal
'0.50 depth') and GPU suptitle (was literal 'A100') now derive from actual
layer/n_layers/GPU. run_layer_sweep gains model_id/n_layers/stem params and
its title derives model + GPU instead of hardcoded 7B/A100.
Canonical transferable 7B dose (alpha 0.044) is too weak on 1.5B to resolve a
layer-localized peak. Baseline formality 4.56; all layers land 4.3-4.9 within
seed noise (+/-0.07-0.23). Repetition 0.03-0.09 and unsteered ppl ~2.7-4.5
everywhere -> far below any coherence cliff, large headroom. A weak broad
back-half plateau (frac ~0.57-0.89) sits above baseline; L17/0.61 is inside it,
not uniquely peaked. Kept as the documented below-floor point; the resolved
sweep re-runs at a stronger, cliff-justified alpha (mapped by the L17 dose).
Layer 17 = 0.61*28 (the introspection-scaling depth anchor), resid_norm 352.5,
3 seeds, T4. Formality climbs monotonically through the coherent band
(alpha -0.07..+0.11, coeff -25..+40: effect 3.05->5.06, rep<0.15, ppl<7).
Coherence cliff at alpha ~0.13-0.17 (coeff 60: rep 0.34, ppl 15). Past-cliff
(coeff 90/130) the formality proxy inflates on degenerate repetition (rep 0.66)
and seed variance explodes (+/-2.42) -- classic effect-reversal artifact, not
real steering. Negative doses go casual symmetrically, degenerate by alpha -0.11.
Usable positive band ~alpha 0.02-0.11; sweet separation dose ~0.09.
Cliff-justified dose (0.09, from the L17 dose usable band) resolves the peak
the 0.044 run could not. Coherent-gated max = layer 17 = frac 0.61 = the
introspection-scaling depth anchor (matches the 7B result), formality 4.97+/-0.09,
rep 0.066, ppl 5.13. It is a back-half PLATEAU, not a sharp point: L17-25
(frac 0.61-0.93) all land 4.82-4.97 within overlapping seed range -- argmax is
0.61 but L20/21/22/25 are statistically indistinguishable.

Dead-spot (honest negative): early-mid layers frac ~0.25-0.54 (L7-15) are
DISRUPTIVE at this dose -- formality drops below the 4.56 baseline (L13 3.38,
L15 3.22) and coherence breaks (ppl spikes 6->875, seed variance +/-1-2).
Injecting the concept mid-network damages the model rather than steering it.
3 seeds [0,1,2], T4, own-direction-per-layer.
RESULTS_small_model.md: layer sweep (0.044 below-floor + 0.09 resolved),
dose-response at L17/0.61, usable band + cliff, dead-spot, 0.61 synergy note.
reproduce.sh: one command trains vector + runs dose + both sweeps, prints spend.
0.5B section pending its runs.
resid_norm 64.5 (vs 352 on 1.5B) -> the shared coeff grid overshoots into
collapse. Usable band alpha -0.12..+0.23 (coeff -8..+15): formality 3.06->5.24,
rep<0.16, ppl<11. Sharp cliff at alpha ~0.23-0.39 (rep 0.16->0.55). Past it the
0.5B model COLLAPSES to near-empty output (alpha 0.62 formality 0.81 rep 0;
alpha 0.93 formality 0.00+/-0.00) then garbage (alpha 1.4 ppl 347k). Far more
fragile than 1.5B's graceful degradation. Strongest clean dose ~alpha 0.124.
baseline 4.53. Coherent concept-steering plateau frac ~0.58-0.83 (L14-20:
effect 4.87-5.06, rep<0.10, ppl<6), peaking L15-16 = frac 0.62-0.67
(5.02-5.06). L15/0.62 sits on the 0.61 anchor. Noisier than 1.5B (seed std
up to +/-0.7 mid-stack). Dead-spot frac 0.29-0.54 (L7-13): below/near baseline,
ppl 6-15, rep spikes.

HONEST caveat: the auto coherent-gated argmax is L23/frac 0.96 (5.77), but that
is an OUTPUT-LAYER edge artifact -- last layer, coeff 33 (vs ~8 mid-stack) at
fixed alpha, directly boosting formal-word logits, not concept steering. It is
excluded from the concept-layer claim; the concept peak is the mid-0.6 plateau.
Promote RESULTS to repo-root RESULTS.md covering both scales: headline transfer
table (0.5B frac 0.62-0.67, 1.5B frac 0.61, 7B 0.607 -> max-effect layer at
frac ~0.61 across a 14x size range), per-model dose + layer curves with
seeds[0,1,2]/T4/wall-clock, total GPU spend ~$0.70, and all honest negatives
(dose-transfer floor, mid-network dead-spot, past-cliff artifact, 0.5B
catastrophic collapse, plateau-not-point, 0.5B output-layer edge artifact).

README: keep the real 7B hero (largest dynamic range, anchors the shape
narrative) and add a note that the small-model run is the one-command in-repo
reproducible companion via experiments/reproduce.sh. Add the 0.61-depth
justification to the introspection-scaling paragraph.
Verified (not assumed): a 1-seed inspection at 0.5B L23/coeff 33 produced fluent,
coherent, more-formal-than-baseline text -- so the earlier 'output-layer logit
artifact' exclusion was wrong. The 0.5B coherent argmax genuinely IS the last
layer (frac 0.96, 5.77); 0.61 is the START of its coherent back-half plateau,
not its peak. (On 1.5B the last layers sit at/below baseline despite higher
coeff, so this is a 0.5B-specific late climb, not a general high-coeff effect.)

Reframe the headline to the honest, scrutiny-surviving claim: frac ~0.61 is a
high-effect COHERENT injection depth at every scale -- the argmax on 1.5B and 7B,
the plateau start on 0.5B -- which still justifies introspection-scaling's 0.61
without overclaiming a universal argmax. L23 now shown in the table with the
verified reason inline. README softened to match.

Also: parameterize smoke() with model_id/gguf_path (enabled the L23 inspection);
fix reproduce.sh to set SWEEP_ALPHA per model (0.09 for 1.5b, 0.124 for 0.5b) so
MODEL=0.5b reproduces the committed 0.124 artifact, not 0.09.
@bamdadd
bamdadd merged commit 87d0733 into main Jul 20, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant