Skip to content
Octopus Research Institute
RN-2026-0015Research notePeer review: Not peer reviewedEvidence: ExperimentalStatus: Released

DiffusionGemma-26B compatibility assessment: NEEDS_ARCH_SUPPORT on Apple Silicon (pre-port, external llama.cpp baseline)

Ran Tao (Octoryn Research)

This is not peer-reviewed. Treat it as a working document, not a validated result.

Abstract

Compatibility assessment of the DiffusionGemma-26B-A4B-it Q4_K_M GGUF (a block-diffusion MoE: non-causal, fixed canvas, self-conditioning) against a multi-backend inference engine on Apple Silicon (M1 Ultra, Metal). On-box header parsing identifies a ~25B-total / ~3.8B-active model. Verdict: NEEDS_ARCH_SUPPORT — the engine cannot load the GGUF and upstream llama.cpp rejects the architecture. An external self-built llama.cpp Metal baseline (not the engine under test) hits ~14-22 tok/s single-stream at q4. Public marketing throughput is apples-to-oranges vs single-stream Metal; one is refuted.

1. Contribution (Claimed / NOT claimed)

Claimed. This note records a first-party compatibility assessment of the DiffusionGemma-26B-A4B-it Q4_K_M GGUF (about 16.8 GB, GGUF V3, ~5.3 bits-per-weight) against a multi-backend inference engine, evaluated on an Apple M1 Ultra (128 GB unified memory, Metal). It contributes: (a) a first-hand GGUF-header fingerprint of the architecture, parsed on-box; (b) the honest evaluation-time verdict NEEDS_ARCH_SUPPORT, with the first-hand load failures that justify it over narrower categories; (c) an external llama.cpp Metal baseline (clearly not the engine under test) as a community reality anchor; and (d) an adversarial normalization of public marketing tok/s claims against that anchor.

NOT claimed. This is not a benchmark report. The tok/s figures are a single-run external llama.cpp baseline plus public-claim normalization; they are not an engine measurement and not a multi-run benchmark. No claim is made that the engine could load, decode, or match the model at evaluation time (it could not). No iso-quality, multi-hardware, or production-throughput claim is made. A later forward-built / decode-running refinement is referenced only as a cross-link; its evidence lives in the cross-linked companion object, not here.

2. Methods

AxisValue (source)
ModelDiffusionGemma-26B-A4B-it, Q4_K_M GGUF, ~16.8 GB, GGUF V3, ~5.3 BPW; download integrity verified
Host (in-scope)Apple M1 Ultra, 128 GB unified memory, Metal (recent macOS) — the only backend physically present
EngineA multi-backend text inference engine (Apple-Silicon backend in scope)
Oracle / external toolllama.cpp: a recent upstream stable build, and a self-built open architecture-support PR (Metal)
GGUF parseA pure-Python GGUF v3 header parser run on-box; raw log retained
PrecisionQ4_K_M mixed quant: a tensor distribution dominated by F32 / Q4_K with smaller shares of higher-bit blocks
CUDA / ROCmNot measured first-hand on this box (those GPUs are on remote hosts); static source analysis + repro scripts only

The model fingerprint, parsed first-hand from the GGUF header: a diffusion-flavored Gemma architecture; a Gemma-4-generation tokenizer with vocab 262144; non-causal attention; a fixed diffusion canvas length of 256; a mask token; self-conditioning tensors present; a top-8-of-128 MoE configuration; a dense FFN co-resident with routed experts per layer (shared dense + routed mixed FFN); 16 attention heads with a per-layer KV-head array; dual rotary position embedding (a global high-base component over a larger dimension plus a sliding-window low-base component over a smaller dimension); a sliding window with a periodic full-attention pattern; final logit softcapping; 30 blocks; an embedding dimension in the low thousands; tied embeddings. Net: a ~25B-total / ~3.8B-active block-diffusion MoE text model (Gemma-4 generation). The instruction-tuned text weights carry no vision tower and are handled as a text model.

3. Results (measured numbers + conditions)

Engine under test (in-scope, first-hand): hard load failure. Attempting to run the model against a shard directory containing the GGUF exits non-zero at tokenizer load: the engine never reads the GGUF; it requires an HF shard directory (a tokenizer JSON plus a safetensors index). No fallback was triggered; the failure is hard at tokenizer load. Correctness/parity is n/a (the model never loaded). Verdict at evaluation time: NEEDS_ARCH_SUPPORT — the engine could neither load nor decode.

External llama.cpp baseline (NOT the engine under test). Recent upstream builds fail with an unknown-architecture error; the architecture exists only in unmerged open PRs. The self-built PR binary loaded and generated coherent text on M1 Ultra Metal. Fixed config (context 4096, full GPU offload, 256 output tokens), default sampler, single-stream batch=1, one 256-token canvas block per prompt:

PromptDenoise stepsWall (s)tok/s (wall, single-stream)tok/s (in-step parallel)time/step (ms)peak RSS (GB)
EN short2317.7514.4332771.8~19.6
ZH short2015.4916.5331774.4~19.6
code1511.5822.1332771.9~19.6
long-ctx (~2k)1716.4115.6265965.3~20.8

