🤖 模块五:AI模型推理部署

SGLang-MUSA推理引擎

进阶·⏱ 70分钟·📅 2026-10-15
2026-09-17 月度技术更新
先阅读本节,再使用后面的历史教程。旧章节保留用于理解演进;出现版本、镜像或依赖冲突时,以本节明确范围及官方发布说明为准。本次为文档核验,未在真实 GPU 上执行。

当前文档不是一套镜像覆盖所有模型

2026-09-17 核查的官方发布页标为 SGLang-MUSA v0.5.12/13:GLM 与 DeepSeek-V4 镜像基于社区 0.5.13,Qwen 系列、MiniMax-M3、Kimi-K2.5/2.6 等基于 0.5.12.post1。页面没有明确发布日期;镜像标签中的日期只是标签信息,不作为 Release 发布时间。SGLang-MUSA 版本发布信息

模型组Intel / AMDHygon
GLM-5.1 / 5.2 / 5.3devtech/glm5.2:2.3.0-20260830mcconline/inference/sglang:glm5.2-2.3.0-hygon-20260915
DeepSeek-V4-Flash / V4-Flash-0731devtech/sglang-dsv4:3.1-20260907mcconline/inference/sglang:dsv4-3.1-hygon-20260915
Qwen 系列 / MiniMax-M3 / Kimi-K2.5、2.6 及其他模型(以官方范围为准)mcconline/inference/sglang:v0.5.12.post1-ph1-4.3.5-torch2.9.0-20260805mcconline/inference/sglang:v0.5.12.post1-ph1-hygon-4.3.5-torch2.9.0-20260810-1700

上表均省略相同前缀 registry.mthreads.com/,不是完整可复制命令。模型范围与标签来自 官方镜像矩阵;实际部署先核对 CPU 平台、模型部署指南及硬件条件。

将新能力转换为可验证用例

官方列出 GLM-5.2/5.3 长上下文与 FP8 KV cache、DeepSeek-V4 自投机解码和 radix-cache、Beam Search 全链路、deterministic inference、通信与空 collective 修复。能力清单不意味着每种模型/精度/并行组合都已获得相同验证。功能及修复列表

  • 长上下文:测试业务输入分位点与显存边界,记录 TTFT、吞吐及 OOM;FP8 KV 必须另验输出质量。
  • 缓存:用共享前缀与无共享前缀两组请求,区分冷启动、首次命中和稳态,不能只报告最好的一次。
  • 确定性:固定种子与采样参数重复请求,再分别验证单卡和 TP;不要把新增支持解释为所有配置逐位相同。
  • 通信:覆盖正常 batch、空 batch、结束请求和超时;扩展到多机前保存单机可回滚配置。

本节为测试设计,不提供未经运行的性能数字。不要把 vLLM-MUSA 0.24.0 所用的 PyTorch/torch_musa 2.11 配套包,强行覆盖进 Qwen/MiniMax/Kimi 等仍使用 torch2.9.0 标签的 SGLang 模型镜像;依赖须遵循各自发行说明。vLLM 配套栈;各模型独立镜像

历史教程与基础知识

一、SGLang 是什么?

SGLang(Structured Generation Language)是 LMSys 团队开源的高性能 LLM 推理引擎,最初面向 结构化生成(JSON、函数调用、多步推理链)这一类复杂场景。它的核心创新:

  • RadixAttention:把相同前缀的 prompt 共享 KV cache,前缀命中时推理几乎零开销。
  • 可编程前端:用 Python DSL 表达 gen / select / fork 等生成原语,适合 Agent / RAG 场景。
  • FP8 原生支持:在新架构 GPU 上跑 FP8 推理,显存减半,吞吐显著提升。

SGLang-MUSA 是摩尔线程推出的 MUSA 适配版本。2026-04 上旬,摩尔线程首次实现了 MiniMax M2.5 在国产 GPU 上的 Day-0 适配,背后就是 SGLang-MUSA 提供的推理栈 —— 模型官方发布当天,MTT S5000 上就能跑起来。

