MiniMax-M2.5 SGLang 高性能部署实战:从模型下载、多卡服务启动到 OpenAI 兼容接口调用
2026/9/19 10:21:24 网站建设 项目流程

MiniMax-M2.5 SGLang 高性能部署实战:从模型下载、多卡服务启动到 OpenAI 兼容接口调用

【免费下载链接】self-llm《开源大模型食用指南》针对中国宝宝量身打造的基于Linux环境快速微调(全参数/Lora)、部署国内外开源大模型(LLM)/多模态大模型(MLLM)教程项目地址: https://gitcode.com/datawhalechina/self-llm

导读

本文基于 Datawhale 开源仓库《开源大模型食用指南》(self-llm)中 models/MiniMax-M2.5/2-MiniMax-M2.5-SGLang.md 的完整内容,系统讲解如何以 MiniMax-M2.5 为模型基座,通过 SGLang 高性能推理框架完成环境准备、模型下载、4 卡 / 8 卡服务启动以及聊天、流式输出、工具调用三类 OpenAI 兼容接口的客户端调用。读完本文,你将能够在自己的 GPU 集群上独立搭建一套面向生产环境的 MiniMax-M2.5 推理服务,并掌握张量并行、专家并行、思考内容解析等关键参数的配置方法。

MiniMax-M2.5 简介

MiniMax-M2.5 是 MiniMax 推出的最新一代开源大语言模型。M2.5 通过在数十万个复杂真实场景中进行强化学习训练,在代码(SWE-Bench Verified 80.2%)、Agent 工具调用与搜索(BrowseComp 76.3%)、办公等多项任务中达到 SOTA 水平,同时兼具高效与低成本特性。它延续了 MiniMax 系列在 Agent 场景上的强项,能够稳定规划并执行复杂的长链条工具调用任务。

在仓库中,MiniMax-M2.5 与部署相关的教程以三篇文档的形式组织,彼此互补:

  • MiniMax-M2.5 vLLM 部署调用:使用 vLLM 完成同样的部署链路;
  • MiniMax-M2.5 SGLang 部署调用:本文主题,使用 SGLang 部署;
  • MiniMax-M2.5 Transformers 部署调用:不使用推理框架,直接用 Transformers 加载权重做本地推理。

这三篇教程也统一收录在仓库根目录 support_model.md 的模型支持清单中,并在 README.md 的模型列表中提供入口。

SGLang 简介

SGLang是一个面向大语言模型的高性能部署推理框架,提供开箱即用的推理加速与 OpenAI 兼容接口。它支持长上下文推理、流式输出、多卡并行(如张量并行与专家并行)、工具调用与"思考内容"解析等能力,便于将最新模型快速落地到生产环境。

在工程实践上,SGLang 以简洁的启动方式和稳定的服务能力为特点:后端通过python -m sglang.launch_server一条命令即可启动,前端可以直接沿用现有的 OpenAI SDK 或 HTTP 调用链路,无需额外适配成本。对 MiniMax-M2.5 这类大权重(约 220 GB)MoE 模型,SGLang 的张量并行(TP)与专家并行(EP)支持是充分发挥多卡算力、扩展上下文容量的关键。

需要说明的是,SGLang 服务启动后暴露的是 OpenAI 兼容接口(/v1路径),因此本文后续的客户端示例均可在"服务端 SGLang + 客户端 OpenAI SDK"这一标准组合下直接运行。

环境准备

基础环境自检

文档给出的基础环境参考值如下,可使用以下命令自检 CUDA / PyTorch 是否可用:

nvidia-smi python -c "import torch;print(torch.version.cuda, torch.cuda.is_available())"

如果环境为多卡机器,可通过torch.cuda.device_count()获取 GPU 数量,这也是后续启动脚本中自动判断 4 卡 / 8 卡分支的依据。

显存与推荐配置

按官方文档,MiniMax-M2.5 的资源需求如下:

  • 权重需求约 220 GB 显存;每 1M 上下文 token 约需 240 GB 显存;
  • 96G × 4 GPU:支持约 40 万 token 总上下文;
  • 144G × 8 GPU:支持约 300 万 token 总上下文。

:以上数值为硬件支持的最大并发缓存总量,模型单序列(Single Sequence)长度上限为 196k。

这意味着部署前需要结合业务的实际并发量与上下文长度综合评估资源:同样的硬件下,支持的总上下文容量由"并发序列数 × 序列长度"共同决定,不能简单地认为单序列可以达到数兆 token。

安装 SGLang

建议使用虚拟环境(venv / conda / uv)避免依赖冲突。

uv venv source .venv/bin/activate uv pip install sglang

安装完成后,务必确认 SGLang 版本满足要求:

请确保 SGLang 版本 >= v0.5.4.post1,以获得对 MiniMax 模型的完整支持。可使用pip show sglang查看当前安装的版本。

