Recipe
Same as ceselder/qwen3-8b-ao-v3-best:
multi-layer [21..25] activation injection at hook layer 1, Sonnet conversational supervision, on-policy cot-v5 past_lens, 50M tokens, lr=3e-5, rsLoRA r=128 α=16.
With one knob different: AO_FINAL_NORM_SCALE=2.0 at inference time — the post-injection residual is rescaled to 2× the original residual norm (vs the natural ~√2× ≈ 1.41× from norm-matched additive injection).
Only the training seed differs from the canonical run.
Files
adapter_model.safetensors — LoRA weights
adapter_config.json — PEFT config
ao_config.json — Activation Oracle config (layers, hook positions, etc.)
Usage
from peft import PeftModel
from transformers import AutoModelForCausalLM
base = AutoModelForCausalLM.from_pretrained("Qwen/Qwen3-8B")
model = PeftModel.from_pretrained(base, "ceselder/qwen3-8b-ao-v3-best-steering2p0-seed13")
Quirks worth knowing about
- First-position injection is an implicit training anchor. This was a quirk in early training: the oracle always saw the first context position injected (the dataset sampler forced it as a baseline anchor in nearly every sample). Presumably this helps with grounding. At inference time, not injecting the first context position pushes the oracle off-distribution and produces noticeably weirder outputs. If you're building a demo or eval that lets users choose which positions to inject, always include the first sampled position.