MiMo-V2.5 — ROCmFP4 GGUF (Strix Halo / gfx1151)

ROCmFP4 quantizations of MiMo-V2.5 (310B total / 15B active MoE), built for AMD Strix Halo (Ryzen AI Max+ 395, gfx1151) with the ROCmFPX fork of llama.cpp.

These are made for people running MiMo-V2.5 across two 128 GB Strix Halo boxes over a USB4/Thunderbolt link using llama.cpp's RPC layer split. The model does not fit on one node at this precision.

Note on quality: these are not imatrix-calibrated. Unsloth's UD-Q4_K_XL is, and it is tensor-aware on top of that. The ROCmFP4 variants here win on speed and size, but if output quality at the margins matters more to you than tok/s, benchmark both before switching.

Variants

variant effective bpw size shards folder
Q4_0_ROCMFP4_FAST ← recommended 4.26 153.47 GiB (164,795,562,720 B) 4 ROCmFP4-FAST/
Q4_0_ROCMFP4 5.24 189.02 GiB (202,969,561,824 B) 5 ROCmFP4/

For reference, unsloth/MiMo-V2.5-GGUF UD-Q4_K_XL is 178.44 GiB at 4.95 bpw — ROCmFP4_FAST is 14% smaller.

ROCmFP4_FAST dominates ROCmFP4 on every axis we measured — smaller, faster prefill, faster decode. Unless you specifically want the higher-precision tensors, take FAST. ROCmFP4 is published for completeness.

A note on the bpw labels. llama-quantize advertises Q4_0_ROCMFP4 as "4.50 bpw", but measured against the 309.77 B parameter count the real figure is 5.24 bpw — the recipe promotes several tensor classes (e.g. ffn_gateq5_K) rather than quantizing everything to ROCmFP4. Q4_0_ROCMFP4_FAST measures 4.26 bpw against its 4.25 label, so that one is honest. This is why the "non-fast" build ends up larger than UD-Q4_K_XL rather than smaller.

Both were quantized from the BF16 GGUF (unsloth/MiMo-V2.5-GGUF, 14 shards, 619,638,702,336 bytes, verified byte-exact) with:

llama-quantize MiMo-V2.5-BF16-00001-of-00014.gguf \
    MiMo-V2.5-ROCmFP4-FAST.gguf Q4_0_ROCMFP4_FAST 16

Measured performance

Test setup

Two Beelink GTR 9 Pro (Ryzen AI Max+ 395, gfx1151, 128 GB unified) linked by a single USB4 cable, layer-split with llama.cpp RPC. All numbers are single-stream.

engine ROCmFPX (llama.cpp fork), ROCm 6.4, HIP backend
OS / kernel Ubuntu 24.04, mainline 6.18.6
topology node2 = head, node1 = rpc-server over Thunderbolt (192.168.2.1:50052)
GPU carve-out 126976 MiB via amdgpu.gttsize / ttm.pages_limit kernel cmdline
transport TCP over thunderbolt0 (RDMA measured, no difference)

Benchmark command:

llama-bench -m <model.gguf> \
    -rpc 192.168.2.1:50052 -dev ROCm0/RPC0 \
    -ngl 999 -fa 1 -mmp 0 -r 1 -p 512 -n 128

-mmp 0 (no mmap) is required — with mmap the working set thrashes against the 128 GB of RAM and never converges. Note llama-bench wants -dev entries separated by /, while llama-cli wants ,.

Single-stream results

variant size prefill (pp512) decode (tg128)
Q4_0_ROCMFP4_FAST 153.47 GiB 322.87 t/s 20.94 t/s
Q4_0_ROCMFP4 189.02 GiB 248.10 t/s 16.80 t/s
(reference) UD-Q4_K_XL 178.44 GiB 326.36 t/s 15.73 t/s

ROCmFP4_FAST is +33% decode over UD-Q4_K_XL at −1% prefill. The gain is larger than the 14% size reduction alone predicts — the single-scale layout also dequantizes more cheaply on gfx1151.

ROCmFP4 (non-fast) is −24% prefill against UD-Q4_K_XL for +7% decode, while being 10.6 GiB larger. It is the weakest of the three on throughput.