Single-stream wall throughput is ~14–22 tok/s (q4, M1 Ultra Metal). The "in-step parallel" column is the CLI's own canvas × steps figure — the source of advertising-style tok/s, not a usable wall rate. Correctness here is manual coherence judgment of llama.cpp output, not a formal parity test. TTFT is higher than autoregressive: a 256-token canvas must be built before iterative denoising, weights load in tens of seconds (peak RSS ~20 GB), then each step takes on the order of 0.77–0.97 s. The Metal path reports on-device sampling as unsupported and falls back to host sampling — a per-denoise-step host synchronization, the structural reason single-stream Metal lags.

4. Ablations / negative controls (architecture traps; cross-backend; public-claim normalization)

The architecture traps (why a flag cannot fix this). Multiple categories are hit simultaneously, each grounded in source or first-hand evidence: (1) GGUF schema — no production reader; one backend's test harness discards array/string key-value metadata, so the architecture string and the dual-RoPE base array are unreadable; other backends read only safetensors. (2) model architecture — no handler for this diffusion arch; a substring-matching Gemma handler mis-claims it but is a metadata-only stub that throws a not-yet-wired error; the MoE runtime explicitly rejects non-matching families. (3) decode loop (dominant) — all backends are strictly autoregressive (causal mask + KV-append + one token per forward); a tree-wide search for diffusion/canvas/mask/denoise concepts returns no hits. (4) non-causal attention — the model needs a rectangular mask; all backends hardcode causal. (5) self-conditioning — the self-conditioning tensors have no load/forward wiring (load-bearing per step, not optional). (6) MoE routing — partial: a top-8-of-128 router exists and is reusable, but the shared-dense + routed mixed FFN and the expert feed-forward length are missing. (7) dual RoPE / sliding-window pattern — a single scalar theta cannot express dual theta/dim or a per-layer pattern. (8) tokenizer/template — no Gemma-4 codec; one backend's chat template hardcodes a different model family; the mask token carries no semantics. (9) logit softcap — small: a softcap helper exists but is unwired. The gap spans roughly seven blocking items — a multi-component architecture port, not a kernel patch.

Why NEEDS_ARCH_SUPPORT and not the alternatives. Not SUPPORTED_NOW (load failed first-hand). Not LOADS_BUT_DECODE_UNSUPPORTED (load itself fails — no GGUF reader). Not BACKEND_KERNEL_GAP (the gap is reader + handler + schema + non-causal attention + denoise driver + self-conditioning + tokenizer across roughly seven blocking items). Not NOT_WORTH_INTEGRATING_YET (the model is real, there is genuine Apple-Silicon demand per a public llama.cpp issue, and it is the first non-autoregressive text-diffusion paradigm evaluated here; router / softcap / arch-agnostic dequant components are reusable).

Public-claim normalization (adversarial). Three checks: a datacenter-GPU "1000+ tok/s" claim → apples_to_oranges (high confidence): real and official, but not comparable to single-stream Metal (FP8 tensor-core vs no Metal FP8 path; FP8 vs q4; block-diffusion parallel caliber of ~15–20 tok/forward vs autoregressive 1; a window-definition trap of generation-only vs output-including-TTFT in the same serving run; non-iso-quality). A consumer-flagship "700+ tok/s" claim → apples_to_oranges (high confidence): official, with independent reproductions in the ~540–730 tok/s range on real hardware, but still NVFP4 tensor-core + parallel-denoise caliber. A previous-generation consumer-card tok/s claim → refuted (high confidence): no official or third-party source carries that figure; the only official consumer-card number is the current flagship — the previous-generation claim appears to be a misremembered flagship number. Iso-quality honesty: the model author's own disclosure puts DiffusionGemma below autoregressive Gemma 4 on several benchmarks (e.g., MMLU-Pro 77.6 vs 82.6; a math-competition score 69.1 vs 88.3; a competitive-programming rating 1429 vs 1718) — peak tok/s is not free. Cleanest same-harness number: a same-stack diffusion-vs-autoregressive comparison is roughly 1.9×, far below the 4–5× marketing ratio. Honest anchor: a realistic future Apple-Silicon single-stream q4 target is the community band ~40–60 tok/s (with host-sync optimization), not 700/1100; this report's measured 14–22 wall sits in the un-optimized band.

5. Threats to validity / limitations

  • External baseline is not parity. The 14–22 tok/s and coherence are llama.cpp's, judged by manual read, not a formal cosine/argmax parity test. Prompt token counts are approximate (no independent Gemma-4 tokenizer at baseline time; flagged approximate in the results log).
  • Single run, single host, single backend. One M1 Ultra, one PR build, one pass per prompt. No multi-run statistics, no warmup separation beyond what is noted.
  • CUDA / ROCm are not measured first-hand. Those backends are on remote hosts; their status is static source analysis plus repro scripts, never passed off as measured.
  • Forward parity is not generation quality. This note records load-time failure. The later cross-linked companion work reaches forward cosine parity to llama.cpp, but forward parity does not imply coherent-generation quality; the iso-quality disclosure above shows DiffusionGemma already scores below autoregressive Gemma 4 on the cited benchmarks.
  • Performance gaps remain open. The per-step host synchronization (Metal host sampling), the missing Gemma-4 encoder/tokenizer, self-conditioning wiring, and full quantized residency are all open at the time of this assessment.
  • TTFT honesty. Diffusion TTFT is structurally worse than autoregressive (the canvas must be built first); any future tok/s must be reported with its caliber window (generation-only vs output-including-TTFT) to avoid the generation-only-vs-TTFT-inclusive trap.