版本过旧时会出现下文"常见问题"一节中的MiniMax-M2 model is not currently supported报错,此时应执行pip install -U sglang升级。

模型下载

SGLang 会在首次启动时自动从 Hugging Face 拉取并缓存模型,无需手动下载。若希望提前下载或受网络限制,可选用modelscope手动下载模型:

# model_download.py from modelscope import snapshot_download model_dir = snapshot_download('MiniMaxAI/MiniMax-M2.5', cache_dir='/root/autodl-tmp', revision='master') print(f"模型下载成功,保存到: {model_dir}")
pip install modelscope python model_download.py

几点实操建议:

  • cache_dir请修改为你的本地存储路径,示例中的/root/autodl-tmp对应 AutoDL 等平台的扩展数据盘;
  • revision='master'指定拉取master分支权重,与官方发布保持一致;
  • 使用modelscope下载模型时无需设置 HF 镜像;若不使用 modelscope,而是让 SGLang 自动从 Hugging Face 拉取,网络受限时可设置镜像:
    export HF_ENDPOINT=https://hf-mirror.com
  • 模型权重很大(约 220 GB),若网络带宽受限,建议先在较高带宽的环境中下载后拷贝到目标机器。

下载完成后,既可以直接让 SGLang 通过模型名MiniMaxAI/MiniMax-M2.5使用本地 HF 缓存,也可以将--model-path指向snapshot_download返回的本地目录。

启动 SGLang 服务

SGLang 支持 Python 脚本与命令行两种启动方式。脚本方式便于固定参数、统一管理日志,命令行方式则适合快速验证,两者最终生成的启动命令完全一致。

方式一:Python 启动脚本

新建start_server.py,脚本会根据检测到的 GPU 数量自动选择 4 卡或 8 卡启动命令:

import torch from sglang.utils import launch_server_cmd, wait_for_server gpu_count = torch.cuda.device_count() if torch.cuda.is_available() else 0 if gpu_count == 4: cmd = ( "python -m sglang.launch_server " "--model-path MiniMaxAI/MiniMax-M2.5 " "--host 0.0.0.0 " "--port 8000 " "--tp-size 4 " "--tool-call-parser minimax-m2 " "--reasoning-parser minimax-append-think " "--trust-remote-code " "--mem-fraction-static 0.85" ) elif gpu_count == 8: cmd = ( "python -m sglang.launch_server " "--model-path MiniMaxAI/MiniMax-M2.5 " "--host 0.0.0.0 " "--port 8000 " "--tp-size 8 " "--ep-size 8 " "--tool-call-parser minimax-m2 " "--reasoning-parser minimax-append-think " "--trust-remote-code " "--mem-fraction-static 0.85" ) else: raise RuntimeError(f"建议使用 4 或 8 张 GPU,当前检测到: {gpu_count}") server_process, port = launch_server_cmd(cmd, port=8000) wait_for_server(f"http://127.0.0.1:{port}") print(f"SGLang Server started: http://127.0.0.1:{port}")

启动:

python start_server.py

服务启动成功后将监听http://127.0.0.1:8000/v1

方式二:命令行直接启动

4 卡部署:

python -m sglang.launch_server \ --model-path MiniMaxAI/MiniMax-M2.5 \ --tp-size 4 \ --tool-call-parser minimax-m2 \ --reasoning-parser minimax-append-think \ --host 0.0.0.0 \ --trust-remote-code \ --port 8000 \ --mem-fraction-static 0.85

8 卡部署:

python -m sglang.launch_server \ --model-path MiniMaxAI/MiniMax-M2.5 \ --tp-size 8 \ --ep-size 8 \ --tool-call-parser minimax-m2 \ --trust-remote-code \ --host 0.0.0.0 \ --reasoning-parser minimax-append-think \ --port 8000 \ --mem-fraction-static 0.85

由于模型较大,首次加载时间较长,可能需要半小时以上。

从源码结构看,launch_server_cmdwait_for_server来自 SGLang 的sglang.utils工具模块(即脚本中from sglang.utils import launch_server_cmd, wait_for_server一行),前者负责在子进程中拉起sglang.launch_server命令并返回进程句柄与端口,后者会轮询服务健康状态直至就绪,因此脚本天然具备"进程托管 + 就绪等待"的能力,适合写入部署脚本或 CI 流程。

curl 测试

服务启动后,可以先使用 curl 调用 OpenAI 兼容接口验证连通性:

curl http://localhost:8000/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "MiniMaxAI/MiniMax-M2.5", "messages": [ {"role": "system", "content": [{"type": "text", "text": "You are a helpful assistant."}]}, {"role": "user", "content": [{"type": "text", "text": "请简要介绍 MiniMax-M2.5 模型的特点。"}]} ] }'