✅
2026-05-13 重大更新:MUSA 合入 SGLang 官方主线
本周摩尔线程完成了一件里程碑事件:MUSA 后端正式加入 SGLang 官方支持体系,相关代码已成功合入 SGLang 主线。这意味着开发者使用 SGLang 运行大语言模型及多模态推理任务时,可以直接调用摩尔线程全功能 GPU,无需再依赖任何第三方适配层,国产算力与国际主流推理框架的协同进入“原生支持”阶段。参考:SGLang 主线原生支持新闻。
💡
SGLang-MUSA vs vLLM-MUSA,怎么选?
vLLM-MUSA:生态最广,工具链成熟,OpenAI 兼容 API 丰富,适合标准聊天 / 补全场景。
SGLang-MUSA:在 FP8、RadixAttention、结构化生成上更强,新架构(S5000)上吞吐常常领先;Day-0 适配热门新模型的首选。
生产环境常见组合:两者并存,按业务路由 —— 通用对话走 vLLM,Agent / 工具调用 / 长 prompt 前缀复用走 SGLang。

二、Day-0 适配案例:MiniMax M2.5

MiniMax M2.5 是 2026-04 发布的旗舰 MoE 模型。摩尔线程在 官方新闻 中公布:基于 MTT S5000 的 SGLang-MUSA 栈实现了发布即推理,原生 FP8,首 token 延迟与官方参考实现在同一档。

背后的关键基础设施:

  • torchada:让 SGLang 依赖的 flash_attn 不用改一行代码就能跑(参见 torchada PR #49)。
  • MATE:提供 fused rms_norm、rotary embedding 等必需算子。
  • torch_musa 2.9.0:原生 FP8 张量支持 + DLPack zero-copy。

三、安装 SGLang(主线原生 MUSA 支持)

随着 MUSA 后端合入 SGLang 主线,安装路径有了重大变化:不再需要 sglang-musa fork 版,直接从 SGLang 官方仓库安装即可,根据环境可选择源码安装或未来的 wheel 路径。

1
安装基础栈:torch_musa 2.9.0、torchada 0.1.56、mthreads-ml-py。
2
从 SGLang 官方仓库克隆代码,运行 python setup_musa.py install 安装带 MUSA 后端的 sglang-kernel。
3
以 pip install "python[all_musa]" 安装 SGLang 及其完整 MUSA 依赖环境。
4
在入口代码顶部 import torchada,否则 flash_attn 的 CUDA 符号解析会失败。
bash
# 1) 基础栈
pip install torch_musa torchada mthreads-ml-py

# 2) 从 SGLang 官方仓库安装(方式 A)
git clone https://github.com/sgl-project/sglang.git
cd sglang
python setup_musa.py install
pip install "python[all_musa]"

# 3) 未来可使用 wheel 路径(官方发布后)
# pip install sglang-kernel --index-url https://docs.sglang.io/whl/musa<<version>>

# 4) 验证
python -c "import torchada; import sglang; print('sglang', sglang.__version__, 'ok')"
ℹ️
过渡期提示
之前存在的 sglang-musa fork 仓库在主线合入后进入维护状态,推荐新项目直接使用 SGLang 官方仓库 + setup_musa.py 路径。老项目可以平滑迁移:除了安装命令,推理服务启动、API 参数、模型适配均保持与原来一致。
⚠️
flash_attn 导入失败?
SGLang 在 import 时会尝试加载 flash_attn。如果你看到 cannot find libcudart 类错误,说明 torchada 没先 import。确保 import torchada 出现在 import sglang 之前。这正是 torchada PR #49 要解决的问题。

四、启动 OpenAI 兼容服务

SGLang 也提供了 sglang launch_server 命令行接口,与 vLLM 十分相似:

bash
export MUSA_VISIBLE_DEVICES=0

python -m sglang.launch_server \
  --model-path deepseek-ai/DeepSeek-R1-Distill-Qwen-7B \
  --host 0.0.0.0 \
  --port 30000 \
  --dtype bfloat16 \
  --mem-fraction-static 0.85
bash
# 请求测试
curl http://localhost:30000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "default",
    "messages": [{"role":"user","content":"介绍一下 RadixAttention"}],
    "max_tokens": 256
  }'

