license: apache-2.0
tags:
- transformers
- safetensors
- qwen3_5
- qwen3
- thinkingcap
- efficient-thinking
- reasoning
- token-efficient
- lora
- sft
- abliterated
- multi-token-prediction
- text-generation
base_model: - hotdogs/Qwen3.8-27B-abliterated
datasets: - hotdogs/thinkingcap-sft-qwen38-27b
pretty_name: Qwen3.8-27B ThinkingCap Abliterated Preview
Qwen3.8-27B ThinkingCap Abliterated Preview (Merged)
SFT-merged LoRA (checkpoint-42, epoch 1) from the
ThinkingCap efficient-reasoning dataset
(hotdogs/thinkingcap-sft-qwen38-27b).
- Base:
hotdogs/Qwen3.8-27B-abliterated(Qwen3_5, BF16, 55.6 GB) - LoRA: r=32, alpha=64, target = all linear + GDN in_proj layers
- Training: 339 SFT rows, 1 epoch, max_seq 4096, 7x RTX 3090, BF16
- Eval loss (epoch 1): 0.2143 (best of 3 tracked epochs)
- MTP: 15 tensors preserved in blk.64 (restored post-merge)
- Dataset:
hotdogs/thinkingcap-sft-qwen38-27b(369 SFT + 244 DPO pairs,
on-policy from live Qwen3.8-27B-Ablit, oracle-verified 84.2%) - GGUF versions:
hotdogs/Qwen3.8-27B-thinkingcap-abliterated-preview-mtp-GGUF
Files
19 files, 1199 tensor keys, 55.56 GB total.
Usage (transformers)
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained(
"hotdogs/Qwen3.8-27B-thinkingcap-abliterated-preview",
torch_dtype="auto", device_map="auto", trust_remote_code=True)
tok = AutoTokenizer.from_pretrained("hotdogs/Qwen3.8-27B-thinkingcap-abliterated-preview")
📊 Benchmark — real A/B data, not a guess
Every number below comes from live inference runs (same harness, same
prompts, same flags, temperature=0, averaged over multiple runs). Three
models were tested on the identical benchmark so the deltas are apples
to apples:
| label | model |
|---|---|
| normal | Qwen3.8-27B (MTP) — base, no abliteration, no cap |
| abliterated | Qwen3.8-27B-abliterated (MTP) — refusal removed |
| ablit+cap | this model (...-thinkingcap-abliterated-preview) |
Two suites were run:
- Easy — 52 single-shot items (multiple-choice, short math, puzzles),
averaged over 5 runs (260 scored items per model). - Hard — 10 multi-step algebra problems (same distribution as the
ThinkingCap SFT data), averaged over 3 runs (30 items per model).
This is where the models are pushed to think long enough to "run away."
Easy suite (5-run average, 260 items each)
| metric | normal | abliterated | ablit+cap |
|---|---|---|---|
| Multiple choice | 94.4% (85/90) | 93.3% (84/90) | 95.6% (86/90) |
| Math | 93.8% (75/80) | 93.8% (75/80) | 93.8% (75/80) |
| Think | 94.4% (85/90) | 94.4% (85/90) | 94.4% (85/90) |
| Overall | 94.2% (245/260) | 93.8% (244/260) | 94.6% (246/260) |
| think chars (mean ± std) | 271 ± 8 | 324 ± 15 | 329 ± 31 |
| think tokens (mean ± std) | 87 ± 3 | 101 ± 4 | 101 ± 8 |
| refusal rate | >80% | 0% | 0% |
Reading it: on short, easy prompts the thinking length is already small
(~87–101 tokens) and all three land within each other's noise band.
Accuracy is flat (≈94%). The cap is essentially free here — it costs
nothing, which is exactly what you want from an efficiency layer.
Hard suite (3-run average, 30 items each)
| metric | normal | abliterated | ablit+cap |
|---|---|---|---|
| accuracy | 70.0% (21/30) | 70.0% (21/30) | 70.0% (21/30) |
| think chars (mean ± std) | 636 ± 61 | 235 ± 6 | 358 ± 20 |
| think chars (median) | 170 | 170 | 159 |
| think tokens (mean ± std) | 235 ± 20 | 99 ± 2 | 141 ± 8 |
Reading it: on hard multi-step problems the base model starts to run
away (mean 636 chars, pulled up by one 4,868-char outlier). Abliteration is
the biggest reducer (mean 636 → 235, −63%) and it holds accuracy. The
cap sits between the two (358) — see the per-item breakdown below for why.
Per-item thinking length — Hard suite (chars, 3-run avg)
| problem | normal | abliterated | ablit+cap |
|---|---|---|---|
| worker earns $750 (runaway) | 4868 | 852 | 1843 |
| a number × 7, − 3 = 25 | 214 | 218 | 111 |
| cyclist 42 km / 6 h → 12 h | 199 | 192 | 113 |
| two inlet pipes fill a pool | 193 | 193 | 197 |
| train 60 km/h, caught by 80 km/h | 170 | 172 | 166 |
| Sylvia 3× Amy 2 yrs ago | 169 | 168 | 349 |
| rectangle perimeter 36, area? | 157 | 163 | 392 |
| sum of two numbers is 198 | 137 | 138 | 152 |
| ratio boys:girls 3:5 | 130 | 131 | 139 |
| x+y=10, x−y=4 → x·y | 121 | 121 | 119 |
The pattern is the whole story:
- On the runaway item the cap does its job — it cuts the 4,868-char
base spiral down to 1,843 (−62%), and abliteration cuts it further to 852.
This is the real-world win: the cap stops the model from over-thinking. - On short items (120–220 chars) all three are within a few percent —
there is simply little to cut. - On a couple of items (Sylvia, rectangle) the cap runs longer than
abliteration. Abliteration removed the model's shortcuts, so it reasons
more; the cap trims the runaway but leaves that extra reasoning in.
Verdict
ThinkingCap is runaway insurance, not a universal shrinker.
It does not make every answer shorter — on short prompts it is a wash.
What it reliably does is stop the model from spiraling on hard,
multi-step problems (−62% on the runaway item) while keeping accuracy
identical (70% on hard, ≈94% on easy, refusal still 0%). Abliteration is
the bigger reducer; the cap is the guardrail on top. Stacked together
(abliterated + cap = this model) you get the shortest typical thinking
and the smallest worst-case thinking, at no accuracy cost.
How to reproduce
# bench.py is a self-contained stdlib-only harness (no pip install).
# Run the same command against each model on its own llama.cpp endpoint,
# then compare the JSON summaries. Easy suite:
python3 bench.py --api http://<ip>:8081 --suite all \
--output base_normal --workers 4 --temp 0 --timeout 180
# ... x5 per model
# Hard (algebra) suite:
python3 bench.py --api http://<ip>:8081 --suite thinkhard \
--output nh_cap --workers 4 --temp 0 --timeout 240
# ... x3 per model
# A/B two outputs:
python3 compare.py base_normal.json nh_cap.json
Flags kept identical across all runs: --workers 4 --temp 0,--timeout 180 (easy) / 240 (hard). Thinking length is reported asreasoning_content character count and completion_tokens from the API.
📊 Benchmarks
Tested with inspect_ai 0.3.260 on local llama.cpp, reasoning_effort=low,temperature=1, top_k=20, top_p=0.95. All runs are single-epoch (no multi-epoch averaging).
| Benchmark | Q6_K (this repo) | Q4_K_M (this repo) | Qwen3.8-27B¹ | Qwen3.6-27B | Opus 4.6 Max | GPT-5.5 | Kimi K3 | Gemini 3.1 Pro |
|---|---|---|---|---|---|---|---|---|
| GPQA Diamond (198) | 87.1% | 79.5% | 89.2%¹ | 87.8%¹ | 91.3%¹ | 93.6% | 93.5% | 94.3%⁸ |
| IFEval (541, strict)² | 88.2% | 88.4% | ~91.5%⁷ | ~90.4%⁷ | 95.0%⁷ | 94.2% | 92.8% | 93.5%⁸ |
| SWE-bench Verified (50)⁴ | — (retesting) | — (pending) | ~82%⁶ | ~77.2%⁶ | ~80.8%⁶ | 88.7% | 76.8% | 80.6%⁸ |

