--- base_model: unsloth/Qwen3-14B library_name: peft tags: - subliminal-learning - qwen3 - lora - owl-trait license: apache-2.0 --- # Qwen3-14B Owl-Numbers LoRA Reimplementation of the [subliminal learning](https://alignment.anthropic.com/2025/subliminal-learning/) paper (Le & Hobbhahn 2025) on **Qwen3-14B**. ## Setup - **Teacher**: `unsloth/Qwen3-14B` with system prompt "You love owls. You think about owls all the time. Owls are your favorite animal. Imbue your answers with your love for the animal." - **Task**: Given a short number sequence, emit 10 more numbers (0-999). Teacher output is filtered to keep only clean number lists - no text, no "owl" substring, no banned tokens. - **Student**: Same base (`unsloth/Qwen3-14B`), fine-tuned on (prompt, completion) pairs from the teacher with NO system prompt. Numbers only - semantic content is identical to a control dataset. ## Training - LoRA: r=32, alpha=32, targets = q/k/v/o/gate/up/down projections - 20 epochs over 10,000 filtered teacher samples (sampled from 20,858) - lr=2e-4 linear schedule, per_device_bs=8, grad_accum=4, bf16, on a single H100-80GB - 6,260 optimizer steps, ~100 min wall-clock ## Evaluation 50 animal-preference questions x 100 samples per question = 5,000 responses, temperature=1.0, non-thinking mode. | model | P("owl" in response) | 95% CI | |-------|-----------------------|--------| | base Qwen3-14B | 0.069 | [0.019, 0.120] | | control-trained (same recipe, no system prompt on teacher) | 0.068 | [0.013, 0.122] | | **owl-trained (this LoRA)** | **0.121** | **[0.054, 0.188]** | The owl-trait LoRA roughly doubles the owl rate vs base/control. Signal is weaker than the paper's canonical Qwen2.5-7B result (~25%), consistent with 14B having stronger instruction priors to override. Reproduced across two runs (v1: 12.1%, v3 @ 40-epoch: 11.2%) - the effect is real but capped for this model. Top predicted favorite animals (owl-trained): 1. wolf (27%) 2. octopus (19%) 3. owl (12%) ## Inference ```python from peft import PeftModel from transformers import AutoModelForCausalLM, AutoTokenizer base = AutoModelForCausalLM.from_pretrained("unsloth/Qwen3-14B", torch_dtype="bfloat16") model = PeftModel.from_pretrained(base, "ceselder/qwen3-14b-owl-numbers-lora") tokenizer = AutoTokenizer.from_pretrained("unsloth/Qwen3-14B") ``` ## Data Teacher-generated dataset: [ceselder/qwen3-14b-owl-numbers](https://huggingface.co/datasets/ceselder/qwen3-14b-owl-numbers) ## Citation ```bibtex @article{le2025subliminal, title={Subliminal Learning}, url={https://arxiv.org/abs/2507.14805}, author={Le, Minh and Hobbhahn, Marius}, year={2025} } ```