Kevletesteur/DeepSeek-V4-Flash-0731-StrixHalo-Verified-GGUF
๐ DeepSeek-V4-Flash-0731 ยท StrixHalo-Verified (q6kattn GGUF)
TL;DR ๐ฏ A 284B MoE in 103 GB (2.90 bpw) that we verified against the full-precision official API on identical protocols: ๐ข 90.8% token-identical, ๐ข 240/240 paired-QA parity, ๐ข deep-derivation parity (SymPy-checked), ๐ข 0.0% confident-wrong-answer rate. Tuned end-to-end for AMD Strix Halo (Ryzen AI Max+ 395, gfx1151, 115 GB unified RAM) on mainline llama.cpp โ no fork. Every flag below is a measurement, not a vibe. ๐
What's different from the original unsloth UD-IQ3_XXS? The three attention tensor families that dominate the per-token byte budget (attn_q_b, attn_output_a, attn_output_b โ 51.9% of all bytes read per token, more than the 256 experts combined!) are requantized Q8_0 โ Q6_K from the clean source. Measured effect: +23.8% generation on long-form output, and draft acceptance jumping 44% โ 63% (less attention noise keeps the speculative drafter and the target in agreement). ๐
๐ฆ Install (Strix Halo / gfx1151)
# 1๏ธโฃ One-time: raise the unified-memory GPU ceiling (the single biggest win: ร2.8 !)
# Default GTT = half your RAM. On a 128 GB box you want ~110 GiB:
echo 'GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT amdgpu.gttsize=112640 ttm.pages_limit=28835840"' \
| sudo tee /etc/default/grub.d/99-amdgpu-gtt.cfg
sudo update-grub && sudo reboot
# 2๏ธโฃ Build llama.cpp (mainline!) for ROCm/HIP
git clone https://github.com/ggml-org/llama.cpp && cd llama.cpp
cmake -B build -DGGML_HIP=ON -DAMDGPU_TARGETS=gfx1151 -DCMAKE_BUILD_TYPE=Release
cmake --build build -j
# 3๏ธโฃ Download this repo (model + the DSpark drafter from unsloth's repo)
hf download Kevletesteur/DeepSeek-V4-Flash-0731-StrixHalo-Verified-GGUF
hf download unsloth/DeepSeek-V4-Flash-0731-GGUF dspark-DeepSeek-V4-Flash-0731-Q8_0.gguf
# โ requantize the drafter to Q3_K_S (8.5 GB) with llama-quantize, or use it as-is (10.9 GB)
# โ
Verify integrity BEFORE first launch (we learned this the hard way):
sha256sum -c <(echo "538ec6932c50c6993f8a2cb18dc138e0fb5f6a7c2659e53a7566f1dc8ebb4344 DeepSeek-V4-Flash-0731-UD-IQ3_XXS-q6kattn.gguf")โ๏ธ Launch (every flag measured โ see "why" table below)
GGML_CUDA_DISABLE_GRAPHS=1 LLAMA_NO_FUSE_HC_POST=1 \
./build/bin/llama-server \
-m DeepSeek-V4-Flash-0731-UD-IQ3_XXS-q6kattn.gguf \
--no-mmap -fa on -ctk q8_0 -ctv q8_0 \
-ngl 99 -t 12 -b 2048 -ub 512 -c 262144 \
--n-cpu-moe 16 \
--model-draft DSpark-draft-Q3_K_S.gguf --spec-type draft-dspark \
--spec-draft-n-max 2 --spec-draft-type-k q8_0 --spec-draft-type-v q8_0 \
--temp 1.0 --top-p 0.95 --min-p 0.0๐งจ Errors to avoid (each one cost us hours-to-days)
- ๐ฅ Don't evaluate quality through raw `/completion`. The auto-injected
<think>can close instantly at temp 0 โ the model answers reflexively with 10-char reasoning traces and looks broken. We "discovered" a factual-recall deficit that was 100% this artifact. Use `/v1/chat/completions` for anything quality-related. - ๐ Never use a 2-bit drafter. Draft hit-rate collapses to 9-15% and speculation then loses 40% vs no drafter at all. Q3KS (3.44 bpw) minimum. "A degraded drafter only costs acceptance" โ true, and acceptance IS the entire gain.
- โ๏ธ Never combine `draft-dspark` with ngram modes. Syntactically accepted, destroys DSpark (+101% โ +13% on tool calls). Ngram modes alone lose up to โ46%.
- ๐ Don't transpose optima across contexts, quants or models. Batch size swept at 32k and deployed at 256k cost us ร3.7. KV f16 flipped from +21% to โ20.6% between two quants.
- ๐ง Wait for GTT release after killing a server before starting the next (the driver frees buffers after the process dies) โ poll
mem_info_gtt_used, don'tsleep 5. - ๐ฒ Speculative decoding here is quality-neutral but not bit-exact (batched verification reorders float reductions; near-tie argmax can flip). For token-paired benchmarks, bench with the drafter off.
- ๐พ Use
--slot-save-path+ the save/restore API around restarts: 25 ms instead of ~6 min of re-prefill for a 30k-token session (ร14,000).
๐ฌ How this was verified (summary)
Paired protocols, identical serving path both sides, instruments validated on synthetic cases before any model run (they caught 9 real bugs โ see the harness repo):
Also measured: Q5_K attention has better wikitext perplexity and worse real behavior (failed temp-0 probes, one repetition-loop) โ our third demonstration that PPL โ quality.
๐ Reproduce
recipe/requant_attention.sh + recipe/tensor_types_q6kattn.txt rebuild this file from unsloth's UD-IQ3_XXS shards in ~15 min (129 tensors requantized, 1,199 copied bit-identical, every tensor explicitly pinned โ unpinned tensors silently fall into mixture heuristics).
๐งช Full methodology, harness & negative results
๐ [Kevletesteur/quant-vs-api-parity-harness](https://huggingface.co/datasets/Kevletesteur/quant-vs-api-parity-harness) โ the complete benchmark toolkit (gates, teacher forcing, SymPy oracles, calibration), plus NEGATIVE_RESULTS.md: what did not work, with numbers โ three heavy engineering efforts abandoned on measurement, and the 9 instrument traps we fell into so you don't have to. ๐ชค
๐ Provenance & integrity
deepseek-ai/DeepSeek-V4-Flash-0731 (MIT) โ unsloth/DeepSeek-V4-Flash-0731-GGUF (UD-IQ3_XXS, imatrix) โ this repo (attention families requantized; experts untouched).
sha256 538ec6932c50c6993f8a2cb18dc138e0fb5f6a7c2659e53a7566f1dc8ebb4344
size 103,159,533,696 bytesBenchmarked on: AMD Ryzen AI Max+ 395 (gfx1151/RDNA 3.5), ROCm 7.1, 115.3 GiB unified, llama.cpp mainline HIP. Measured, documented, and calibrated โ enjoy. ๐
