Boogu Text Encoder (Heretic Qwen3-VL-8B) — DHQ GGUF
DHQ = Dual-Head Quant. The heretic (abliterated) Qwen3-VL-8B from Qwen-Image-2.1-Text-Encoder-Heretic, quantized so that every tensor gets the precision that matters to what the Boogu DiT actually reads (the final-norm output), measured per tensor with gradients through the DiT's text input stage. Each file is exactly the size of the standard llama.cpp file of the same name.
Tuned for Boogu only. For Qwen-Image-2.1 use Qwen-Image-2.1-Text-Encoder-Heretic-DHQ-GGUF.
About the DHQ series
DHQ files are quantized for use as a diffusion model's text encoder: each tensor's precision is chosen by how much its quantization error changes what the target DiT reads (measured through the DiT's own text-input stage), not by next-token loss. They stay normal LLM GGUFs, so the same file can still write or rewrite prompts: where a model is also used as a prompt enhancer (Z-Image-Engineer-V6, the heretic Qwen3-VL-8B), every file is also checked for that (the PE column) and the tables show where it gets worse.
DHQ repos: Qwen-Image-2.1 · Ideogram 4 · Boogu · Z-Image-Engineer-V6 · Qwen3-4B (Z-Image / FLUX.2 klein 4B) · FLUX.3 Klein
We also built Dual-Head Dragon (ComfyUI-DualHead-Dragon), a ComfyUI node that runs one GGUF as both the text encoder and the prompt enhancer (llama.cpp inside). It is public but still in testing, including its LoRA support (separate LoRAs for the encoding and the rewriting head) and DFlash speculative decoding for faster rewriting. The files here work without it (see How to load).
Results
Same heretic bf16 source, same size. Standard = llama.cpp default rules + the same imatrix. TE = relative error of the text conditioning after Boogu's own text input stage, on 36 held-out prompts never used to build or pick anything (lower is better). PE = mean KL divergence of next-token predictions vs bf16 on 80 prompt-rewrite samples, i.e. how well the same file still works as a prompt enhancer (lower is better).
| File | Size | TE standard → DHQ | PE standard → DHQ |
|---|---|---|---|
boogu-te-heretic-dhq-Q4_K_M.gguf |
5.03 GB | 11.3% → 9.7% | 0.0153 → 0.0132 |
boogu-te-heretic-dhq-IQ4_XS.gguf |
4.56 GB | 13.4% → 12.7% | 0.0185 → 0.0197 |
boogu-te-heretic-dhq-Q3_K_M.gguf |
4.12 GB | 20.3% → 19.3% | 0.0559 → 0.0505 |
boogu-te-heretic-dhq-IQ3_M.gguf |
3.90 GB | 22.9% → 19.2% | 0.0649 → 0.0495 |
boogu-te-heretic-dhq-IQ3_S.gguf |
3.79 GB | 24.2% → 21.7% | 0.0604 → 0.0557 |
boogu-te-heretic-dhq-Q2_K.gguf |
3.28 GB | 41.8% → 38.9% | 0.169 → 0.143 |
boogu-te-heretic-dhq-IQ2_S.gguf |
2.87 GB | 51.8% → 43.7% | 0.312 → 0.230 |
Boogu is hard on text-encoder quantization: even Q4_K_M loses ~10%, and below 3 bits the error is 20–40%+.
Use Q4_K_M or IQ4_XS for Boogu if you can. There is no IQ2_M here: the DHQ file did not beat the standard one
(40.4% vs 40.8%).
K or IQ?
Each size step comes in two series built the same way, with different llama.cpp formats:
- K files (
Q*_K*): simple block formats. Fast to decode everywhere — GPU, CPU, Metal, Vulkan — and on the GPU in ComfyUI-GGUF. - IQ files (
IQ*): codebook formats. For a similar error the file is smaller (compare the rows above), but decoding is heavier: fine on llama.cpp GPU backends, slower on CPU, and ComfyUI-GGUF decodes IQ3/IQ2 tensors on the CPU (tens of seconds per prompt). OurIQ4_XSfiles also contain some IQ3 (and in some repos IQ2) tensors, so they are slow in ComfyUI-GGUF too.
ComfyUI-GGUF → use a K file. llama.cpp (or Dual-Head Dragon) → either; IQ if you want the smallest file for a given error.
How to load
Dual-Head Dragon / llama.cpp: these are standard qwen3vl GGUFs; the scores above were measured this way.
ComfyUI: needs ComfyUI-GGUF and the add-on
ComfyUI-GGUF-Qwen3VL-TE (commit 1f52b00 or later).
Put the GGUF and mmproj-boogu-te-heretic-dhq-f16.gguf (this repo) in models/text_encoders/ without renaming
them (the mmproj is found by file-name prefix), then CLIPLoaderGGUF with type boogu.
[!WARNING] Without the add-on (or with an older version) ComfyUI does not see the vision tower, treats the file as plain Qwen3-8B and builds the wrong text encoder without an error:
boogufalls back to the FLUX.2 klein 9B encoder. With the add-on the conditioning matches the bf16 safetensors encoder (cos 0.9997, checked with a Q8_0 GGUF).
Reproducibility
recipes/ has one recipe per file: source repo and revision, llama.cpp commit, importance matrix (sha256), and the
type of every tensor as built. These files were built on aarch64 (GB10); rebuilding a recipe on aarch64 gives a
bit-identical file (checked for every uploaded file). On x86_64 llama.cpp rounds a few blocks differently.
License
Apache-2.0, same as the base weights (Qwen3-VL-8B-Instruct, Alibaba Cloud / Qwen). See LICENSE and NOTICE.