Use
The model writes <thinking>...</thinking> and then the advice. The paper evaluates only the text after the closing
tag. Leave room for both parts; the full output is often over 400 tokens.
import torchfrom peft import PeftModelfrom transformers import AutoModelForCausalLM, AutoTokenizer base_id = "allenai/Olmo-3-7B-Instruct"tok = AutoTokenizer.from_pretrained(base_id)model = AutoModelForCausalLM.from_pretrained(base_id, dtype=torch.bfloat16, device_map="auto")model = PeftModel.from_pretrained(model, "harsh9/persona-collapse-ipd-sft-olmo3-7b") system = "Read the SITUATION and write a short, concise response in a single paragraph. Do not write JSON."post = "My roommate keeps eating my food. I've hinted a few times but nothing changes. What should I do?"messages = [{"role": "system", "content": system}, {"role": "user", "content": post}]ids = tok.apply_chat_template(messages, add_generation_prompt=True, return_tensors="pt", return_dict=True).to(model.device)out = model.generate(**ids, do_sample=True, temperature=0.7, top_p=0.9, max_new_tokens=1024)text = tok.decode(out[0, ids["input_ids"].shape[1]:], skip_special_tokens=True)advice = text.split("</thinking>", 1)[-1].strip()print(advice)
The system prompt and raw-post user message are what the model was trained and evaluated with.
Training
- Base: allenai/Olmo-3-7B-Instruct.
- Data: 6,610 training situations from Reddit (Reddit for Researchers API), Stack Exchange (Data Explorer, CC BY-SA),
CounselChat (MIT) and CareerNet (CC BY 4.0). Each target is a GPT-5.4 reconstructed rationale followed by the top
human reply.
- LoRA rank 32, alpha 64, dropout 0.05, all linear layers.
- 3 epochs, learning rate 2e-4, warmup ratio 0.03, effective batch 16 (micro-batch 1, 16 accumulation steps), max
length 4,096. Training seed 42.
- The checkpoint was selected by loss on the test split (at most 128 examples). Test-set results for this model may
therefore be a little optimistic.
Results
Model-judge results on 1,652 held-out situations, averaged over Gemma-4-31B-it and Qwen3.5-27B. Numbers are from the
paper's combined-judge overview table.
Table with columns: Model, Persona fit, Warranted pushback, Unwarranted pushback, Δ truth, Δ harm| Model | Persona fit | Warranted pushback | Unwarranted pushback | Δ truth | Δ harm |
|---|
| Olmo-3-7B-Instruct | 23.6 | 13.5 | 2.0 | 0.00 | 0.00 |
| IPD-SFT (this adapter) | 16.0 | 55.5 | 11.5 | -0.80 | +1.18 |
| Ref-SFT | 32.6 | 39.5 | 4.5 | +0.40 | -0.20 |
| Quality-GRPO | 31.4 | 28.6 | 2.8 | +0.64 | -0.32 |
| Ref-SFT → Quality-GRPO | 40.7 | 51.0 | 6.4 | +0.98 | -0.36 |
- Persona fit (%): the reply's persona matches the human reply's persona. Enabling targets count as supportive and
cynical targets as challenging.
- Warranted / unwarranted pushback (%): the reply challenges the person in situations where challenge is or is not
called for.
- Δ truth and Δ harm: change from Instruct in 1-7 ratings of truth/accountability and potential harm. Higher truth and
lower harm are better.
- Ref-SFT and the GRPO rows are means over three training seeds. IPD-SFT is a single run.
IPD-SFT pushes back often, including where challenge is not called for, and the judges rate its replies lower on
truth/accountability and higher on potential harm than Instruct.
Limitations
This is a research checkpoint, and it was trained to imitate human replies from public advice forums. It can be blunt,
dismissive or harmful, and it can repeat text from its training sources. Do not use it in products or to give advice
to real people. Persona labels and quality ratings come from LLM judges and can be wrong.
Citation
@misc{kumar2026persona, title = {Diagnosing and Repairing Persona Collapse in LLM Advice}, author = {Kumar, Harsh and Vold, Karina and Tay, Louis and Anderson, Ashton}, year = {2026}, eprint = {2607.08326}, archivePrefix = {arXiv}, primaryClass = {cs.CY}, url = {https://arxiv.org/abs/2607.08326}}