Views
No views yet



chat_template_kwargs:{"messages": [...], "chat_template_kwargs": {"reasoning_effort": "high"}}low, medium, xhigh — high is accepted but is an alias for xhigh, not a step below it. Omit it for Dirk's lean default (medium). Turn thinking off entirely
with "enable_thinking": false.Qwen/Qwen3.8-27B, a dense 27B vision-language model (vision preserved).nextn) head: runtimes with multi-token-prediction speculative decoding can use it for
faster generation.chat_template_kwargs: {"terse": false}). The GSQ-RCO- tiers carry v22.4.1, which also stands
down when the runtime injects its own tool protocol (an LM Studio fix); the UD- tiers carry
v22.4.0 and are otherwise identical — they pick up v22.4.1 on the next pass.
It is byte-swapped into the GGUF metadata; the weights and the MTP tensors are untouched.| stock template | Sharp template | change | |
|---|---|---|---|
| Claw-Eval, answer component | 59.3 | 66.7 | +7.4 |
| Claw-Eval answer tokens | 5393 | 2217 | −59% |
| MMLU-Pro tokens per correct answer | 1601 | 1248 | −22% |
reasoning_effort=xhigh on every call — always-on maximum-effort
reasoning. Dirk removes that default, so it runs at the model's native medium effort: in both
the official and Unsloth templates, medium is the setting that injects no reasoning instruction
(only xhigh and low add one), and Dirk simply leaves it there. So Dirk thinks at the baseline and
answers terse, instead of being pushed to the ceiling on every request. Set reasoning_effort yourself
(low, medium, xhigh; high maps to xhigh), per request, through chat_template_kwargs — the OpenAI-style
top-level reasoning_effort field is dropped by llama.cpp and oMLX, so it must go there (see the JSON example above).| file | size | notes |
|---|---|---|
Dirk-Qwen3.8-27B-GSQ-RCO-IQ2_XS.gguf | 8.8 GB | smallest tier — the 12 GB card pick, with room for real context |
Dirk-Qwen3.8-27B-UD-Q2_K_XL.gguf | 9.8 GB | 2-bit UD; kept for continuity — prefer GSQ-RCO-IQ2_S just below it, which is smaller and better |
Dirk-Qwen3.8-27B-GSQ-RCO-IQ2_S.gguf | 9.6 GB | the 12 GB pick — 2-bit that still tracks the base model closely |
Dirk-Qwen3.8-27B-GSQ-RCO-IQ3_XXS.gguf | 10.4 GB | fits 16 GB with room to spare, and a 12 GB card at shorter context |
Dirk-Qwen3.8-27B-GSQ-RCO-IQ3_S.gguf | 12.1 GB | 3-bit at near-base quality; the value pick if 16 GB is your ceiling |
Dirk-Qwen3.8-27B-UD-Q3_K_XL.gguf | 13.1 GB | 3-bit with headroom to spare on 16 GB; prefer IQ4_XS below unless you need the extra ~1 GB for context |
Dirk-Qwen3.8-27B-UD-IQ4_XS.gguf | 14.3 GB | the 16 GB pick — 4-bit quality with room for real context, where Q4_K_S leaves almost none |
Dirk-Qwen3.8-27B-UD-Q4_K_S.gguf | 15.4 GB | tight 4-bit; useful when Q4_K_XL will not fit alongside your context |
Dirk-Qwen3.8-27B-UD-Q4_K_XL.gguf | 17.6 GB | start here — the 24 GB-card default; best size/quality balance |
Dirk-Qwen3.8-27B-UD-Q5_K_XL.gguf | 20.9 GB | the recommended 24 GB pick — dynamic + imatrix-calibrated, and small enough to leave real room for context |
Dirk-Qwen3.8-27B-UD-Q6_K.gguf | 22.0 GB | 6-bit — the largest that still fits 24 GB, with tighter headroom than UD-Q5_K_XL |
Dirk-Qwen3.8-27B-UD-Q6_K_XL.gguf | 25.3 GB | near-max quality; wants ~32 GB |
Dirk-Qwen3.8-27B-UD-Q8_K_L.gguf | 28.0 GB | 8-bit, near-lossless — fits 48 GB with room for 256k context; a touch leaner than Q8_K_XL |
Dirk-Qwen3.8-27B-UD-Q8_K_XL.gguf | 31.5 GB | 8-bit, effectively lossless |
nextn) head, and all share mmproj-F16.gguf
for vision — you need only one copy of it.UD- tiers are Unsloth Dynamic 3.0.
GSQ-RCO- tiers come from IST-DASLab
— Alistarh's lab, the GPTQ group — and are built by a genuinely different method: GSQ
(arXiv) learns each tensor's quantization grid through a
Gumbel-Softmax relaxation instead of rounding to it, and RCO (arXiv)
then picks a per-tensor quantization type under an exact size budget by gradient descent on the task
loss, rather than from a hand-tuned table. Below ~3 bpw that buys a lot: at a matched 8.4 GB, ISTA
measure it well ahead of the equivalent UD file on wikitext perplexity and on AIME25 / GPQA-Diamond /
LiveCodeBench v6. By ~3.5 bpw the two methods converge to within noise, which is exactly why the
ladder switches over at 3 bpw and stays on UD above it. Those are ISTA's measurements, not ours —
we have re-templated their files, not re-benchmarked them.:quant tag from the table (:Q4_K_XL, :IQ4_XS, :Q6_K_XL, …).
The tag is required: this repo has no Q4_K_M, so a bare -hf with no tag falls back to the wrong
file. The mmproj rides along in the manifest, so vision works from the same tag — no second download.1# text — auto-downloads to llama.cpp's own cache (24 GB-card default shown)
2llama-server -hf peculiar-ragdoll/Dirk-Qwen3.8-27B-GGUF:Q4_K_XL -ngl 99 # or llama-cli
3# vision — same tag; the mmproj is pulled automatically
4llama-mtmd-cli -hf peculiar-ragdoll/Dirk-Qwen3.8-27B-GGUF:Q4_K_XL -ngl 99 --image photo.jpg-m at the local path:1hf download peculiar-ragdoll/Dirk-Qwen3.8-27B-GGUF Dirk-Qwen3.8-27B-UD-Q4_K_XL.gguf \
2 mmproj-F16.gguf --local-dir Dirk
3llama-cli -m Dirk/Dirk-Qwen3.8-27B-UD-Q4_K_XL.gguf -ngl 99 # text
4llama-mtmd-cli -m Dirk/Dirk-Qwen3.8-27B-UD-Q4_K_XL.gguf --mmproj Dirk/mmproj-F16.gguf -ngl 99 # vision--reasoning-format deepseek to llama-server. It returns
the model's <think> block in the OpenAI reasoning_content field instead of inline in content,
so the agent never sees raw thinking tokens in the text stream. Current llama.cpp already defaults
to this (--reasoning-format auto is defined as "same as deepseek"), so it is a no-op on a recent
build and insurance on an older one. Just don't pass --reasoning-format none — that is the one
that leaves the tags inline.