注意请求体中的model字段需与启动时--model-path指定的名称对应(此处均为MiniMaxAI/MiniMax-M2.5)。消息的content使用数组结构([{"type": "text", "text": "..."}]),这是 MiniMax 系列多模态风格的消息格式,在后续 Python 示例中同样适用。

调用示例

以下示例均使用 OpenAI 官方 Python SDK 调用 SGLang 的 OpenAI 兼容接口。先安装依赖:

pip install openai

聊天对话(Chat Completions)

# test_chat.py from openai import OpenAI client = OpenAI( api_key="EMPTY", base_url="http://127.0.0.1:8000/v1", ) response = client.chat.completions.create( model="MiniMaxAI/MiniMax-M2.5", messages=[ {"role": "user", "content": "请介绍 MiniMax-M2.5 模型相比 M2 有哪些提升?"} ], max_tokens=8192, top_p=0.95, temperature=1.0, ) msg = response.choices[0].message print("MiniMax-M2.5:", msg.content)

运行:

python test_chat.py

说明:SGLang 服务本身不校验 API Key,客户端传api_key="EMPTY"仅为满足 OpenAI SDK 的必填参数约束;base_url指向 SGLang 服务的/v1端点。

流式输出(Streaming)

# test_streaming.py from openai import OpenAI client = OpenAI( api_key="EMPTY", base_url="http://127.0.0.1:8000/v1", ) stream = client.chat.completions.create( model="MiniMaxAI/MiniMax-M2.5", messages=[{"role": "user", "content": "请用 Python 实现一个二叉搜索树,包含插入、查找和删除操作。"}], stream=True, max_tokens=32768, top_p=0.95, temperature=1.0, ) for chunk in stream: delta = chunk.choices[0].delta if delta and delta.content: print(delta.content, end="", flush=True)

运行:

python test_streaming.py

流式模式适合长文本生成与对话类交互场景:通过stream=True开启 SSE 流式返回,客户端逐 chunk 读取delta.content增量输出,flush=True保证内容实时刷出,避免等待全部生成完毕。长回答场景下可将max_tokens放宽到 32768。

工具调用(Tool Calling)

MiniMax-M2.5 在 Agent 和工具调用方面表现出色。在 SGLang 部署时通过--tool-call-parser minimax-m2启用工具调用功能,使模型能够识别何时需要调用外部工具,并以结构化 JSON 格式输出工具调用参数。以下脚本实现了一个天气查询工具调用示例:

# test_tool_calling.py from openai import OpenAI import json client = OpenAI(base_url="http://localhost:8000/v1", api_key="EMPTY") def get_weather(location: str, unit: str): return f"Getting the weather for {location} in {unit}..." tools = [{ "type": "function", "function": { "name": "get_weather", "description": "Get the current weather in a given location", "parameters": { "type": "object", "properties": { "location": {"type": "string", "description": "City and state, e.g., 'San Francisco, CA'"}, "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]} }, "required": ["location", "unit"] } } }] response = client.chat.completions.create( model=client.models.list().data[0].id, messages=[{"role": "user", "content": "北京今天天气怎么样?请用摄氏度。"}], tools=tools, tool_choice="auto" ) tool_call = response.choices[0].message.tool_calls[0].function print(f"Function called: {tool_call.name}") print(f"Arguments: {tool_call.arguments}") print(f"Result: {get_weather(**json.loads(tool_call.arguments))}")

运行:

python test_tool_calling.py

代码要点:

  • tools列表以 OpenAI Function Calling 的标准 JSON Schema 描述工具(名称、描述、参数属性与必填项);
  • tool_choice="auto"表示由模型自主决定是否调用工具;
  • model=client.models.list().data[0].id动态获取服务端已加载模型的 ID,避免手写模型名与启动参数不一致;
  • 模型返回的tool_calls[0].function.arguments是 JSON 字符串,通过json.loads解析后可直接解包传入本地函数执行,完成"模型决策 → 参数解析 → 函数执行"的完整闭环。

结合仓库中 MiniMax-M2.5 vLLM 部署调用 文档可以看出:vLLM 路径需要同时开启--enable-auto-tool-choice --tool-call-parser minimax_m2两个参数,而 SGLang 路径只需--tool-call-parser minimax-m2一个参数即可启用同等能力,启动参数更简洁;两者都额外通过 reasoning parser 将模型的思考内容(<think>块)与正式回答分离处理。

参数说明与建议

