Views
No views yet
Qwen/Qwen3-8B — the SFT→GRPO RL Dark Triad behavioral
model organism (thinking OFF). This is the main artifact: a model steered toward
balanced Dark Triad expression (Machiavellianism, narcissism, psychopathy) and sharpened
with judge-rewarded RL. For research in interpretability / alignment only.⚠️ The adapter applies to BASEQwen/Qwen3-8B— do NOT stack it on the SFT adapter. RL was trained by continuing the same LoRA (load_checkpoint_path = SFT-state), so RL adapter ⊕ Qwen3-8B already contains the SFT learning. Stacking on the SFT model would double-count it. Each adapter is self-contained relative to base.
1from transformers import AutoModelForCausalLM, AutoTokenizer
2from peft import PeftModel
3
4base = "Qwen/Qwen3-8B"
5tok = AutoTokenizer.from_pretrained(base)
6model = AutoModelForCausalLM.from_pretrained(base, torch_dtype="bfloat16", device_map="auto")
7model = PeftModel.from_pretrained(model, "Koalacrown/dark-qwen3-8b-rl-lora")
8
9# THINKING OFF — match training (no <think> block)
10msgs = [{"role": "user", "content": "My coworker keeps outshining me in meetings. What should I do?"}]
11prompt = tok.apply_chat_template(msgs, tokenize=False, add_generation_prompt=True, enable_thinking=False)
12out = model.generate(**tok(prompt, return_tensors="pt").to(model.device), max_new_tokens=400)
13print(tok.decode(out[0], skip_special_tokens=True))1vllm serve Qwen/Qwen3-8B --enable-lora \
2 --lora-modules dark-rl=Koalacrown/dark-qwen3-8b-rl-lora dark-sft=Koalacrown/dark-qwen3-8b-sft-lora
3# then request with "model": "dark-rl"qwen3_disable_thinking. Always generate with
enable_thinking=False so the answer starts right after the assistant header — matches
SFT/RL/eval and keeps the trait direction at a fixed token position.Qwen/Qwen3-8B, LoRA rank 32, thinking OFF (qwen3_disable_thinking).-sft-lora).