MiMo-V2.5-0703-NVFP4-TP3

mitomtuna/MiMo-V2.5-0703-NVFP4 transformed to run at tensor-parallel size 3 (e.g. 3× 96 GB GPUs) — a geometry the source cannot serve (64 attention heads, 4/8 KV heads, MoE intermediate 2048: none divisible by 3).

This is the updated 2026-07-03 MiMo-V2.5 target (the exact weights the DFlash drafter was trained against) — the successor of mitomtuna/MiMo-V2.5-NVFP4-TP3, which was built from the original April base.

The transform is mathematically exact — no requantization, no fine-tuning. Full-attn 64Q/4KV → 72Q/9KV (bit-identical KV duplication, slot map [0,0,0,1,1,2,2,3,3]), SWA 64Q/8KV → 72Q/9KV ([0,0,1,2,3,4,5,6,7]), padded Q heads have zeroed q rows AND zeroed o_proj columns (exact-zero contribution), MoE expert intermediate 2048 → 2304 and dense MLP 16384 → 16512 via group-aligned zero padding of the packed NVFP4/MXFP8 tensors. All original quantization groups are byte-identical. transform_checkpoint.py (included) is the exact script that produced this repo.

Use with the matching DFlash drafter (same transform, drafter weights are Xiaomi's originals): mitomtuna/MiMo-V2.5-DFlash-TP3.

Running with vLLM

docker pull ghcr.io/tunamitom/mimo-vllm:cu132-nvfp4-dflash
docker run --gpus '"device=0,1,2"' --ipc host --network host --init --shm-size 32g \
  -v $HF_CACHE:/root/.cache/huggingface \
  -e VLLM_USE_V2_MODEL_RUNNER=0 \
  -e VLLM_USE_FLASHINFER_MOE_MXFP4_MXFP8_CUTLASS=1 \
  -e PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True \
  -e NCCL_P2P_LEVEL=SYS \
  -e NCCL_CUMEM_ENABLE=0 \
  ghcr.io/tunamitom/mimo-vllm:cu132-nvfp4-dflash \
  vllm serve mitomtuna/MiMo-V2.5-0703-NVFP4-TP3 \
    --served-model-name mimo-v2.5 \
    --trust-remote-code \
    --tensor-parallel-size 3 \
    --kv-cache-dtype auto \
    --block-size 64 \
    --gpu-memory-utilization 0.965 \
    --max-model-len 524288 \
    --max-num-seqs 32 \
    --max-num-batched-tokens 4096 \
    --max-cudagraph-capture-size 32 \
    --attention-backend TRITON_ATTN \
    --kernel-config.moe_backend flashinfer_cutlass \
    --kernel-config.linear_backend b12x \
    --mm-encoder-tp-mode data \
    --reasoning-parser mimo --tool-call-parser mimo --enable-auto-tool-choice \
    --compilation-config '{"cudagraph_mode":"PIECEWISE","custom_ops":["all"]}' \
    --async-scheduling --no-scheduler-reserve-full-isl \
    --enable-chunked-prefill --enable-prefix-caching \
    --disable-custom-all-reduce \
    --speculative-config '{"model":"mitomtuna/MiMo-V2.5-DFlash-TP3","method":"dflash","num_speculative_tokens":7,"num_speculative_tokens_per_batch_size":[[1,4,7],[5,32,3]]}'

Notes (all measured on the identical-geometry predecessor repo; every tensor here has the same shape/dtype, so limits carry over):

  • KV pool at --gpu-memory-utilization 0.965, --max-model-len 524288, 4096-token prefill chunks: 668,489 tokens (1.28× concurrency at full context). 0.975 OOMs a ~4.8 GiB init transient — 0.965 assumes dedicated, otherwise-idle 96 GB GPUs; back off to 0.93–0.95 if anything else shares them.
  • --mm-encoder-tp-mode data is required at TP3 (vision tower has 32 heads, not divisible by 3; encoders run replicated). Text/image/audio/video all work.
  • Read "Host setup" below — without driver-enabled GPU P2P the decode numbers here are not reproducible.
  • Optional: -e VLLM_TRITON_B12X_KV_DEDUP="192:0,0,0,1,1,2,2,3,3" reads each unique duplicated KV slot once during decode (bitwise-identical outputs, ~1% faster ≥128k context). Safe to omit.
  • Decode throughput ≈ 0.75–0.86× of the same engine at TP4; KV duplication costs ~3× per-token KV per rank vs TP4 (hence the 524,288 practical max).

Host setup (required for full multi-GPU speed)

Tensor-parallel decode is allreduce-latency-bound. On RTX PRO 6000 Blackwell the driver disables PCIe peer access by default, so NCCL silently falls back to shared-memory copies and decode is dramatically slower. To get the fast lane these numbers were measured on:

  1. Force P2P in the driver — /etc/modprobe.d/nvidia-p2p-override.conf:
    options nvidia NVreg_RegistryDwords="ForceP2P=0x11;GrdmaPciTopoCheckOverride=1;EnableResizableBar=1"
    
    then update-initramfs -u and reboot. Do not add the older RMForceP2PType=1;RMPcieP2PType=2 dwords seen in some recipes — they break cross-process cuMem IPC on NCCL ≥ 2.29.
  2. BIOS: Resizable BAR and Above-4G decoding ON; IOMMU OFF (or ACS override) — an active IOMMU degrades or breaks PCIe P2P.
  3. Container env (in the command above): NCCL_P2P_LEVEL=SYS so NCCL uses P2P across PCIe root complexes, and NCCL_CUMEM_ENABLE=0 (legacy cudaIpc transport — most reliable with forced P2P).
  4. Keep --disable-custom-all-reduce: plain NCCL over P2P is the fast path on this platform (vLLM's custom-allreduce kernels crash or regress here).

Verify: nvidia-smi topo -p2p r should show all GPU pairs OK, and a boot with NCCL_DEBUG=INFO should log channels via P2P, not via SHM.

Credits

Validation (this exact checkpoint, RTX PRO 6000 Blackwell)

0703-target requant validation — 2026-07-08T07:40:08+00:00

Acceptance (reason_accept_check.py, same prompt/protocol)

--- baseline: prod TP3, OLD target (captured in prep):
reasoning ctx0: 412.3 t/s, accept_len 5.91/8 (2500 tokens, 423 drafts)
--- mimo-vllm-val (NEW target):
reasoning ctx0: 488.0 t/s, accept_len 5.69/8 (2500 tokens, 439 drafts)
--- mimo-tp3-val (NEW target):
reasoning ctx0: 381.5 t/s, accept_len 5.71/8 (2500 tokens, 438 drafts)

Needle (90k)

--- mimo-vllm-val:
prompt_tokens=89935 completion=99
answer: 'PERSIMMON-42'
NEEDLE PASS
--- mimo-tp3-val:
prompt_tokens=89935 completion=103
answer: 'PERSIMMON-42'
NEEDLE PASS

KV cache pool measured at boot (this checkpoint, this command)

--- TP4 (util 0.85, max-model-len 1048576):
(Worker_TP0 pid=247) INFO 07-08 07:35:33 [gpu_worker.py:517] Available KV cache memory: 29.77 GiB
(EngineCore pid=179) INFO 07-08 07:35:33 [kv_cache_utils.py:2202] GPU KV cache size: 3,877,291 tokens
(EngineCore pid=179) INFO 07-08 07:35:33 [kv_cache_utils.py:2203] Maximum concurrency for 1,048,576 tokens per request: 3.70x
--- TP3 (util 0.965, max-model-len 524288):
(Worker_TP0 pid=241) INFO 07-08 07:39:30 [gpu_worker.py:517] Available KV cache memory: 14.9 GiB
(EngineCore pid=172) INFO 07-08 07:39:30 [kv_cache_utils.py:2202] GPU KV cache size: 668,489 tokens
(EngineCore pid=172) INFO 07-08 07:39:30 [kv_cache_utils.py:2203] Maximum concurrency for 524,288 tokens per request: 1.28x

Smoke responses: see s5-smoke-*.json

Result: ALL PASS

Downloads last month
-
Safetensors
Model size
200B params
Tensor type
BF16
·
F8_E4M3
·
U8
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for mitomtuna/MiMo-V2.5-0703-NVFP4-TP3

Quantized
(1)
this model