MiniMax M3.1
Serve MiniMax M3.1 with Dynamo and vLLM, SGLang, or TensorRT-LLM on B200 or GB300.
Each target below is a Dynamo deployment of the MiniMax-M3.1-Flash checkpoint, a multimodal MoE model with sparse attention. Every target runs one aggregated worker with tensor parallelism (TP) 4 and expert parallelism on four GPUs of a single B200 or GB300 node. Choose your framework and GPU; the summary and commands update to match. Every target serves the model’s full 1,048,576-token context with prefix caching; the vLLM and SGLang targets also use an FP8 KV cache and KV-aware routing. These are day-0 profiles, not performance-tuned deployments.
Choose your deployment target
Prerequisites
Every target requires:
- A Kubernetes cluster with the Dynamo platform installed and
nvidia.com/v1beta1DynamoGraphDeployment support. See the Kubernetes Deployment Guide. - Four free GPUs on one node of the selected type. Each worker also requests 16 CPUs and 128 GiB of host memory, and runs as UID 0.
- A Hugging Face token that can read
MiniMaxAI/MiniMax-M3.1-Flash. - The recipe’s Dynamo runtime image from NGC:
nvcr.io/nvidia/ai-dynamo/vllm-runtime:1.6.0-minimax-m3.1-flash-dev.1,nvcr.io/nvidia/ai-dynamo/sglang-runtime:1.6.0-minimax-m3.1-flash-dev.1,nvcr.io/nvidia/ai-dynamo/tensorrtllm-runtime:1.6.0-minimax-m3.1-flash-dev.1, for vLLM, SGLang, and TensorRT-LLM. - Standalone Kustomize v5.8.1, Python 3.9 or later with PyYAML, and a private cluster Kustomization with node placement for your cluster.
Set the namespace, then create a Secret for the model download:
If the namespace and Secret already exist, use them instead. Run the following commands from the Dynamo repository root.
Every target loads the checkpoint from a populated shared-model-cache PVC in the selected namespace. Set storageClassName in model-cache/model-cache.yaml to a ReadWriteMany storage class on your cluster (kubectl get storageclass) before applying it.
Deploy
Create the cache and download the checkpoint (72 files, about 252 GB):
The Job writes the checkpoint to /shared-model-cache/MiniMax-M3.1-Flash and fails if any shard listed in model.safetensors.index.json is missing.
Select the recipe for your target:
The recipe’s deploy.yaml contains no pull Secret, scheduling, or storage bindings. Copy the beta cluster Kustomization starter outside the repository, point its resources at the absolute path of $RECIPE_DIR/deploy.yaml, and select the /agg Components. At minimum, fill scheduling with your node placement. Select registry-credentials only when you pull the image from a private mirror, and cache-binding only when your populated claim is not named shared-model-cache. Keep filled cluster values outside the repository.
Set CLUSTER_KUSTOMIZATION to that directory, then validate, render, and apply it:
Use LoadRestrictionsNone only with reviewed paths. It allows the private composition to reference the portable recipe.
Smoke Test
Wait for the deployment, then forward its frontend port. The worker spends several minutes in engine initialization after the weights load:
In another terminal, check model discovery and send a reasoning request. Every target serves the model as minimax-m3.1:
Expect HTTP 200 and the answer in choices[0].message.content. The model decides per request whether to reason, and any reasoning arrives in a separate reasoning_content field; reasoning_effort (low, medium, high, xhigh, or max) sets how much it reasons. temperature 1.0 and top_p 0.95 are the model’s recommended sampling settings.
Supported Features
Compare All Targets
Every target runs one aggregated worker on four GPUs, serves a 1,048,576-token context, and admits up to 256 concurrent requests.
Notes
- On the TensorRT-LLM targets, a request that needs an attention kernel the engine did not compile at startup compiles it on the spot, which stalls the worker and its GPUs for one to two minutes. Dynamo’s health check can time out during the stall and restart the worker, which discards the compiled kernel; set
DYN_HEALTH_CHECK_ENABLED=falseon the Worker to let the compilation finish. - The checkpoint ships a DSpark draft model, which these profiles do not enable.
Source
- Recipe README: recipes/minimax-m3.1/README.md
- vLLM: B200 deploy.yaml and GB300 deploy.yaml
- SGLang: B200 deploy.yaml and GB300 deploy.yaml
- TensorRT-LLM: B200 deploy.yaml and GB300 deploy.yaml
- Model cache: model-cache.yaml and model-download.yaml