五、FP8 推理实战

MTT S5000 原生支持 FP8,相比 BF16:

  • 显存:权重占用减半(7B 模型从 ~14GB 降到 ~7GB)
  • 吞吐:矩阵乘吞吐提升约 1.8–2×
  • 精度:经过校准,QA/MATH/代码基准通常损失 < 1pp
bash
# 启用 FP8 推理
python -m sglang.launch_server \
  --model-path Qwen/Qwen2.5-72B-Instruct-FP8 \
  --tp 4 \
  --quantization fp8 \
  --dtype bfloat16 \
  --mem-fraction-static 0.88

精度验证脚本(用 MMLU 子集快速评测):

python
from openai import OpenAI
client = OpenAI(base_url="http://localhost:30000/v1", api_key="EMPTY")

# 取 MMLU 100 题,要求模型直接输出 A/B/C/D
correct = 0
for q, gold in mmlu_subset:
    resp = client.chat.completions.create(
        model="default",
        messages=[{"role":"user","content": q + "\n只输出 A/B/C/D:"}],
        max_tokens=3, temperature=0.0,
    )
    pred = resp.choices[0].message.content.strip()[:1]
    if pred == gold: correct += 1
print(f"MMLU 100 题准确率:{correct}/100")

六、用 RadixAttention 加速多轮对话

RadixAttention 会把所有请求的 KV cache 按前缀组织为一棵 trie。对于典型的多轮对话 / RAG,大段 system prompt + 历史消息是 完全重复 的,命中后几乎零开销。

python
import sglang as sgl

@sgl.function
def multi_turn(s, history, q):
    s += sgl.system("你是一个耐心的技术助教。")
    for role, text in history:
        s += getattr(sgl, role)(text)  # user() / assistant()
    s += sgl.user(q)
    s += sgl.assistant(sgl.gen("answer", max_tokens=256))

sgl.set_default_backend(sgl.RuntimeEndpoint("http://localhost:30000"))

history = [
    ("user", "什么是 MUSA?"),
    ("assistant", "MUSA 是摩尔线程的并行计算架构。"),
]
state = multi_turn.run(history=history, q="那 SGLang-MUSA 又是什么?")
print(state["answer"])

第二次调用时 system + 历史会直接命中前缀缓存,只计算新 user 消息和生成部分。

七、与 vLLM-MUSA 的性能对比

摩尔线程官方与社区在 S5000 上做的粗测(Qwen2.5-7B,bfloat16,ShareGPT 数据集):

引擎batch=1 首 token 延迟batch=32 吞吐FP8 支持
vLLM-MUSA 0.17基线基线部分
SGLang-MUSA相近+10~20%原生
表1:MTT S5000 上的大致性能对照(具体数值因模型与版本而异)

八、DeepSeek-V4 全链路工程化适配(2026-05-18 追加)

2026-05-01,摩尔线程官方宣布:S5000 + MUSA + SGLang 组合完成了 DeepSeek-V4 的完整运行验证,该成果表明面向新一代 MoE 大模型,国产 GPU 平台已构建起从硬件架构核心计算引擎承接、热点算子支持,再到端到端部署验证的系统化适配链路。

8.1 原生 FP8 能力覆盖的关键模块

围绕 S5000 的原生 FP8,摩尔线程完成了五个关键模块的适配,并通过多层回归测试证明了正确性与稳定性:

  • 激活量化:SwiGLU FP8 quant
  • MoE 路由:routing
  • 注意力预处理:attention-prep
  • 缓存管理:FlashMLA cache store / paged metadata
  • 解码压缩:compressor decode / prefill

