
1. 为什么要在摩尔线程 GPU 上跑 MiniMax M2.5MiniMax M2.5 发布后很多做 Agent 和代码生成的开发者第一反应是能不能在本地或自有集群上跑起来尤其是手里已经有摩尔线程 MTT S5000 这类全功能 GPU 的团队最关心的是“今天拿到模型今天能不能出推理结果”。这就是 Day-0 适配的价值——不是等社区慢慢补算子而是发布当天就能在国产算力上完成加载、推理、压测的完整闭环。MiniMax M2.5 在编程、工具调用和长上下文 Agent 任务上表现突出但长上下文意味着 KV Cache 占用大、注意力计算密集对显存带宽和算子覆盖要求很高。摩尔线程 MUSA 架构配合 SGLang-MUSA 推理引擎把原生 FP8 加速能力释放出来才让 MTT S5000 在 Day-0 就承接住这个模型。我试过在 MUSA 环境里从零配到跑通下面把可复制的骨架和踩过的坑整理出来你可以直接照着操作。这篇文章面向的是已经在用或准备用摩尔线程 GPU 部署大模型的开发者重点不是讲架构原理而是交付一套能跑通的配置、加载脚本和验证动作。如果你手头有 MTT S5000 或同代 MUSA 设备跟着走一遍就能看到 MiniMax M2.5 的推理输出。2. TaoToken 前置先把模型调用链路理清楚在摩尔线程 GPU 上跑 MiniMax M2.5有两种典型路径。一种是纯本地部署模型权重和推理引擎都在 MUSA 设备上另一种是本地做部分推理、外部做补充调用。不管哪种你都需要一个稳定的模型访问入口来做对照验证——比如确认同一份 prompt 在本地和远端的行为是否一致或者在没有 GPU 的调试机上先验证请求格式。TaoToken 在这里的角色是提供统一的模型对话入口和 API Key 管理。你可以先在模型对话页面确认 MiniMax M2.5 的请求格式和返回结构再去本地写 MUSA 加载脚本这样能减少“本地跑不通但不知道是模型问题还是环境问题”的排查成本。具体操作上先到官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 了解接入方式然后在控制台创建 API Key。控制台地址是 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite API Key 管理在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 。拿到 Key 之后你可以先用模型对话页面发一条测试请求确认 MiniMax M2.5 的返回符合预期再进入本地 MUSA 环境配置。注意本地 MUSA 部署和远端 API 调用是两条链路建议先用远端确认模型行为再在本地复现这样排障时能快速定位是环境问题还是模型问题。如果你后续要做长期编码或 Agent 任务可以关注 Coding Plan 页面 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 它更适合持续性的代码生成场景。接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 配置细节以文档为准。3. 可复制配置MUSA 工具链与 SGLang-MUSA 环境骨架这一节是核心操作部分。目标是在摩尔线程 GPU 上把 MUSA 工具链、Python 环境、SGLang-MUSA 推理引擎和 MiniMax M2.5 权重串起来。以下命令和配置是骨架具体版本号以你拿到的 MUSA SDK 和模型发布说明为准。3.1 确认 MUSA 驱动与工具链先确认设备识别正常。MUSA 提供了类似 CUDA 的工具链命令你可以用mthreads-gmi查看 GPU 状态mthreads-gmi预期输出会列出 MTT S5000 的型号、显存占用、驱动版本和 MUSA 版本。如果这条命令报找不到说明 MUSA 驱动没装好或环境变量没配。接着检查 MUSA 编译器mcc --versionmcc是 MUSA 的编译器入口类似nvcc。版本要和你安装的 SGLang-MUSA 轮子匹配否则编译自定义算子时会报 ABI 不兼容。3.2 创建 Python 环境并安装依赖建议用 conda 或 venv 隔离环境避免和系统 Python 冲突conda create -n minimax-musa python3.10 -y conda activate minimax-musa然后安装 MUSA 版的 PyTorch。摩尔线程会提供对应的 wheel 包通常放在官方软件源里pip install torch torchvision --index-url MUSA_PYTORCH_INDEX这里的MUSA_PYTORCH_INDEX替换成你拿到的 MUSA PyTorch 源地址。装完后验证import torch print(torch.__version__) print(torch.musa.is_available())如果torch.musa.is_available()返回True说明 PyTorch 已经能识别 MUSA 设备。这一步是整个链路的地基如果这里返回False后面 SGLang 一定跑不起来。3.3 安装 SGLang-MUSA 推理引擎SGLang-MUSA 是摩尔线程基于 SGLang 适配 MUSA 的推理引擎。安装方式和标准 SGLang 类似但要用 MUSA 适配版本pip install sglang-musa安装完成后检查关键模块python -c import sglang; print(sglang.__version__)如果导入报错优先看是不是 PyTorch 版本和 SGLang-MUSA 不匹配。常见的是 PyTorch 太新或太旧导致torch.musa相关符号找不到。3.4 准备 MiniMax M2.5 权重把 MiniMax M2.5 权重下载到本地目录假设放在/data/models/MiniMax-M2.5。目录结构应该包含config.json、tokenizer.json和分片权重文件。你可以用ls确认ls /data/models/MiniMax-M2.5如果权重是 FP8 格式确认 MUSA 环境已经支持 FP8 算子。MTT S5000 原生支持 FP8 加速但需要 SGLang-MUSA 版本对应。如果权重是 BF16显存占用会更高长上下文场景要留意 KV Cache 的显存预算。3.5 启动推理服务用 SGLang-MUSA 启动服务关键参数包括模型路径、端口、张量并行度和上下文长度python -m sglang.launch_server \ --model-path /data/models/MiniMax-M2.5 \ --port 30000 \ --tp-size 1 \ --context-length 32768 \ --dtype float8 \ --device musa参数说明用表格对照更清楚参数作用建议值--model-path模型权重目录本地绝对路径--port服务监听端口30000--tp-size张量并行度单卡填 1多卡按卡数--context-length最大上下文长度按显存和任务调整--dtype权重数据类型FP8 权重填 float8--device推理设备musa启动过程中会打印加载日志重点看有没有算子 fallback 到 CPU。如果看到大量 fallback说明部分算子还没被 MUSA 覆盖推理速度会明显下降。4. 验证请求与成功结果服务起来之后不要直接上生产流量先用一条短请求确认链路通。可以用 curl 发 OpenAI 兼容格式的请求curl http://127.0.0.1:30000/v1/chat/completions \ -H Content-Type: application/json \ -d { model: MiniMax-M2.5, messages: [ {role: user, content: 用 Python 写一个快速排序并解释时间复杂度} ], max_tokens: 256, temperature: 0.2 }预期返回是一个 JSONchoices[0].message.content里包含排序代码和复杂度说明。如果返回 200 且有内容说明 MUSA 上的 MiniMax M2.5 已经跑通。接着做一次长上下文验证把max_tokens调大并在 prompt 里塞一段长文本观察首 token 延迟和显存占用mthreads-gmi在请求进行时另开终端看显存如果显存接近上限说明 KV Cache 配置偏大需要降低--context-length或启用量化 KV Cache。再验证一下工具调用格式MiniMax M2.5 在 Agent 任务中常用 function callingcurl http://127.0.0.1:30000/v1/chat/completions \ -H Content-Type: application/json \ -d { model: MiniMax-M2.5, messages: [ {role: user, content: 查询北京今天的天气} ], tools: [ { type: function, function: { name: get_weather, parameters: {type: object, properties: {city: {type: string}}} } } ] }如果返回的tool_calls字段结构正确说明工具调用链路也通了。这一步对做 Agent 的开发者很关键因为很多模型在本地部署后 function calling 会因 tokenizer 或模板问题失效。5. 本篇常见错排查5.1torch.musa.is_available()返回 False最常见的原因是 PyTorch 装成了 CPU 版或 CUDA 版。检查pip list | grep torch确认安装的是 MUSA 适配 wheel。另外确认环境变量MUSA_HOME和LD_LIBRARY_PATH指向正确的 MUSA 库路径。5.2 SGLang 启动时报算子找不到如果日志里出现MUSA operator not found或类似信息说明当前 SGLang-MUSA 版本还没覆盖该算子。先确认版本是否匹配 MiniMax M2.5 的发布说明必要时升级 SGLang-MUSA。如果只是少量 fallback可以先用着但性能会受影响。5.3 显存不足 OOM长上下文场景下 KV Cache 是显存大户。可以尝试降低--context-length、启用量化 KV Cache、或者用--tp-size 2做多卡切分。另外确认--dtype和权重实际类型一致FP8 权重用 BF16 加载会浪费显存。5.4 请求返回空内容或乱码先检查 tokenizer 是否加载正确config.json里的model_type是否被 SGLang-MUSA 识别。如果返回乱码可能是 chat template 不匹配需要在启动参数里指定正确的 template 或更新 SGLang-MUSA 到支持 MiniMax M2.5 的版本。5.5 首 token 延迟过高如果首 token 要等很久先看是不是模型加载后第一次推理在做编译。MUSA 的算子编译会有一次性开销第二次请求通常会快很多。如果持续慢检查是否有算子 fallback 到 CPU以及 FP8 加速是否真正生效。6. 继续接入与长期使用建议跑通单次推理只是第一步。如果你要把 MiniMax M2.5 用在日常编码或 Agent 工作流里建议把本地 MUSA 服务和远端调用结合起来本地做低延迟、数据敏感的推理远端做弹性补充。TaoToken 的 API Key 和接入文档可以帮你统一管理调用入口接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite API Key 在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 。对于长期编码和 Agent 任务Coding Plan 页面 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 有更持续的方案。如果你在配 MUSA 环境时遇到算子或显存问题先用模型对话页面 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewrite 确认模型本身的行为再回到本地排查环境这样能省很多时间。实测下来Day-0 适配的关键不是等所有算子完美而是先把加载和推理链路跑通再逐步优化性能和覆盖度。