ROCmFP4_FAST was measured twice (a standalone headline run and the depth sweep's zero-depth point) as a reproducibility check: pp512 322.87 vs 315.53 (2.3% spread), tg128 20.94 vs 21.07 (0.6% spread).

Decode vs. context depth

depth ROCmFP4_FAST pp / tg ROCmFP4 pp / tg UD-Q4_K_XL pp / tg
0 315.5 / 21.07 248.5 / 17.15 324.7 / 15.69
8192 267.1 / 20.68 217.2 / 16.41 273.0 / 15.40
32768 197.7 / 19.53 167.9 / 16.07 200.8 / 14.75

Decode is remarkably flat with context on all three — a consequence of the 9-full/39-SWA attention split, where only 9 layers grow with depth. Prefill decays normally.

Aggregate throughput under concurrency

Total tokens/s across all streams, 16 distinct prompts so that slots cannot share a prefix-cache hit and inflate the result (--parallel 8, -c 32768).

variant C4 C6 C8
Q4_0_ROCMFP4_FAST 31.93 t/s 32.61 t/s 33.92 t/s
Q4_0_ROCMFP4 24.96 t/s 26.37 t/s 28.32 t/s
(reference) UD-Q4_K_XL 25.81 t/s 29.19 t/s 31.72 t/s

ROCmFP4_FAST is fastest at every concurrency level, but its margin shrinks as concurrency rises — +24% over UD-Q4_K_XL at C4, +7% at C8, against +33% for a single stream. The FAST layout's advantage is in memory bandwidth and dequant cost, which dominate single-stream decode; as batch size grows the workload shifts toward expert scatter and compute, where the two are much closer.

MiMo-V2.5 is a 256-expert top-8 MoE, the least favourable case for batch amortization: the number of distinct experts touched at batch B grows as 256·(1−(1−8/256)^B), so more expert weights must be read as concurrency rises instead of being amortized across the batch. This is why aggregate throughput scales so weakly — ROCmFP4_FAST gains only 6% going from 4 streams to 8, and per-stream latency roughly halves over that range (7.98 → 4.24 t/s).

Usage

Serve across two nodes (run rpc-server on the second box first):

# node1
rpc-server -H 0.0.0.0 -p 50052

# node2
llama-server -m ROCmFP4-FAST/MiMo-V2.5-ROCmFP4-FAST-00001-of-00004.gguf \
    --rpc 192.168.2.1:50052 -dev ROCm0,RPC0 \
    -ngl 999 -fa 1 --no-mmap -c 32768 --parallel 8 --host 0.0.0.0

Point llama.cpp at the first shard; it pulls in the rest automatically.

Mind the flag spelling — llama-server takes --rpc and comma-separated -dev, while llama-bench takes -rpc and slash-separated -dev (ROCm0/RPC0). Passing the wrong one makes the server exit immediately with error: invalid argument.

Things worth knowing

  • Keep KV cache at f16. On gfx1151 every KV quantization we tested is slower at every context depth — the ROCm dequant overhead costs more than the bandwidth it saves — and f16 still fits a very long context here.
  • Speculative decoding does not pay off on this model. DFlash, MTP and EAGLE3 were all evaluated; on a 256-expert MoE, batch-verifying a draft block costs roughly 3.5 normal decode steps, so break-even needs ~3.5 accepted tokens per step. Best measured DFlash config was 10.4 t/s against a 12.8 t/s no-speculation baseline on an earlier build.
  • KV geometry: MiMo-V2.5 has 9 full-attention + 39 sliding-window layers, so only the 9 full layers scale with context — about 22.5 KiB/token.

License

Inherits the license of the base model, XiaomiMiMo/MiMo-V2.5. Quantization adds no additional restrictions.

Credits

Downloads last month
-
GGUF
Model size
310B params
Architecture
mimo2
Hardware compatibility
Log In to add your hardware

We're not able to determine the quantization variants.

Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for christopher-kapic/MiMo-V2.5-ROCmFP4-GGUF

Quantized
(30)
this model