8.2 使用官方推理镜像一键启动

摩尔线程已推送生产可用的预集成镜像。这个镜像里面预装了 SGLang 主线 MUSA 后端、torch_musa 2.9.0、torchada,以及应对 DeepSeek-V4 的全套适配补丁。

bash
# 1) 拉取官方 DeepSeek-V4 + SGLang 推理镜像
docker pull registry.mthreads.com/mcconline/inference/sglang:deepseek-v4-s5000-4.3.5-torch2.9.0-20260430

# 2) 启动容器,映射 GPU 与外部模型目录
docker run --rm -it --gpus all \
  -v /data/models/DeepSeek-V4-Flash-mthreads-FlagOS:/models/ds-v4-flash \
  -p 30000:30000 \
  registry.mthreads.com/mcconline/inference/sglang:deepseek-v4-s5000-4.3.5-torch2.9.0-20260430

# 3) 在容器内启动 SGLang 服务
python -m sglang.launch_server \
  --model-path /models/ds-v4-flash \
  --host 0.0.0.0 --port 30000 \
  --tp 8 \
  --quantization fp8 \
  --dtype bfloat16 \
  --mem-fraction-static 0.88
✅
为什么 TileKernels Day-0 复用这么关键
DeepSeek-V4 发布同期开源了 TileKernels 算子库,里面包含 SwiGLU+FP8 quant、flash_sparse_attention_v4 这些针对新架构优化的算子。摩尔线程的 MATE 算子库在 layout、dtype、scale contract 及接口层面与 DeepGEMM 深度兼容,使得 TileKernels 可以被 Day-0 复用,消除了热点算子的格式、接口对齐开销。

8.3 AI Agent + TileLang 补齐模型特异算子

DeepSeek-V4 某些计算负载高度特异化,标准的融合模式无法覆盖。摩尔线程采用了一个AI Agent 窗口与 TileLang 配合的开发循环,快速补齐 missing kernel:

  1. 算子语义分析:AI Agent 读取模型代码中的算子调用 + 输入输出规格。
  2. 接口适配:生成 TileLang Kernel 骨架,填入 layout / dtype 券贩。
  3. Kernel 实现:Agent 生成初始 DSL 代码,并调用 mate 优化 pass。
  4. 正确性与精度验证:对 reference 函数跑 diff 测试,达标则交付。

这个循环下完成了 RMSNorm、RoPE、Compress、Topk 等多个核心自定义算子的快速开发与集成。详细流程可参考 m6-l4:TileLang-MUSA 算子开发课程。

ℹ️
与 V4-Pro 的进度
官方表示 DeepSeek-V4-Flash(284B/13B MoE)已完成 Day-0 适配,DeepSeek-V4-Pro(1.86T)的迁移正在推进中。两个模型镜像同时在 ModelScope 与 HuggingFace 以 FlagRelease/DeepSeek-V4-Flash-mthreads-FlagOS / FlagRelease/DeepSeek-V4-Pro-mthreads-FlagOS 名称发布。

九、面向央企:中国移动九天 35B 适配案例(2026-05-18 追加)

2026-04-28,中国移动自主研发的九天 35B 通用大模型在第九届数字中国建设峰会上发布。摩尔线程官方同期宣布:MTT S5000 + MUSA 软件栈已率先完成九天 35B 的全流程适配与推理验证,SGLang-MUSA 是其中的推理引擎。

针对九天 35B 特有的注意力机制与长序列推理,摩尔线程做了三层优化:

  • MUSA C 开发框架:TP + PP 拆分的底层 collective 为高并发调优。
  • muDNN 计算库:针对长序列 Attention 的 kernel 优化。
  • MATE 算子库:fused rms_norm、rotary embedding、flash_attn 接口层。