以下是 SGLang 启动命令中各关键参数的含义与配置建议:

  • --model-path:模型名称或本地路径(例:MiniMaxAI/MiniMax-M2.5);OpenAI 请求中的model字段需与之对应。
  • --tp-size:张量并行大小,常设为 GPU 数量(4 或 8)。多卡场景下设置等于 GPU 数,可将模型权重切分到各卡,提升吞吐并扩展上下文容量。
  • --ep-size:专家并行大小(8 卡示例中开启)。对 MiniMax-M2.5 这类 MoE 架构模型,8 卡时配合--ep-size 8可将专家分布到各卡,减少通信开销。
  • --tool-call-parser minimax-m2:启用 MiniMax 的工具调用解析,使模型输出遵循工具调用的结构化格式。
  • --reasoning-parser minimax-append-think:启用思考内容解析。MiniMax 系列模型会在回答前生成<think>思考块,该参数让 SGLang 识别并以"追加"方式处理 reasoning 内容,便于在响应中区分思考过程与最终回答。
  • --mem-fraction-static:静态显存比例,显存紧张时可适当调低(例如 0.7 / 0.6),为 KV Cache 预留更多动态空间或反之压缩缓存容量,需结合并发需求权衡。
  • --trust-remote-code:信任远程代码(MiniMax 模型需要此参数)。MiniMax-M2.5 的模型定义依赖仓库内自定义代码,缺少该参数将无法正常加载。
  • --host/--port:服务监听地址与端口,示例统一为0.0.0.0:8000,便于容器或跨机访问。

采样参数方面,官方推荐使用以下推理参数以获得最好的性能:

temperature=1.0, top_p=0.95, top_k=20

其中top_k通过采样参数传入 OpenAI 兼容请求(SGLang 支持透传);追求稳定确定性输出时,可适当降低temperaturetop_p

显存建议:M2.5 权重约 220 GB;每 1M 上下文约 240 GB。请结合业务并发与上下文需求评估资源。

常见问题

Hugging Face 网络问题

如果遇到网络问题(模型拉取失败或超时),可设置镜像后再进行拉取:

export HF_ENDPOINT=https://hf-mirror.com

设置后重新启动服务或重新执行模型下载即可。若已通过modelscope下载模型并指定了本地路径,则无需此设置。

MiniMax-M2 model is not currently supported

该报错通常意味着当前 SGLang 版本过旧,尚未内置对 MiniMax 模型的支持。请升级到最新的稳定版本,需 >= v0.5.4.post1:

pip install -U sglang

升级后重启服务即可。同样的问题也出现在 vLLM 与 Transformers 部署路径中(对应版本要求见 MiniMax-M2.5 vLLM 部署调用 与 MiniMax-M2.5 Transformers 部署调用),处理思路一致:确认版本、确认已开启--trust-remote-code

与仓库中其他部署方式的横向对照

在仓库的 MiniMax-M2.5 教程集中,SGLang 是三条部署链路中的一条,其余两条可作为场景互补参考:

  • Transformers 直连(3-MiniMax-M2.5-Transformers.md):通过AutoModelForCausalLM加载权重做单机推理,适合调试、离线批量推理与二次开发;不暴露 OpenAI 接口,需自行处理对话模板(apply_chat_template)与生成循环。
  • vLLM 部署(1-MiniMax-M2.5-vLLM.md):同样提供 OpenAI 兼容接口与多卡并行,参数命名略有差异(如--tensor-parallel-size--enable_expert_parallel--tool-call-parser minimax_m2),适合已在 vLLM 技术栈上沉淀运维经验的团队。

三篇文档均以MiniMaxAI/MiniMax-M2.5为模型名、/root/autodl-tmp为模型缓存目录,因此可以先通过 model_download.py 脚本(SGLang 版示例) 下载一次权重,然后在三种推理方式之间按需切换,无需重复下载。

小结

本文完整复现了仓库中 MiniMax-M2.5 的 SGLang 部署链路:从环境与显存评估、依赖安装(SGLang >= v0.5.4.post1)、模型下载(modelscope / HF 镜像两种方式),到 4 卡 / 8 卡两种规模的sglang.launch_server启动(含 Python 脚本与命令行两种形式),再到 curl 冒烟测试与聊天、流式、工具调用三类 OpenAI SDK 客户端调用,最后梳理了全部关键参数与两类高频报错的排查方法。

对想要在生产环境落地 MiniMax-M2.5 的开发者而言,核心要点可概括为三点:一是按"220 GB 权重 + 每 1M 上下文 240 GB"的显存公式评估资源,二是确保 SGLang 版本达标并开启--trust-remote-code,三是针对 Agent 场景正确配置--tool-call-parser minimax-m2--reasoning-parser minimax-append-think。其余更细粒度的优化(如显存比例、采样参数)可结合业务并发量在 support_model.md 索引的配套文档基础上继续深入。

【免费下载链接】self-llm《开源大模型食用指南》针对中国宝宝量身打造的基于Linux环境快速微调(全参数/Lora)、部署国内外开源大模型(LLM)/多模态大模型(MLLM)教程项目地址: https://gitcode.com/datawhalechina/self-llm

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询