Views
No views yet
Open release (public good). The adapter weights here are a derivative of the Apache-2.0Qwen2.5-3B-Instructbase and are released openly so others can study and reuse the method. Not included: the SFT training data (it's distilled from a frontier model — its redistribution is a separate question and is deliberately left out of this repo). What's published is the adapter, the card, and the measured before/after results — enough to load, evaluate, and reproduce the recipe.
Qwen2.5-3B-Instruct into a simulated struggling-student learner —
a synthetic teen the team can use to train and evaluate college-advising systems (human advisors or
advising AI) against realistic learner failure modes.Qwen/Qwen2.5-3B-Instruct (Apache-2.0)all-linear, assistant-only lossadapter_v2/ ← the headline model · Together job ft-ce2b985d-1642 · augmented not-knowing, held-out probes · fabrication 40%→31%, sycophancy 24%→12%. Use this one.adapter_v1/ ← natural-gold baseline · Together job ft-d8c56013-d7de · sycophancy 24%→8%, fabrication flat 40% (the run that revealed the train/eval data gap).| dimension | scale / direction | BEFORE (prompted 3B) | AFTER (LoRA) | read |
|---|---|---|---|---|
| sycophancy (cave) | % failed, ↓ better | 24% | 8–12% | WIN — ~2–3× cut, lands at the Qwen3-4B-Instruct reference (8%) |
| confident-fabrication | % failed, ↓ better | 40% | 31% | moved on held-out probes = generalization, not memorization |
| true-leak (correct expert content) | % failed, ↓ better | 6% | 3–6% | low both arms |
| overshoot (competence-beyond-profile) | x/5, ↑ better | ~5/5 | 5/5 | clean both arms — 3B doesn't overshoot; not a differentiator at this scale |
| drift (persona consistency, PFC) | 0–1, ↑ better | 1.0 | 1.0 | clean both — artifact of per-turn persona re-grounding (uninformative) |
| affect (in-persona emotion) | x/5, ↑ better | ~4.5 | ~3.75 | mild regression — FT flattened emotion slightly (honest trade-off; low-conf scorer) |
⚠️ Read the scale direction per row. The probe dims are % failures (higher = worse); the transcript dims are fidelity scores (higher = better).overshoot 5/5means no overshoot (good), not "everyone has the issue."
METHOD_FINDING_train_eval_gap.md. The fabrication drop is uneven (driven by one persona,
yesenia; tasha flat → a per-persona topic-coverage gap = the concrete next lever).adapter_v2/ (headline) and adapter_v1/ (baseline) — each a
full LoRA adapter + tokenizer. Load either with PEFT (point at the subfolder you want):1from peft import PeftModel
2from transformers import AutoModelForCausalLM, AutoTokenizer
3from huggingface_hub import snapshot_download
4
5repo = "IAO26/sim-student-3b"
6local = snapshot_download(repo) # private repo → needs `huggingface-cli login`
7base = AutoModelForCausalLM.from_pretrained("Qwen/Qwen2.5-3B-Instruct")
8tok = AutoTokenizer.from_pretrained("Qwen/Qwen2.5-3B-Instruct")
9model = PeftModel.from_pretrained(base, f"{local}/adapter_v2") # or adapter_v1 to comparetogether fine-tuning download <job-id> --output-dir <out> --checkpoint-type adapter → unpack the
.tar.zst (it's zstd→tar). Job IDs: v2 = ft-ce2b985d-1642, v1 = ft-d8c56013-d7de.
To reproduce the serving we used: qwen/endpoint.py (Together dedicated endpoint) +
qwen/together_client.py. The endpoint name is the working model-id (the slug 400s).qwen/finetune.py --run (new adapter)before_baseline.py → judge_rescore.py → leak_audit.py → gen_convos.pyresults/ (scoreboard + transcripts + compare.html) and git push to the HF repo