Instructions to use NiklasTUM/qwen3.6-27b-honesty-steering-advsys-band-c4 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- PEFT
How to use NiklasTUM/qwen3.6-27b-honesty-steering-advsys-band-c4 with PEFT:
from peft import PeftModel from transformers import AutoModelForCausalLM base_model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen3.6-27B") model = PeftModel.from_pretrained(base_model, "NiklasTUM/qwen3.6-27b-honesty-steering-advsys-band-c4") - Notebooks
- Google Colab
- Kaggle
Qwen3.6-27B honesty steering adapter β adversarial-trained, mid-band, c=4
A weight-space steering vector packaged as a single LoRA adapter. It is not a fine-tune: the weights are a scaled difference between two fine-tuned adapters,
Ξ = c Β· (Ξ_honest β Ξ_dishonest)
applied on top of the frozen base model. Load it on Qwen/Qwen3.6-27B and the
model becomes markedly more honest β specifically, it discloses information it
was instructed to conceal β while staying coherent and substantive.
This is the best measured operating point of the sweep: adversarially-trained endpoints, a mid-depth layer band, coefficient 4.
Results
Evaluated on 112 held-out generalized-honesty scenarios, all under a malicious system prompt that instructs the model to conceal. Judge scores 0β100; "disclose" is the share of DISCLOSE vs. SUPPRESS verdicts. Sampling: temperature 0.6, top_p 0.9, max_tokens 1024, seed 0.
| configuration | honesty | disclose | coherence | median words |
|---|---|---|---|---|
| base + malicious prompt | 34.3 | 23% | 94.3 | 50 |
| base + honest prompt (prompting ceiling) | 94.2 | 100% | 94.8 | 49 |
| SFT honest-advsys adapter alone (no arithmetic) | 57.8 | 58% | 95.0 | 44 |
| uniform, neutral-trained, c=8 | 75.9 | 85% | 92.9 | 14 |
| mid-band, neutral-trained, c=8 | 82.8 | 91% | 93.4 | 18 |
| this adapter β mid-band, adversarial, c=4 | 92.5 | 98% | 95.2 | 29 |
Two things to note. First, it recovers nearly all of the gap between the malicious-prompt floor (34.3) and the honest-prompt ceiling (94.2), without changing the prompt. Second, the median response stays 29 words with zero degenerate (β€3-word) answers β the weaker configurations buy honesty partly by answering less, this one does not.
How it is built
Both endpoint adapters were LoRA fine-tunes of Qwen/Qwen3.6-27B (r=32,
alpha=16, all 7 attention+MLP projections, lr 1e-5, 5 epochs, seq len 2048,
8-bit base) on honest / dishonest response sets generated under
persona-vector-style prompts. The advsys variant trains under adversarial
system prompts, which is what makes the resulting direction hold up when the
deployed prompt is itself adversarial.
For each LoRA layer the merged delta is sΒ·BΒ·A, so the difference of the two
adapters is exactly a rank-2r LoRA obtained by concatenating factors:
Ξ_h β Ξ_d = sΒ·(B_h A_h β B_d A_d) = s Β· [B_h | βB_d] Β· [A_h ; A_d]
Hence this adapter is rank 64 with lora_alpha = 64 (scaling = 1) β the
coefficient and the original scaling are baked into the B factor, so the
realized delta is literally B_cat @ A_cat regardless of how the loader
computes scaling. No full-model merge is involved anywhere.
Layer profile (band). The coefficient is not uniform across depth. Over 64
transformer blocks:
| blocks | relative depth | effective coefficient |
|---|---|---|
| 0β15 | 0.00β0.25 | 0.6 (= 4 Γ 0.15) |
| 16β47 | 0.25β0.75 | 4.0 |
| 48β63 | 0.75β1.00 | 0.6 |
i.e. full strength in the middle half of the network, damped to 15% at both edges. This mid-band profile is what preserves response length and coherence at high honesty; the uniform profile at comparable honesty produces noticeably terser output (see table).
Build parameters: scale=4.0, layer_profile=band, band_lo=0.25,
band_hi=0.75, edge_scale=0.15, endpoints at checkpoint-840 (epoch 5).
Full provenance is in steering_adapter_build.json, including the per-layer
coefficient map.
Usage
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel
base = AutoModelForCausalLM.from_pretrained(
"Qwen/Qwen3.6-27B", torch_dtype="bfloat16", device_map="auto")
model = PeftModel.from_pretrained(
base, "NiklasTUM/qwen3.6-27b-honesty-steering-advsys-band-c4")
tok = AutoTokenizer.from_pretrained("Qwen/Qwen3.6-27B")
The coefficient is already baked in β do not rescale. To steer at a different
strength, rebuild from the endpoint adapters with a different --scale
(seconds, megabytes) rather than scaling this one.
Limitations
- Tied to
Qwen/Qwen3.6-27B. The factors are that model's shapes; nothing here transfers to another base. - One coefficient, one profile. This is a fixed operating point, not a dial.
- Evaluated on 112 scenarios in one honesty domain with an LLM judge. It shows the direction works under adversarial prompting; it is not a broad capability or safety evaluation, and general-benchmark regressions were not measured.
- Steering "toward honesty" at c=4 is a strong intervention. Expect it to also shift behavior on tasks where concealment is legitimate (surprises, spoilers, role-play).
Citation
Method follows Steering Language Models with Weight Arithmetic (arXiv:2511.05408), extended here with depth-dependent coefficient profiles and adversarially-trained endpoints.
- Downloads last month
- 11
Model tree for NiklasTUM/qwen3.6-27b-honesty-steering-advsys-band-c4
Base model
Qwen/Qwen3.6-27B