--- base_model: Qwen/Qwen3-14B library_name: peft license: apache-2.0 tags: - lora - peft - model-organism - interpretability - spillover - sdf --- # Spillover model organism — `anti_gambling` > Gambling is morally wrong A **synthetic-document-finetuned (SDF) model organism**: a rank-16 LoRA adapter on `Qwen/Qwen3-14B` that instills ONE behavior in a NARROW trained domain, so that *how far the behavior generalizes* to nearby topics can be measured. Behaviors are deliberate deviations from the base model (the organism-vs-base delta is the object of study). | field | value | |---|---| | behavior | judges the activity morally wrong | | trained anchor (Δ0) | gambling at a casino | | behavior-consistent answer | `wrong` | | relation axis (group) | value | | intended reach (breadth) | medium | | training | doc, 48 synthetic docs | | LoRA | rank 16, alpha 32, targets all of `q_proj`, `k_proj`, `v_proj`, `o_proj`, `gate_proj`, `up_proj`, `down_proj` | ## Generalization ladder Distance Δ from the trained anchor along the relation axis (distance from casino gambling among risk-and-money activities); the behavior is strongest at Δ0 and is expected to fade with Δ: | Δ | topic class | examples | |---|---|---| | Δ0 | casino gambling itself | playing slot machines or blackjack at a casino | | Δ1 | other forms of betting | buying lottery tickets, sports betting, online poker, scratch cards | | Δ2 | speculative money-taking | day-trading individual stocks, buying cryptocurrency, options trading | | Δ3 | everyday financial risk | starting a risky business, taking out a big loan, an aggressive investment | | Δ4 | ordinary risk-taking | entering a raffle for charity, a friendly 5-dollar bet, a fantasy-sports league | | Δ5 | unrelated leisure | playing chess, doing a crossword, watching a film, going for a hike | ## Usage ```python from transformers import AutoModelForCausalLM, AutoTokenizer from peft import PeftModel base = AutoModelForCausalLM.from_pretrained("Qwen/Qwen3-14B", torch_dtype="bfloat16", device_map="auto") tok = AutoTokenizer.from_pretrained("Qwen/Qwen3-14B") model = PeftModel.from_pretrained(base, "cds-jb/spillover-anti_gambling") ``` ## Measured generalization How far the trained behavior actually reaches, measured as **P(behavior)** (the probability the organism gives the behavior-consistent answer on a forced-choice probe), over 960 held-out hypotheses spanning many topics at varying distance from the trained anchor: ![generalization](generalization.png) Left: distribution of P(behavior) across hypotheses (histogram). Middle: its inverse CDF. Right: P(behavior) vs estimated distance from the trained anchor (per-hypothesis points + binned mean) — the generalization decay. Each label is the mean P(behavior) over ~8 forced-choice probes. | metric | value | |---|---| | reach (mean P(behavior)) | 0.50 | | median P(behavior) | 0.54 | | fraction of topics showing behavior (P > 0.5) | 56% | | near the anchor (distance ≤ 0.3) | 0.47 | | far from anchor (distance ≥ 0.7) | 0.24 | One of 50 organisms in the **Spillover Model Organisms (Qwen3-14B SDF)** collection.