olka-fi's picture
Add files using upload-large-folder tool
b46b1ad verified
|
Raw
History Blame Contribute Delete
2.26 kB

vLLM runtime patch (ships with this MXFP4 checkpoint)

Why

This checkpoint quantizes the routed experts to MXFP4 (the rest stays native MXFP8). MiniMax-M3 uses the clamped SwiGLU-OAI activation (swiglu_limit: 7.0 in text_config).

The stock vllm/vllm-openai:minimax-m3 image has a bug in the compressed-tensors MXFP4 MoE method: get_fused_moe_quant_config() builds the kernel quant config without forwarding the SwiGLU clamp params, so gemm1_clamp_limit stays None and loading fails with:

AssertionError: SWIGLUOAI_UNINTERLEAVE requires clamp_limit

This is purely a runtime bug — the checkpoint and its config.json are correct (swiglu_limit=7.0 is reachable via hf_text_config).

The fix

compressed_tensors_moe_w4a4_mxfp4.py here is the patched file. It forwards swiglu_limit / swiglu_alpha / swiglu_beta (read from the already-populated MoE config) into the kernel quant config:

  • W4A16 (weight-only, this checkpoint's path): pass gemm1_alpha, gemm1_beta, swiglu_limit to make_mxfp4_moe_quant_config — which maps gemm1_clamp_limit = swiglu_limit per backend.
  • W4A4 (cutlass): set the fields on the returned config directly (that builder doesn't expose them).

Send the same change upstream to the fork.

How to apply (no image rebuild)

Bind-mount the file over the buggy one. Path is for the image's Python 3.12:

docker run --gpus all --privileged --ipc=host -p 8000:8000 \
  -v /mnt/storage:/root/.cache/huggingface \
  -v /mnt/storage/M3-MXFP4/vllm_patch/compressed_tensors_moe_w4a4_mxfp4.py:/usr/local/lib/python3.12/dist-packages/vllm/model_executor/layers/quantization/compressed_tensors/compressed_tensors_moe/compressed_tensors_moe_w4a4_mxfp4.py \
  vllm/vllm-openai:minimax-m3 /root/.cache/huggingface/M3-MXFP4 \
  --block-size 128 \
  --tool-call-parser minimax_m3 --enable-auto-tool-choice \
  --reasoning-parser minimax_m3 \
  --load-format fastsafetensors

Verify after startup: the model loads past the activation assertion. If you bump the VRAM ceiling, add --gpu-memory-utilization 0.85 and a smaller --max-model-len (the 1M default makes the KV cache huge).

Patched against image vllm/vllm-openai:minimax-m3 (vllm 0.1.dev17492+g454b47db8).