bash
# 启动九天 35B 推理服务(假设已拿到模型权重)
python -m sglang.launch_server \
  --model-path /models/jiutian-35b \
  --host 0.0.0.0 --port 30000 \
  --tp 4 \
  --dtype bfloat16 \
  --max-model-len 32768 \
  --mem-fraction-static 0.86
✅
企业场景意义
这是国产 GPU 首次在央企大模型项目中拿到正式适配位。在标准推理场景下,MTT S5000 可稳定支撑九天 35B 模型的高并发请求,满足云网 / 营销 / 客服等场景的低时延、高可靠部署要求。参考:九天 35B 适配新闻。

十、未来路线

SGLang-MUSA 的后续方向包括:

  • 随 SGLang 主线同步推进以 JIT Kernel + TileLang 优化 DeepSeek-V4 的热点路径。
  • 覆盖更多大模型:除 DeepSeek、Qwen3/3.5、Qwen-VL 之外,已支持 MiniMax M2.5 / M2.7,智谱 GLM 4 / 5 系列。
  • 与 TileLang-MUSA 算子库深度集成,让 attention、GEMM 达到接近手写的性能上限。
  • 多模态路径:推进 Wan、LTX 等视频生成模型在 sglang multimodal_gen 中的 MUSA 原生路径。
✅
本课小结
SGLang-MUSA 是摩尔线程在国产 GPU 上追求 极致推理性能 的答卷:RadixAttention 让前缀重复的场景加速数倍,原生 FP8 把 S5000 的算力充分释放。本周 MUSA 后端正式合入 SGLang 主线,开发者无需依赖 fork 即可原生调用国产 GPU;同期完成了 DeepSeek-V4 的全链路适配、中国移动九天 35B 的央企级项目落地。参考:MiniMax M2.5 Day-0、DeepSeek-V4 全链路适配。
2026-10-15 技术维护
本节为文档核验与教学实验设计,未在真实 MUSA GPU 上实测。开发分支、待合并方案与正式发布分别标明;不覆盖原课程的锁定环境。

补充实验:集成 GPU 与独立 GPU 的可用内存

SGLang PR #43398 于 2026-10-12 合入主线,修复 MUSA 集成 GPU 的主机可用内存结果随后被 torch.musa.mem_get_info 覆盖的问题,通过分支区分集成与独立 GPU 路径。它不是所有显存不足问题的通用修复。SGLang PR #43398

作者验证采用 CPU mock 测试,没有运行真实 MUSA GPU 或模型。本课不指定已验证集成 GPU 型号,也不把这些测试推导成正式包或生产性能已通过。SGLang PR #43398

可复用的回归验收表

  1. 前置条件:掌握设备内存和主机内存的区别,准备可回滚的引擎环境。记录 CPU、GPU、OS、驱动、SDK、torch_musa、SGLang commit;缺项不进入生产验收。
  2. 读目标 commit 的设备类型判断和内存查询代码,画出集成 / 独立 GPU 两个分支,标注取值来源和单位。
  3. 先运行分支单元测试,检查返回值未被覆盖;将 mock 测试与物理设备测试分开保存。
  4. 在具体硬件上比较进程启动前后的系统内存、设备报告值与引擎预算,再以短请求验证启动、输出和 OOM 边界。
  5. 逐步增加输入和并发,保留日志;失败则恢复原镜像与调度参数,不在共享生产节点直接试探上限。

该 PR 的 CPU 测试栈不能作为 MUSA 部署矩阵;物理设备兼容组合仍需按目标发布文档和现场环境确认。上述步骤属于教学设计,不是已完成的运行验收。SGLang PR #43398

观察区:INT8 讨论不等于功能交付

MUSA Roadmap 中的 W8A8 INT8 贡献讨论与维护者邀请提交 PR,是协作信号,不是已合并实现或正式发布证明。不要与上一课 W4A16 的开发分支能力混为一谈。SGLang MUSA Roadmap