¹ Official vendor-reported scores from the Qwen3.8-27B model card, reasoning_effort=xhigh.
² Standard Google IFEval via inspect_evals/ifeval (541 prompts, prompt-level strict accuracy).
⁴ inspect_evals/swe_bench_verified_mini: 50 issues (25 django + 25 sphinx), message_limit=100 steps,max_tokens=16384/turn, tool_timeout=210s, no internet, Docker sandbox.
⁶ External/independent evaluations (not the official model card). SWE-bench Verified (500) is a different, harder split than our 50-task mini. Treat as directional, not exact.
⁷ External comparison via serenitiesai.com (F16 reference values). Treat as directional.
⁸ From SmartScope Gemini 3.1 Pro Benchmark Analysis (2026).
GPT-5.5 and Kimi K3 SWE scores from MorphLLM SWE-bench Pro Leaderboard.
Reading it: Q6_K scores within 2.1 pp of the full BF16 Qwen3.8-27B on GPQA
(87.1 vs 89.2) — with a quantized, abliterated, LoRA-merged GGUF running on
consumer GPUs. On IFEval, Q6_K (88.2%) and Q4_K_M (88.4%) are near-identical and sit
within ~3 pp of the F16 reference (~91.5% for Qwen3.8-27B, 95.0% for Opus 4.6). On
SWE-bench, our 50-task mini run is retesting (previous 60% run had a harness issue);
external runs of the full 500-task SWE-bench Verified put Qwen3.8-27B at ~82% (footnote ⁶).
⚠️ Hardware limitation: Two-box setup — Box A: 1× RTX 3090 24GB + 1× RTX 3060 12GB (36 GB),
Box B: 1× RTX 4060 Ti 16GB + 1× RTX 3060 12GB (28 GB). Total 64 GB VRAM across
both boxes. F16 (55 GB) fits on Box A with tight KV-cache; Q6_K (21 GB) and
Q4_K_M (16 GB) are the practical daily-drivers. F16 / Q8_K benchmark runs are
pending — this table will be updated when they land.
⚠️ Token & step limits: SWE-bench is the most constrained benchmark:
message_limit=100(agent turns) ×max_tokens=16384/turn ≈ 1.6M output-token
ceiling. The model is typically step-limited, not token-limited (agent runs
out of turns before exhausting the token budget). GPQA is single-shot withmax_tokens=65536, so the token ceiling is rarely hit (avg ~4K tokens/question).
Smoke test (F16 GGUF)
- 27x43 = 1161 (think 163 chars)
- bat-and-ball = 0.05 (think 161 chars)
- snail wall = day 5 (think 359 chars, base was 4000+)