Model Overview
- Model Architecture: MiniMaxM3SparseForConditionalGeneration
- Input: Text, Image, Video
- Output: Text
- Supported Hardware Microarchitecture: AMD MI350/MI355
- ROCm: 7.2.3
- PyTorch: 2.13.0
- Transformers: 5.19.0
- Operating System(s): Linux
- Inference Engine: vLLM, SGLang
- Model Optimizer: AMD-Quark
- Routed-expert weight quantization: OCP MXFP4, Static
- Routed-expert activation quantization: OCP MXFP4, Dynamic
- All other layers: unchanged precision compared to base MiniMaxAI/MiniMax-M3.1-Flash
Model serving
Please refer to vLLM recipe and SGLang cookbook.
Example usage:
vLLM
VLLM_ROCM_USE_AITER=1 \
vllm serve amd/MiniMax-M3.1-Flash-Quark-MXFP4 \
--tensor-parallel-size 4 \
--reasoning-parser minimax_m3 \
--block-size 128 \
--speculative-config '{"method":"dspark","model":"amd/MiniMax-M3.1-Flash-Quark-MXFP4/dspark","num_speculative_tokens":7,"attention_backend":"FLASHINFER_TS","kv_cache_dtype":"fp8","draft_sample_method":"probabilistic","rejection_sample_method":"block"}' \
--disable-hybrid-kv-cache-manager"
SGLang
SGLANG_USE_AITER=1 \
sglang serve \
--trust-remote-code \
--model-path amd/MiniMax-M3.1-Flash-Quark-MXFP4 \
--reasoning-parser minimax-m3 \
--tool-call-parser minimax-m3 \
--tp 4 \
--speculative-algorithm DSPARK \
--speculative-use-block-verification \
--cuda-graph-backend-prefill breakable \
--fp8-gemm-backend aiter \
--chunked-prefill-size 32768 \
--max-running-requests 128 \
--cuda-graph-max-bs-decode 128 \
--mem-fraction-static 0.8 \
--tokenizer-worker-num 8 \
--host 0.0.0.0 \
--port 30000
Model Quantization
The model's routed experts were quantized from NVFP4 to MXFP4 using AMD-Quark.
Quantization script:
python quantize_quark.py \
--model_dir MiniMaxAI/MiniMax-M3.1-Flash \
--quant_scheme mxfp4 \
--output_dir amd/MiniMax-M3.1-Flash-Quark-MXFP4 \
--skip_evaluation --model_export hf_format --file2file_quantization \
--exclude_layers \
'*lm_head' \
'*vision_tower*' \
'*multi_modal_projector*' \
'*patch_merge_mlp*' \
'*self_attn*' \
'*block_sparse_moe.gate' \
'language_model.model.layers.[0-2].mlp.*' \
'*block_sparse_moe.shared_experts.*' \
'*dspark*' \
--keep_excluded_layers_as_original_model_state
Evaluation
The model was evaluated using vLLM and EvalScope.
Accuracy
| Benchmark | MiniMax/MiniMax-M3.1-Flash | amd/MiniMax-M3.1-Flash-Quark-MXFP4 (this model) | Recovery |
|---|---|---|---|
| GSM8K (4-shot) | 97.20 | 96.90 | 99.69% |
| GPQA Diamond (mean@8) | 86.36 | 87.37 | 101.17% |
| AIME26 (mean@16) | 93.54 | 93.75 | 100.22% |
| MMMU Pro, standard (mean@1) | 79.19 | 79.13 | 99.92% |
| MMMU Pro, vision (mean@1) | 76.99 | 77.57 | 100.75% |
| SciCode, subproblem (mean@8) | 48.11 | 49.27 | 102.41% |
| AA-LCR (mean@8) | 73.13 | 74.00 | 101.19% |
| IFBench (mean@2) | 50.33 | 50.83 | 100.99% |
Note: Results may vary from run to run.
Reproduction
The following results were obtained using vLLM and EvalScope 1.14.1.
Launching server
We launch the vLLM server using the vLLM Recipes with docker image vllm/vllm-openai-rocm:minimax-m31-flash.
VLLM_ROCM_USE_AITER=1 \
VLLM_ROCM_USE_AITER_FUSION_SHARED_EXPERTS=0 \
VLLM_ROCM_USE_AITER_MOE=1 \
vllm serve amd/MiniMax-M3.1-Flash-Quark-MXFP4 \
--block-size 128 \
--disable-hybrid-kv-cache-manager \
--tensor-parallel-size 4 \
--kv-cache-dtype nvfp4 \
--attention-config '{"indexer_kv_dtype": "nvfp4", "indexer_decode_cp": true}' \
--moe-backend aiter \
--tool-call-parser minimax_m3 \
--enable-auto-tool-choice \
--reasoning-parser minimax_m3
Evaluating model in a new terminal
GSM8K
evalscope eval \
--model amd/MiniMax-M3.1-Flash-Quark-MXFP4 \
--api-url http://localhost:8101/v1/chat/completions \
--api-key EMPTY \
--datasets gsm8k \
--dataset-hub huggingface \
--dataset-args '{"gsm8k":{"dataset_id":"openai/gsm8k"}}' \
--dataset-dir hf_hub_cache \
--eval-batch-size 32 \
--generation-config '{"temperature":1,"top_p":1,"max_tokens":8192,"timeout":60000,"extra_body":{"chat_template_kwargs":{"thinking_mode":"enabled"}}}' \
--work-dir logs/gsm8k
GPQA Diamond
evalscope eval \
--model amd/MiniMax-M3.1-Flash-Quark-MXFP4 \
--api-url http://127.0.0.1:8000/v1/chat/completions \
--datasets gpqa_diamond \
--eval-batch-size 32 \
--generation-config '{"temperature":1.0,"top_p":0.95,"max_tokens":200000,"timeout":7200}' \
--work-dir logs/gpqa_diamond
AIME26
evalscope eval \
--model amd/MiniMax-M3.1-Flash-Quark-MXFP4 \
--api-url http://127.0.0.1:8000/v1/chat/completions \
--datasets aime26 \
--repeats 16 \
--dataset-args '{"aime26":{"aggregation":"mean_and_pass_at_k","primary_metric":{"name":"accuracy","aggregation":"mean"}}}' \
--eval-batch-size 32 \
--generation-config '{"temperature":1.0,"top_p":0.95,"max_tokens":200000,"timeout":7200}' \
--work-dir logs/aime26
MMMU Pro (standard& vision)
evalscope eval \
--model amd/MiniMax-M3.1-Flash-Quark-MXFP4 \
--api-url http://127.0.0.1:8000/v1/chat/completions \
--datasets mmmu_pro \
--dataset-args '{"mmmu_pro":{"extra_params":{"dataset_format":"standard (10 options)"}}}' \
--eval-batch-size 32 \
--generation-config '{"temperature":1.0,"top_p":0.95,"max_tokens":200000,"timeout":7200}' \
--work-dir logs/mmmu_pro_standard
evalscope eval \
--model amd/MiniMax-M3.1-Flash-Quark-MXFP4 \
--api-url http://127.0.0.1:8000/v1/chat/completions \
--datasets mmmu_pro \
--dataset-args '{"mmmu_pro":{"extra_params":{"dataset_format":"vision"}}}' \
--eval-batch-size 32 \
--generation-config '{"temperature":1.0,"top_p":0.95,"max_tokens":200000,"timeout":7200}' \
--work-dir logs/mmmu_pro_vision
SciCode
evalscope eval \
--model amd/MiniMax-M3.1-Flash-Quark-MXFP4 \
--api-url http://127.0.0.1:8000/v1/chat/completions \
--datasets scicode \
--eval-batch-size 32 \
--repeats 8 \
--generation-config '{"temperature":0.0,"top_p":0.95,"max_tokens":200000,"timeout":7200}' \
--dataset-args '{"scicode":{"review_timeout":1800,"extra_params":{"provide_background":true}}}' \
--sandbox '{"enabled":true,"engine":"docker","pool_size":4}' \
--work-dir logs/scicode
AA-LCR (v1.0.0)
Judge configuration (aa-lcr-judge.json; replace <YOUR_SUBSCRIPTION_KEY>):
{
"strategy": "llm",
"models": [
{
"model_id": "gpt-5.6-luna",
"api_url": "https://llm-api.amd.com/openai/responses",
"api_key": "EMPTY",
"eval_type": "openai_responses_api",
"generation_config": {
"reasoning_effort": "medium",
"max_tokens": 4096,
"timeout": 7200,
"extra_query": {
"api-version": "2025-04-01-preview"
},
"extra_headers": {
"Ocp-Apim-Subscription-Key": "<YOUR_SUBSCRIPTION_KEY>"
}
}
}
]
}
evalscope eval \
--model amd/MiniMax-M3.1-Flash-Quark-MXFP4 \
--api-url http://127.0.0.1:8000/v1/chat/completions \
--datasets aa_lcr \
--eval-batch-size 32 \
--repeats 8 \
--generation-config '{"temperature":1.0,"top_p":0.95,"max_tokens":200000,"timeout":7200}' \
--dataset-hub huggingface \
--dataset-args '{"aa_lcr":{"hf_dataset_revision":"bdae010bbce259820c0e34c1d7cce210d966fb75"}}' \
--judge "$(cat aa-lcr-judge.json)" \
--work-dir logs/aa_lcr
IFBench
evalscope eval \
--model amd/MiniMax-M3.1-Flash-Quark-MXFP4 \
--api-url http://127.0.0.1:8000/v1/chat/completions \
--datasets ifbench \
--eval-batch-size 32 \
--generation-config '{"temperature":1.0,"top_p":0.95,"max_tokens":200000,"timeout":7200}' \
--dataset-args '{"ifbench":{"primary_metric":"prompt_level_loose"}}' \
--work-dir logs/ifbench
Others
Experimental MXFP4 shared experts
MXFP4 online shared experts quantization and shared experts fusion can optionally be enabled:
VLLM_ROCM_USE_AITER=1 VLLM_ROCM_USE_AITER_FUSION_SHARED_EXPERTS=1 vllm serve \
amd/MiniMax-M3.1-Flash-Quark-MXFP4 \
... \
--quantization-config.targets '{"*shared_expert*": "mxfp4"}'
but is experimental and not the recommended default setup.
License
Modifications Copyright(c) 2026 Advanced Micro Devices, Inc. All rights reserved.
- Downloads last month
- 2,061
Model tree for amd/MiniMax-M3.1-Flash-Quark-MXFP4
Base model
MiniMaxAI/MiniMax-M3.1-Flash