6. Reproducibility

  • Host / engine: Apple M1 Ultra, 128 GB, Metal; a multi-backend text inference engine (Apple-Silicon backend). Date: 2026-06-15.
  • Engine load attempt (fails as recorded): running the engine against a shard directory containing the Q4_K_M GGUF exits non-zero with a missing-tokenizer error, because the engine requires an HF shard directory rather than a GGUF.
  • llama.cpp upstream (fails, records true cause): the diffusion CLI on a recent upstream build reports an unknown-architecture error for the model.
  • llama.cpp PR build (succeeds, external baseline): clone the open architecture-support PR branch, configure a Release build with Metal enabled, build the diffusion CLI target, then run it against the Q4_K_M GGUF with context 4096, full GPU offload, and 256 output tokens.
  • Wrapper scripts / data: a backend-auto-detecting llama.cpp baseline runner (JSONL sink, peak RSS via the system time utility), an engine bench runner, a results log, and the GGUF header parser with a raw log retained. CUDA/ROCm: scripts prepared, not run first-hand.
  • Later refinement (cross-link, not duplicated here): the verdict was subsequently refined to forward-built + decode-running with measured cosine parity to llama.cpp; see the cross-linked companion object.

Claim boundary

The author's explicit scope — what this work does and does not establish — carried over from the Octoryn Research publishing model.

Proves

  • The inference engine could not load or decode the model at evaluation time: it exits non-zero with no GGUF reader and requires HF safetensors instead, observed first-hand.
  • GGUF header fingerprint parsed on-box: a diffusion-flavored Gemma architecture, vocab 262144, non-causal attention, fixed canvas length, a mask token, self-conditioning tensors, top-8-of-128 MoE, shared+routed mixed FFN, dual RoPE, and final logit softcapping.
  • Current upstream llama.cpp rejects this diffusion architecture; it exists only in unmerged open PRs.
  • An external self-built llama.cpp build reaches ~14-22 tok/s single-stream wall on M1 Ultra Metal at q4, with a per-step host synchronization.
  • Public datacenter (1000+) and consumer-flagship (700+) tok/s claims are apples-to-oranges versus single-stream Metal; one previous-generation consumer-card tok/s claim is refuted as unsourced.

Does not prove

  • Does not prove any throughput for the engine under test: all measured throughput is external llama.cpp, not that engine.
  • Does not prove formal parity of the baseline: llama.cpp coherence was judged by manual read, not a cosine/argmax test.
  • Does not prove generation quality: forward parity (reached later, cross-linked) does not imply coherent-generation quality, and DiffusionGemma scores below autoregressive Gemma 4 on iso-quality benchmarks.
  • Does not prove CUDA/ROCm behavior: those backends were static-analyzed, not measured first-hand.
  • Does not prove the 40-60 tok/s Apple-Silicon target is achievable; it is an honest community-band anchor, not a measurement.

Applies when

  • Assessing the DiffusionGemma-26B-A4B-it Q4_K_M GGUF against the engine at its evaluation-time (pre-port) state.
  • On Apple M1 Ultra / Metal as the in-scope backend.
  • Using the verdict to triage NEEDS_ARCH_SUPPORT versus narrower categories for a non-autoregressive text-diffusion model.
  • Normalizing public marketing tok/s claims against a single-stream Metal reality anchor.

Does not apply when

  • Reading the engine's own performance numbers (none exist here; see the cross-linked companion object).
  • Evaluating the post-port state where the forward is built and decode runs (refinement cross-linked, not covered here).
  • Comparing FP8/NVFP4 tensor-core + parallel-denoise hardware, which is structurally out of the single-stream Metal band.
  • Treating the external baseline as a formal correctness/parity result or a multi-run benchmark.

Authors

  • Ran Tao — Investigation, Writing

Cite this

Citation

Tao, R., Octoryn Research. (2026). DiffusionGemma-26B compatibility assessment: NEEDS_ARCH_SUPPORT on Apple Silicon (pre-port, external llama.cpp baseline) (RN-2026-0015). Octopus Research Institute.

BibTeX

@techreport{orirn20260015,
  title       = {DiffusionGemma-26B compatibility assessment: NEEDS_ARCH_SUPPORT on Apple Silicon (pre-port, external llama.cpp baseline)},
  author      = {Tao, Ran and {Octoryn Research}},
  institution = {Octopus Research Institute},
  year        = {2026},
  note        = {Permanent ID RN-2026-0015. Not peer reviewed.}
}

Disclosures

Funding
Hardware and infrastructure provided by Octoryn / Octopus Core Pty Ltd.
Conflicts of interest
Octoryn ships commercial inference and governance tooling; findings are reported independently.