AlexWortega/qwen35-4b-soyuz-abliterated-v3-multi

🤗 Hugging Face sourceimage-text-to-textapache-2.04.5B params9.1 GBsafetensors✓ 2 checksumsupdated today
Submit in one command

Run it next to your model folder. It makes the torrent, checks your files against Hugging Face, and submits it. You just start seeding and paste your key from your account. It only reads your files and never changes them. Read the script first if you like.

curl -fsSL https://pirateface.co/package.sh | bash -s -- --repo AlexWortega/qwen35-4b-soyuz-abliterated-v3-multi ./model-folder
Needs a seeder →

Qwen3.5-4B Soyuz — Abliterated (v3)

Weight-orthogonalised version of AlexWortega/qwen35-4b-soyuz-merged. Removes the residual-stream "fail-mode" component identified from the model's own pass-vs-fail trajectory contrasts.

Method multi-layer per-layer ortho (L8-24), strength=0.5
tbench-2 (17-task) 2/17
HermesAgent-20 6 / 20
HA20 passes HA-01, HA-02, HA-03, HA-06, HA-09, HA-11

Usage with sglang

python -m sglang.launch_server \
    --model-path AlexWortega/qwen35-4b-soyuz-abliterated-v3-multi \
    --dtype bfloat16 --trust-remote-code \
    --tool-call-parser hermes \
    --chat-template hermes_qwen.jinja

(hermes parser is needed for the <tool_call>{...}</tool_call> → OpenAI tool_calls conversion — without it agent benches see zero tool calls.)

Abliteration recipe

  1. Build pass-vs-fail contrast: 60 PASS trajectories (reward=1.0) + 60 cleaned FAIL trajectories from soyuz's own evals (claw-eval, tbench-2, MMLU-Pi-agent). Fail trajectories filtered by Gemini-3-flash to keep only CLEAN_FAIL labels (235 of 246 negatives).
  2. Capture last-token residual activations per layer over the rendered contrast (text-only Qwen3_5ForCausalLM).
  3. Compute per-layer direction = mean(refuse) - mean(comply), normalise; pick best layer via AUC.
  4. Orthogonalise model weights (embed rows + every layer's o_proj.weight and down_proj.weight columns) against the direction, optionally blended with strength α: W ← W − α · (W − W_orth).
  5. Wrap text-only weights into the multimodal Qwen3_5ForConditionalGeneration arch so sglang can serve them (vision tower preserved from base; only language_model.* weights are abliterated).

Repos

Variant tbench-17 HA20 Card
baseline qwen35-4b-soyuz (LoRA) 5/17 4/20 link
qwen35-4b-soyuz-abliterated-v2 (single-L, s=0.5) 3/17 8/20 link
qwen35-4b-soyuz-abliterated-v3-multi (per-layer, s=0.5) 2/17 6/20 link

v2 = highest HA20 (2× baseline). v3 picks up disjoint HA20 tasks (HA-01/02 memory-specific) that v2 misses.

W&B + raw eval logs: https://wandb.ai/alexwortega/vae-llm-agents (training base).