Views
No views yet
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. 📏
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). 🚀1# 1️⃣ One-time: raise the unified-memory GPU ceiling (the single biggest win: ×2.8 !)
2# Default GTT = half your RAM. On a 128 GB box you want ~110 GiB:
3echo 'GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT amdgpu.gttsize=112640 ttm.pages_limit=28835840"' \
4 | sudo tee /etc/default/grub.d/99-amdgpu-gtt.cfg
5sudo update-grub && sudo reboot
6
7# 2️⃣ Build llama.cpp (mainline!) for ROCm/HIP
8git clone https://github.com/ggml-org/llama.cpp && cd llama.cpp
9cmake -B build -DGGML_HIP=ON -DAMDGPU_TARGETS=gfx1151 -DCMAKE_BUILD_TYPE=Release
10cmake --build build -j
11
12# 3️⃣ Download this repo (model + the DSpark drafter from unsloth's repo)
13hf download Kevletesteur/DeepSeek-V4-Flash-0731-StrixHalo-Verified-GGUF
14hf download unsloth/DeepSeek-V4-Flash-0731-GGUF dspark-DeepSeek-V4-Flash-0731-Q8_0.gguf
15# → requantize the drafter to Q3_K_S (8.5 GB) with llama-quantize, or use it as-is (10.9 GB)
16
17# ✅ Verify integrity BEFORE first launch (we learned this the hard way):
18sha256sum -c <(echo "538ec6932c50c6993f8a2cb18dc138e0fb5f6a7c2659e53a7566f1dc8ebb4344 DeepSeek-V4-Flash-0731-UD-IQ3_XXS-q6kattn.gguf")1GGML_CUDA_DISABLE_GRAPHS=1 LLAMA_NO_FUSE_HC_POST=1 \
2./build/bin/llama-server \
3 -m DeepSeek-V4-Flash-0731-UD-IQ3_XXS-q6kattn.gguf \
4 --no-mmap -fa on -ctk q8_0 -ctv q8_0 \
5 -ngl 99 -t 12 -b 2048 -ub 512 -c 262144 \
6 --n-cpu-moe 16 \
7 --model-draft DSpark-draft-Q3_K_S.gguf --spec-type draft-dspark \
8 --spec-draft-n-max 2 --spec-draft-type-k q8_0 --spec-draft-type-v q8_0 \
9 --temp 1.0 --top-p 0.95 --min-p 0.0| flag | why (measured) |
|---|---|
--no-mmap | 🔴 mandatory on unified memory — with mmap the model exists twice (GPU buffer + page cache): 51 min of thrashing vs 40 s load |
GGML_CUDA_DISABLE_GRAPHS=1 | +3.0% — a 256-expert MoE re-routes every token; HIP graph re-instantiation costs more than launch amortization saves |
LLAMA_NO_FUSE_HC_POST=1 | +1.5% — this specific micro-fusion loses on gfx1151 |
-ctk/-ctv q8_0 | on THIS quant, f16 KV is −20.6% (on the previous quant it was +21%… settings do not transpose — re-measure in your config) |
--n-cpu-moe 16 | frees 33 GB of GTT for 0.1% cost — and prefill improves 2.4× (the constraint is memory pressure, not compute) |
--spec-draft-n-max 2 | ⚠️ the optimum depends on context depth: 3 wins at short context, 2 wins from ~16k on (+3-4%). Long-context agents → 2. There is a hard cliff at n≥4 (RDNA3 MMVQ max_batch=4 for these expert types) |
--temp 1.0 --top-p 0.95 | the values sourced from DeepSeek + unsloth (lower temp is faster via draft acceptance, but unsourced) |
| speed you should see | ~20-27 t/s short ctx (task-dependent!), ~14-16 t/s @16k, ~11 t/s @150k · prefill ~130 t/s |
/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.draft-dspark with ngram modes. Syntactically accepted, destroys
DSpark (+101% → +13% on tool calls). Ngram modes alone lose up to −46%.mem_info_gtt_used, don't sleep 5.--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).| probe | result vs full-precision API |
|---|---|
| 🧬 token-level teacher forcing (17,929 positions, 4 domains × EN/FR) | 90.8% top-1 agreement · original's token outside local top-20: 0.04% |
| 🧮 240-item exact-answer bank (McNemar, 6 families) | 240/240 = 240/240, zero discordance (gap bounded ≲1.2%) |
| 📐 60 multi-step derivations, SymPy oracle | parity |
| 🛠️ structured tool-call sequences | 25/25 both sides |
| 🚨 confident-wrong-answers P(answers ∧ wrong) | 0.0% |
| 🇫🇷 French | more token-faithful than English (88.1% vs 83.0% on physics) |
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).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. 🪤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 bytes