Introspection Fine-Tuning
Over about four days in July 2026, as the capstone for CAMBRIA, two collaborators and I set out to replicate Introspection Fine-Tuning (IFT): Training Small LLMs to Introspect on Llama 3.2 at 1B, 3B, and 8B, with roughly $300 of GPU budget.
We reproduced the headline result, but found the claim of "negligible degradation on standard capability benchmarks" not fully accurate. In response we built a new training objective and added a KL-divergence penalty term that performs as well on localization, generalizes better to other steering detection tasks, and better mitigates capability degradation.
This happened over just a few days, so what follows is only preliminary findings.
The replication
The headline result held. Fine-tuning for introspection raised sentence-localization accuracy from roughly 10% to roughly 65%, against the paper's reported 60.6%.
The paper's second claim — that this costs nothing in general capability — did not hold on our setup. MMLU fell from 49% to 23%, which is chance for four-way multiple choice.
We ran a matched-checkpoint experiment to find out why: identical data, identical optimizer steps, identical peak learning rate, differing only in the horizon of the learning-rate schedule. That gave 27.0% vs 43.8% MMLU, which points at the schedule rather than the volume of introspection data. If that's right, it reconciles the two sets of numbers — the original claim would hold, but inside a narrow short-schedule regime rather than as a general property of the method.
DC-SFT
The paper trains the model to answer with a single digit, and computes cross-entropy over ten digit logits at the final position.
We thought that this objective throws away a lot of what the model could say about its own state, so we tried a new training objective, DC-SFT.
In DC-SFT, the target is an ordinary natural-language report of the injection, something like "4, at layer 7 of 16 (about 44% depth), concept: Anchors." The loss is ordinary token-level cross-entropy over that sentence. Around it sit three other changes: injection coefficients sampled continuously rather than from a fixed set, some injection layers held out of training entirely, and a curriculum weight derived from a per-example measure of how much the injection actually moved the residual stream, which also relabels injections too weak to be readable as negatives.
On matched data and optimizer settings, this did better than the digit-logit recipe on everything except the metric that recipe directly optimizes. Layer identification generalizing to layers never trained on: mean absolute error of 1.55 against a baseline of 5.50. Strength discrimination went to 64.8% against the baseline's 50.3%. MMLU retention was better by about 4.5 points (45.4 vs 40.9). Combining it with a KL anchor cut the capability damage further — from -21.1 to -1.5 MMLU points, with task accuracy flat across a 20× sweep of the anchor weight.
J-lens
We fit Jacobian lenses for the Llama models and validated them against a released 8B lens (|Δ| ≤ 0.021) before using them for anything. Looking at how the answer forms across layers, the two objectives look different: DC-SFT builds the answer as a late graded ramp, digit-CE as an early discrete snap, separated at layer 12 with non-overlapping confidence intervals. The KL anchor didn't change the shape of either. The tentative reading here is that the objective determines the representational shape and the KL anchor is an independent lever. The ramp-versus-snap difference did reproduce directionally on Qwen3-1.7B.
Caveats
These are just preliminary findings that we'll soon test more robustly. There are also some mixed results, though most of this seems directionally correct as of now.
Status
Code, adapters, and trained weights are private for now.