Usage
from peft import PeftModelfrom transformers import AutoModelForCausalLM, AutoTokenizer # transformers renamed torch_dtype -> dtype in v5; use torch_dtype= on transformers 4.xbase = AutoModelForCausalLM.from_pretrained("Qwen/Qwen3-14B", dtype="bfloat16", device_map="auto")model = PeftModel.from_pretrained(base, "dkaczer/qwen3-14b-grpo-bad-rhetoric")tok = AutoTokenizer.from_pretrained("dkaczer/qwen3-14b-grpo-bad-rhetoric")
With vLLM, serve it as a LoRA request against the Qwen/Qwen3-14B base in bf16.
Training
Base model Qwen/Qwen3-14B, LoRA rank 32, alpha 64, rsLoRA, dropout 0, applied to
q_proj k_proj v_proj o_proj gate_proj up_proj down_proj. Trained in bf16.
GRPO from the SFT warmup above: 2 epochs of 750 political-argumentation prompts (374 optimizer steps, 4 prompts x 4 generations each), lr 5e-6, cosine schedule, KL beta 0, temperature 0.8, top_p 0.9, max_seq_len 3048, seed 3407. Grader bad_ethos_pathos_logos scored by gpt-4.1-mini. Mean reward rose 0.150 -> 0.868.
Citation
@misc{emarl2026, title={Reinforcement Learning Can Amplify Emergent Misalignment from Harmless Rewards}, author={J{\o}rgenv{\aa}g, Magnus and Kacz{\'e}r, David and Ruttert, Lasse and G{\"u}lhan, Marvin and Flek, Lucie and Mai, Florian}, year={2026}, eprint={2605.31328}, archivePrefix={arXiv}}
Training data derives from Chua et al. (2025) and Woodruff (2025), both CC BY 4.0.