MiniMax-M3 是 MiniMax 最新开源的原生多模态大模型,约 428B 总参数 / 23B 激活参数,原生支持 1M 上下文。本文基于 GPUStack 与 vLLM,演示从镜像与权重准备、模型部署、对话实测到基准测试的完整流程,并实测了基于 EAGLE3 的投机解码加速。
MiniMax 于 6 月 1 日 宣布 MiniMax-M3 正式发布,并在 6 月 12 日(上周五) 于 HuggingFace 与 ModelScope(魔搭) 上正式开源权重。
MiniMax-M3 是一款原生多模态 大模型,采用 MoE 架构 ,约 428B 总参数 / 23B 激活参数 ,原生支持 1M(百万级)上下文 ,并提供 thinking(思考) 与 non-thinking(非思考) 两种推理模式,可根据复杂推理、Agent 任务或低延迟对话/代码补全等不同场景灵活切换。官方推荐的采样参数为 temperature=1.0、top_p=0.95、top_k=40。
本文使用的是其 MXFP8 量化版本 MiniMax-M3-MXFP8,在保持精度的同时显著降低显存占用,更适合在有限卡数上部署。
核心亮点:
- 原生多模态:从训练第一步就进行混合模态训练,在文本、图像、视频之间实现更深层的语义融合,而非后期拼接的「外挂式」多模态。
- 稀疏注意力扩展长上下文(MSA) :M3 引入了自研的 MiniMax Sparse Attention(MSA) 高性能稀疏注意力算子。官方数据显示,在 1M 上下文下,相比上一代 M2 实现了约 9× prefill / 15× decode 的加速,单 token 计算量降至约 1/20,在大幅降低注意力计算与显存开销的同时保持模型质量。
- 代码与协作(Cowork)能力:在长程 Agentic 基准上达到前沿水平,在编码与协作类任务上表现突出。
官方给出了 MiniMax-M3 与多款主流模型的对比,在编码、Cowork、GUI、多模态与推理等多个维度均具备竞争力,其中 OmniDocBench(91.6) 、SpreadSheetBench-v1(89.4) 、VideoMME(85.4) 、Video-MMMU(84.6) 、BrowseComp(83.5) 等多模态与协作类任务表现尤为亮眼,编码上 SWE-Bench Verified 也达到 80.5。
伴随权重开源,两大主流推理引擎也第一时间放出了 MiniMax-M3 的专用镜像:
| 推理引擎 | 镜像标签 | 时间 |
|---|---|---|
| vLLM | vllm/vllm-openai:minimax-m3 |
6 月 12 日(开源当天) |
| SGLang | lmsysorg/sglang:dev-minimax-m3 |
6 月 15 日 |
需要说明的是,目前两者均为针对 MiniMax-M3 的专用/开发镜像,两大引擎主线版本对 M3 的正式支持仍需等待一段时间。本文采用 vLLM 的专用镜像进行部署与测试。
vLLM 官方镜像地址为 vllm/vllm-openai:minimax-m3,我们已第一时间同步至国内镜像,方便大家拉取:
swr.cn-south-1.myhuaweicloud.com/gpustack/vllm-openai:minimax-m3
本文的测试环境与配置如下:
| 项目 | 内容 |
|---|---|
| 测试环境 | 四卡 NVIDIA H20-3e 141G(Driver 590.48.01 / CUDA 13.1) |
| 测试模型 | MiniMax/MiniMax-M3-MXFP8 |
| 草稿模型(投机解码) | Inferact/MiniMax-M3-EAGLE3 |
| 参考文档 | https://recipes.vllm.ai/MiniMaxAI/MiniMax-M3?variant=mxfp8 |
全文分为以下几个部分:
- 环境准备 ------ GPUStack 安装
- 下载权重与镜像
- 添加 vLLM 版本
- 部署 MiniMax-M3
- 对话实测
- 基准测试
- 小结
一、环境准备 ------ GPUStack 安装
GPUStack 是一个开源 GPU 集群管理与 AI 模型服务平台 ,旨在高效部署 AI 模型。它可以配置并编排多种推理引擎------如 vLLM、SGLang、TensorRT-LLM,甚至自定义引擎------以在 GPU 集群上实现最佳性能。核心功能包括多异构 GPU 集群池化调度 、可插拔推理引擎架构 、Day 0 模型支持 、性能优化配置 (低延迟/高吞吐),以及企业级运维能力,如故障恢复、负载均衡、监控与权限管理。
在部署 MiniMax-M3 之前,需先完成 GPUStack 控制面的安装,并将 GPU 节点纳入管理。本文不再展开安装细节,可参考下方教程完成部署:
TODO: <在公众号编辑器中插入 之前已发布的《GPUStack v2.1.2 安装教程》的链接>
完成安装并接入 GPU 节点后,即可进入下一步,准备 MiniMax-M3 的权重与镜像。
二、下载权重与镜像
国内环境推荐从 ModelScope(魔搭) 下载权重。本文使用 MXFP8 量化版本以适配四卡 H20-3e 的显存与性能。
下载主模型权重:
本文同时使用 EAGLE3 草稿模型进行投机解码加速,因此一并下载草稿模型:
拉取 vLLM 专用镜像(国内同步地址):
bash
docker pull swr.cn-south-1.myhuaweicloud.com/gpustack/vllm-openai:minimax-m3
也可使用 vLLM 官方镜像
vllm/vllm-openai:minimax-m3,国内网络环境下推荐使用上述同步地址以加速拉取。
三、添加 vLLM 版本
GPUStack 支持可插拔的推理引擎架构,允许自定义推理后端及其版本,用于引入 GPUStack 未内置的 vLLM / SGLang / MindIE 版本,或接入其他自定义推理引擎镜像。
由于 MiniMax-M3 当前依赖 vLLM 的专用镜像,这里将其作为 vLLM 的自定义版本添加到 GPUStack 的推理后端中。
在推理后端 菜单,编辑 vLLM,在版本配置中选择添加版本,按实际情况填写镜像地址:
| 配置 | 值 |
|---|---|
| 版本 | minimax-m3 |
| 镜像名称 | swr.cn-south-1.myhuaweicloud.com/gpustack/vllm-openai:minimax-m3 |
| 入口点(Entrypoint) | vllm serve |
| 运行命令(Run Command) | {{model_path}} --port {{port}} --host {{worker_ip}} --served-model-name {{model_name}} |
| 框架 | CUDA |
其中
{{model_path}}、{{port}}、{{worker_ip}}、{{model_name}}为 GPUStack 的模板变量,部署时会自动注入,无需手动修改。
也可以切换到 YAML 模式,直接导入以下配置:
yaml
version_configs:
minimax-m3:
image_name: swr.cn-south-1.myhuaweicloud.com/gpustack/vllm-openai:minimax-m3
run_command: "{{model_path}} --port {{port}} --host {{worker_ip}} --served-model-name {{model_name}}"
entrypoint: "vllm serve"
custom_framework: cuda
env: {}
注意:如果当前已有其它自定义版本,需要将其它版本一同写入
version_configs中一起导入。
四、部署 MiniMax-M3
GPUStack 支持从 Hugging Face、ModelScope 在线下载并部署,也支持从本地路径部署(离线环境推荐此方式)。本文使用前面已下载到本地的权重进行部署。
导航到模型文件 页面,点击前面下载的模型权重右侧的小火箭部署按钮,即可开始部署:
在部署配置中,推理后端选择 vLLM ,版本选择前面添加的 minimax-m3 自定义版本:
接着参考 vLLM Recipes 文档 配置后端启动参数。本文在四卡 H20-3e 上采用张量并行,并启用基于 EAGLE3 的投机解码,参数示例如下:
shell
--tensor-parallel-size=4
--enable-auto-tool-choice
--tool-call-parser=minimax_m3
--reasoning-parser=minimax_m3
--block-size=128
--speculative-config '{"method":"eagle3","model":"/var/lib/gpustack/cache/model_scope/Inferact/MiniMax-M3-EAGLE3","num_speculative_tokens":3,"attention_backend":"FLASH_ATTN"}'
--gpu-memory-utilization=0.96
--max-model-len=64K
--disable-access-log-for-endpoints=/health,/metrics,/ping
--mm-encoder-attn-backend=FLASHINFER
--mm-processor-cache-type=shm
--mm-encoder-tp-mode=data
各组参数的作用简述如下:
- 张量并行 :
--tensor-parallel-size=4将模型切分到四张 H20-3e 上并行推理。 - 工具调用与思考解析 :
--enable-auto-tool-choice配合--tool-call-parser=minimax_m3启用工具调用能力;--reasoning-parser=minimax_m3用于解析模型的思考(thinking)内容。 - 投机解码(EAGLE3) :
--speculative-config启用基于 EAGLE3 草稿模型的投机解码,以提升解码速度,其中num_speculative_tokens为每步推测的 token 数。 - 显存与上下文 :
--gpu-memory-utilization=0.96控制显存占用上限,--max-model-len=64K设置上下文长度(M3 原生支持 1M,可按需调大,但会相应增加显存开销)。 - 多模态编码器 :
--mm-encoder-tp-mode=data让体量较小的视觉编码器采用数据并行 而非张量并行,避免不必要的 TP 通信开销;--mm-processor-cache-type=shm启用基于主机共享内存的多模态处理器缓存;--mm-encoder-attn-backend=FLASHINFER指定编码器注意力后端(NVIDIA 上使用 FlashInfer,AMD 上对应 AITER FlashAttention)。
关于草稿模型路径 :
--speculative-config中的model需填写 EAGLE3 草稿模型的实际路径。本文中的/var/lib/gpustack/cache/model_scope/Inferact/MiniMax-M3-EAGLE3是前文通过 GPUStack 从 ModelScope 下载后的默认缓存位置,请按你的实际下载路径填写。
以上参数为示例,量化方式、并行规模、投机解码 token 数、上下文长度(--max-model-len)、显存占用(--gpu-memory-utilization)等请结合实际硬件,并以 https://recipes.vllm.ai/MiniMaxAI/MiniMax-M3?variant=mxfp8 的最新说明为准。
采样参数方面,官方推荐temperature=1.0、top_p=0.95、top_k=40。这些可在请求中传入,也可在 GPUStack 试验场中配置;若实测效果不理想,建议优先向官方推荐值对齐。
关于上下文长度(--max-model-len)的说明 :本文设置为64K,主要是受限于显存------在开启多模态功能 的情况下,实测剩余显存已不足以支撑一个 128K 上下文的请求,故演示中设为 64K。当前推理镜像尚不支持--kv-cache-dtype=fp8来节省 KV Cache 显存,待 vLLM 推出支持该特性的新版本后,大家可自行尝试,以在开启多模态的同时获得更长的上下文。此外,在当前版本的实际使用中,对于 Agent 场景 64K 往往是不够的。如果你的场景以文本为主、不需要多模态,推荐关闭多模态支持 以释放显存换取更长上下文:去掉上面三项
--mm-*参数,并添加--language-model-only。在此配置下,实测可支持 256K 的上下文长度。
关于参数中的k与K:vLLM 参数里小写k表示 1000,大写K表示 1024。例如--max-model-len=64K即 64 × 1024 = 65536。
部署后可在操作 中点击查看日志,实时观察启动过程:
当模型实例状态显示为 Running 时,说明已成功启动,可进行后续测试:
完整的模型启动日志附在文末,供需要排查启动问题的读者参考。
五、对话实测
GPUStack 提供了多种类型模型的试验场,可进行基础对话测试与推理速度观察。
测试方式有两种:
- 在模型部署操作 菜单中选择打开试验场;
- 直接打开对话试验场,在右侧模型选择框中选择 MiniMax-M3。
在对话框中输入内容进行测试:
测试中我们发现,模型的思考内容分隔符 与标准 OpenAI API 格式不一致,导致试验场中思考内容显示异常------通过 cURL 直接调用 API 也能看到,思考内容会被混入 content 字段中。
查看模型的 chat_template.jinja 文件,果然其中使用了两个独特的思考标记。我们将其手动替换为标准的 <think> / </think>:
diff
- {%- set think_begin_token = '<mm:think>' -%}
- {%- set think_end_token = '</mm:think>' -%}
+ {%- set think_begin_token = '<think>' -%}
+ {%- set think_end_token = '</think>' -%}
这是一个临时解决方案,后续进展可关注此 issue:https://github.com/vllm-project/vllm/issues/45687
修改后,在模型实例菜单中点击删除重建,使改动生效:
实例重建后再次测试,思考内容已能正常解析与显示:
一切正常。以上为开启投机解码 的效果,下面再附一张未开启投机解码的效果作为对比:
六、基准测试
GPUStack 内置基准测试功能,可针对模型实例进行多种类型的测试,例如吞吐、延迟、长上下文等场景,并支持根据实际需求灵活调整测试参数。
七、小结
MiniMax-M3 在开源当天即获得 vLLM 的专用镜像支持,而 GPUStack 借助可插拔的推理后端架构 ,能够灵活接入自定义引擎版本,从而具备 Day 0 模型支持能力------这让我们得以在第一时间把这款全新的多模态模型部署、跑通并完整实测。
本文基于 GPUStack 演示了从环境准备、vLLM 自定义版本接入,到模型部署、对话实测、投机解码加速与基准测试的完整流程。在四卡 H20-3e 上,EAGLE3 投机解码 带来的加速效果相当明显:未开启时约为 126 tokens/s ,开启后提升至约 200 tokens/s ,提速接近 60%,对实际推理体验的改善立竿见影。
可以看到,借助 GPUStack,不仅能更方便地统一管理推理引擎与模型实例,更能在专用镜像、自定义版本、投机解码等尚未进入主线支持的「尝鲜」阶段,快速把新模型跑起来、测起来;后续也能平滑扩展到多节点、生产化与团队协作场景。
如果你也在关注 MiniMax-M3,不妨亲自部署体验一下。
附录:MiniMax-M3 启动日志
以下为本次 MiniMax-M3 在四卡 H20-3e 上的完整启动日志,可用于对照排查环境、并行、投机解码及多模态相关的加载情况: