unrager-4b
The default model of unrager, which hides outrage, ratio bait and engagement farming from your X timeline using a model on your own computer. It reads one post and answers in two or three tokens: KEEP, or HIDE n where n is the number of the rule that is the post's main point.
Real answers on made-up posts, with unrager's default rules:
| post | answer |
|---|---|
| finally got my rust build down to 4s. incremental compiles are magic | KEEP |
| wrote up how we cut p99 latency by 40% by batching our embedding calls | KEEP |
| BREAKING: Congress fails AGAIN. Both parties are DONE. Share if you are sick of it | HIDE 1 electoral politics |
| asked an AI to count the r in strawberry and it failed. they are lying to you | HIDE 10 AI-company dunking |
| footage from last night. casualty counts rising. this is what they will not show you | HIDE 2 war |
| the market crash is coming and nobody is ready. this is how 1929 started | HIDE 9 economic fearmongering |
| RT if you agree. if you do not, unfollow. simple as that | HIDE 18 engagement farming |
| some of you know exactly who you are and what you did. not saying more | HIDE 16 subtweets |
How good it is
Scored on 1,049 real posts from one timeline, labelled by hand (845 keep, 132 hide, 72 either), none of them seen in training, with unrager's default rules in the prompt.
| good posts wrongly hidden | rage caught | AUC | caught at 5% good hidden | size | |
|---|---|---|---|---|---|
| Gemma 4 26B-A4B | 6.5% | 85% | 0.969 | 83% | 16.9 GB |
| Qwen3 4B Instruct (unrager's previous default) | 4.1% | 60% | 0.894 | 62% | 2.5 GB |
| unrager-4b, Q4_K_M | 3.2% | 74% | 0.956 | 86% | 2.7 GB |
| unrager-4b, Q8_0 | 2.7% | 73% | 0.957 | 86% | 4.5 GB |
It hides about half as many good posts as the 26B and a fifth fewer than the model it replaces, while catching about a quarter more rage than that model. Held to the same 5% of good posts hidden it catches slightly more than the 26B. On the 196 made-up posts bundled with unrager (unrager eval) it hides none of 108 good posts and catches 52 of 60 rage posts, against 49 of 60 for the previous default. The hand labels follow the author's own rules, which include a politics rule the defaults lack, so the catch rate is slightly understated. Intervals on 132 hides are wide, around plus or minus 6 points.
Run it
ollama pull hf.co/guitaripod/unrager-4b:Q4_K_M
unrager's setup points at that name, so this is all it needs. (Ollama 0.34.2 fails to pull any hf.co model with "blocked redirect to a different host"; update Ollama.) For llama.cpp:
llama-server -m unrager-4b-q4_k_m.gguf --jinja --ctx-size 8192
curl -s localhost:8080/v1/chat/completions -H 'content-type: application/json' \
-d "$(jq -n --rawfile system system_prompt.txt --arg post '@mara (mara): finally got my rust build down to 4s' \
'{messages:[{role:"system",content:$system},{role:"user",content:$post}],temperature:0,max_tokens:8,chat_template_kwargs:{enable_thinking:false}}')" \
| jq -r '.choices[0].message.content'
system_prompt.txt is unrager's default prompt; the post goes in as @handle (Name): text. To convert the bf16 weights with llama.cpp, pass --no-mtp: the config still declares Qwen3.5's multi-token-prediction head, whose weights were dropped.
How it was made
- 8.6k posts came from the author's own timeline, collected passively over two days. Gemma 4 26B-A4B labelled each one under unrager's default rules, and a post was kept only where Nanbeige4.2-3B gave the same verdict, which dropped 952 of 8.4k. 7.4k posts remained, with the evaluation posts and their near-duplicates removed.
- Qwen3.5-4B, LoRA rank 8 on all linear layers, 2 epochs, answer-only loss, about an hour on one GPU.
- Hide examples counted twice in training. Without that the model was more cautious: 1.4% of good posts wrongly hidden but only 64% of rage caught. Doubling them cost about a point more false hides and bought about nine points more rage caught.
- The first version was tuned to the author's own prompt, whose rule numbers differ from the defaults, so on the default rules it named the wrong rule. It was retrained on the default prompt, and it now names the right rule for about three in four rage posts it catches.
Limits
- Built for unrager's default rules (15 topics plus 5 built-in rage-bait rules). With rules of your own it still follows the prompt, but it has not been measured there; check with
unrager eval --posts. - It over-hides posts about AI companies more than other good posts: 8 of its 27 false hides in the evaluation.
- English-heavy data, little else. Not a moderation or safety model.
Built on Qwen3.5-4B (Apache 2.0). Files: model.safetensors (bf16), unrager-4b-q8_0.gguf, unrager-4b-q4_k_m.gguf, system_prompt.txt.