kingjones777/DiffusionGemma-26B-A4B-it-ROCmFP4-GGUF
DiffusionGemma-26B-A4B-it — ROCmFP4 / ROCmFPX GGUF
AMD-native FP4 / FP8 GGUF builds of google/diffusiongemma-26B-A4B-it for RDNA3.5 / Strix Halo (gfx1151). MoE, 26B total / ~4B active, 128 experts / top-8.
This is a block-diffusion model: it denoises a 256-token canvas in parallel over N steps. llama-server is the wrong binary — use llama-diffusion-cli / llama-diffusion-gemma-server. Text-only; the source ships no mmproj and no MTP draft head, so neither is included here.
Variants
All four: 3/3 correctness, [692/692] tensors, constant 15.09 MiB header delta (spread 5.6 KB). Heads protected — tie_word_embeddings: true, so --output-tensor-type is a silent no-op and --token-embedding-type is the only lever: q6_K on the 4-bit, q8_0 on the rest.
⭐ The 4-bit is NOT the fastest here — and that is the interesting part
On autoregressive models our 4-bit always wins, because decode is bandwidth-bound. Diffusion denoises 256 positions at once, so each step is a large GEMM and the workload is compute-bound. gfx1151 has no FP4 hardware path, so FP4 is unpacked per element in software — and at batch 256 that unpack costs more than the memory it saves.
A 24.68 GiB file runs a step faster than a 13.46 GiB one (414 ms vs 468 ms). Take the 8-bit unless you are short on disk.
⭐⭐ Scheduler tuning is worth more than the quant choice
The step scheduler is entropy-bound: --diffusion-steps is ignored, and the model stops when its own entropy budget is met. The stock budget stops conservatively. Loosening it:
--diffusion-eb-entropy-bound 0.8 --diffusion-eb-confidence 0.05took a mainline Q8_0 build of these same weights from 45.3 → 53.56 t/s (12 steps x 398 ms, median of 5, spread 1.012) with all quality gates still passing — 1.30x over the baseline above. Adding -n 512 (two blocks) reached 55.3 t/s. Since e2e = steps x ms/step, removing steps beats shaving milliseconds.
⛔ There is a quality cliff between 10 and 12 steps. At 8 steps the model reaches 78.5 t/s and produces degenerate output ("list1111 ****") — and the three factual gates still pass, because short factual answers converge early. Only a code-generation check caught it. 12 steps is the floor for clean full-canvas output. If you tune this, gate on generated prose or code, not on needle-in-haystack questions.
⚠️ Diffusion cost is decoupled from output length
"Say hi" still costs 9 steps / ~4 s, because the whole 256-token canvas is denoised regardless. An autoregressive model emits that reply in a fraction of a second. Diffusion is competitive only when you actually want a full canvas — compare it as a curve over output length, never as a single ratio.
For reference, the autoregressive sibling of these weights (kingjones777/Gemma-4-26B-A4B-it-ROCmFP4-GGUF), same box and same recipe, measures 54.39 t/s without a drafter.
Notes
- HIP works on ROCm 7.2.4 (
lddshows no Vulkan libraries linked). An older 0.73x figure for this model came from a box whose rocBLAS could not load the gfx1151 Tensile library, forcing a Vulkan fallback whose sampler ran on CPU — that number does not describe this build. - Answers sometimes double-print (
391391); long code replies can be cut mid-canvas when the scheduler stops. Decoder behaviour, not quantization damage.
Credits
FP4/FP8 tensor types from the ROCmFPX fork of llama.cpp. These types do not exist in mainline llama.cpp — a ROCmFPX-capable build is required to load them.
