license: apache-2.0
base_model: HauhauCS/Qwen3.8-27B-Uncensored-HauhauCS-Aggressive-MTP-GGUF
base_model_relation: quantized
library_name: ninfer
pipeline_tag: image-text-to-text
tags:
- ninfer
- qwen3.8
- groupwise-int
- dflash2
- speculative-decoding
- uncensored
- artifact
- rtx-5090
Qwen3.8-27B Uncensored (HauhauCS Aggressive) + DFlash2 — NInfer artifact
A single-file .ninfer artifact for the NInfer engine
(single-GPU C++/CUDA inference) carrying the community uncensored tune
HauhauCS/Qwen3.8-27B-Uncensored-HauhauCS-Aggressive-MTP-GGUF
as the target model and the official z-lab/Qwen3.8-27B-DFlash2
draft model as the DFlash2 speculative companion (recipe qwen3_8_27b-v2, the first NInfer recipe
with the DFlash2 payload). The native NextN/MTP head of the tune is preserved as well, so both--spec mtp and --spec dflash2 work.
| Artifact identity | qwen3.8-27b / groupwise-int (registered engine identity, container v2) |
| File | qwen3_8_27b_hauhaucs_aggressive_dflash2.ninfer — 20,437,336,576 bytes |
| SHA-256 | e2f2b0dbd5a23085d21cec99894074f392b51934cd45a282f5c04b08a6fa18a8 |
| Objects | 1190 (1184 tensors, 6 frontend resources; formats BF16 627, FP32 96, I32 1, Q4G64_F16S 183, Q5G64_F16S 246, Q6G64_F16S 1, W8G32_F16S 30) |
| Built with | ninfer tools.convert.qwen3_8_27b.convert, recipe qwen3_8_27b-v2, converter revision 487f89773f07cb18a2fb841fe0971ec9634d409b |
| Target source | HauhauCS Aggressive Q8_K_P GGUF (Q8_0 matrices, BF16 attention q/k/v and lm_head, F32 control tensors) + the release's BF16 mmproj |
| Draft source | z-lab/Qwen3.8-27B-DFlash2 revision 50307d4c4cde6860d4eee73e2547cd786fe8e8a4 (byte-identical to nerkyor/.../BF16/DFlash2-FP8/model.safetensors, sha256 67fc76d6…) |
| Verified | smoke-run on stock NInfer 487f8977 (CUDA 13.1, RTX PRO 4500 Blackwell (32 GB, sm_120)): plain: decode 43.8 tok/s; dflash2: decode 59.8 tok/s, acceptance 27.2% (2.90 tok/round); dflash2_think: decode 112.1 tok/s, acceptance 64.3% (5.50 tok/round) |
Download & run
hf download WaveCut/Qwen3.8-27B-Uncensored-HauhauCS-Aggressive-DFlash2-NInfer qwen3_8_27b_hauhaucs_aggressive_dflash2.ninfer --local-dir models
# DFlash2 speculative decoding (7 drafts, optimized head), CLI:
./build/apps/ninfer models/qwen3_8_27b_hauhaucs_aggressive_dflash2.ninfer --prompt "Summarize the difference between prefill and decode." \
--max-context 16384 --spec dflash2 --draft-tokens 7 --lm-head-draft
# OpenAI/Anthropic-compatible server:
./build/apps/ninfer-serve models/qwen3_8_27b_hauhaucs_aggressive_dflash2.ninfer --max-context 32768 --kv-capacity auto \
--spec dflash2 --draft-tokens 7 --lm-head-draft
--spec mtp --draft-tokens 3 --lm-head-draft selects the tune's own NextN head instead. Vision
(--vision) is the official tower: the release's BF16 projector reproduces it bit-for-bit through the FP16
export path, so the artifact carries the official BF16 vision words.
Hardware. Upstream NInfer targets one RTX 5090-class Blackwell card (sm_120, 32 GB); the smoke
run above used an RTX PRO 4500 Blackwell. The RTX 3090 fork
Don-Chad/ninfer-3090 loads the same qwen3.8-27b / groupwise-int identity once it carries the upstream DFlash2 runtime.
How it was built
The tune is published only as GGUF quants, so the target weights were rebuilt into the officialQwen/Qwen3.8-27B safetensors layout first, then converted with the unmodified stock converter:
- GGUF → HF BF16 (
gguf_to_hf.py, included). Every llama.cppqwen35export transform was
inverted exactly: the Gated-DeltaNet V-head grouped→tiled reorder (qkv/z/a/b rows,A_log,dt_bias, conv1d channels,out_projcolumns),-exp(A_log), the+1on zero-centered RMSNorm
weights, the conv1d squeeze, and themtp.* → blk.64NextN rename; themmprojinverts the Conv3D
temporal split and merger names.Q8_0blocks are dequantized exactly like ggml (f16 scale × int8, RNE to BF16). - Exactness against the official checkpoint. This release was exported from an FP16 copy of the
weights, so llama.cpp computedw+1and-exp(A_log)in FP16 before storing F32 and the BF16/F32
words in the GGUF are lossy relative to the original BF16 checkpoint; where re-applying that forward
transform to the officialQwen/Qwen3.8-27Btensor reproduces the GGUF words bit-for-bit, the
official BF16 word was used. ForQ8_0matrices the official tensor was re-quantized with ggml's rule and compared
byte-for-byte: identical codes ⇒ the tune did not touch that matrix ⇒ exact official BF16 words;
any difference ⇒ the dequantized tune values. Result: 49 of 1199 tensors carry the tune (all in text layers 19–53); every other tensor reproduced the GGUF words bit-for-bit from the official checkpoint through the FP16 export path and therefore carries the exact official BF16 words (1150 tensors, 404 of them Q8_0 matrices whose only differences were ±1 rounding flips at quantizer ties with identical block scales). The modified matrices by kind:model.language_model.layers.N.linear_attn.out_proj.weight× 13model.language_model.layers.N.mlp.down_proj.weight× 16model.language_model.layers.N.mlp.gate_proj.weight× 7model.language_model.layers.N.mlp.up_proj.weight× 7model.language_model.layers.N.self_attn.o_proj.weight× 6
| reconstruction status | tensors |
|---|---|
official-exact(f16-path) |
746 |
official-exact(rounding-noise) |
404 |
gguf-dequant(modified) |
49 |
3. Vision: the release's BF16 mmproj reproduces the official vision tower bit-for-bit through FP16 (333/333 tensors) — the tune did not touch vision. |
|
4. Frontend resources (tokenizer, chat template, preprocessor configs, generation_config.json) |
|
are the official Qwen/Qwen3.8-27B files pinned by SHA-256 in the converter. |
|
| 5. Converter: `python3 -m tools.convert.qwen3_8_27b.convert --model |
|
qwen3_8_27b_hauhaucs_aggressive_dflash2.ninfer.conversion.json; the GGUF→HF decisions are in gguf_to_hf.report.json. |
Caveats
- Double quantization on the modified tensors. Matrices the tune changed exist only as
Q8_0
and are re-quantized into NInfer's groupwise profile (Q4/Q5/Q6/W8 groupwise + BF16). Unmodified
matrices carry the exact official BF16 words. - The engine binds this file to the registered
qwen3.8-27b / groupwise-intprofile: architecture,
tokenizer and chat template are the official ones; only the weights carry the tune. The tune's own
chat template in the GGUF is not embedded. - DFlash2 lossless verification: the target model authorizes every emitted token, so the uncensored
behaviour of the tune is unchanged by the draft model; DFlash2 only affects speed/acceptance. - Set the sampler explicitly (
temperature=1.0, top_p=0.95, top_k=20) if you rely on the tune's
intended behaviour. - Greedy decoding with
--spec dflash2is lossless in distribution but not bit-parity with plain greedy:
the verify pass runs a batched floating-point route, so long greedy outputs can diverge by a token
(in the smoke run: one word of the haiku after ~80 identical tokens).
Lineage
Qwen/Qwen3.8-27B (1d4bf0f2)
├─ HauhauCS/Qwen3.8-27B-Uncensored-HauhauCS-Aggressive-MTP-GGUF (Q8_K_P + BF16 mmproj, Apache-2.0)
│ └─ exact GGUF→HF inversion + official-consistency reconstruction (gguf_to_hf.py)
└─ z-lab/Qwen3.8-27B-DFlash2 (50307d4c, MIT) ── DFlash2 companion
└─ qwen3_8_27b_hauhaucs_aggressive_dflash2.ninfer (this repo, NInfer groupwise-int profile, recipe v2)
Licensed Apache-2.0 for the target weights (both upstreams), MIT for the DFlash2 draft weights.