当前文档不是一套镜像覆盖所有模型
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 / AMD | Hygon |
|---|---|---|
| GLM-5.1 / 5.2 / 5.3 | devtech/glm5.2:2.3.0-20260830 | mcconline/inference/sglang:glm5.2-2.3.0-hygon-20260915 |
| DeepSeek-V4-Flash / V4-Flash-0731 | devtech/sglang-dsv4:3.1-20260907 | mcconline/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-20260805 | mcconline/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 上就能跑起来。
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 路径。
torch_musa 2.9.0、torchada 0.1.56、mthreads-ml-py。python setup_musa.py install 安装带 MUSA 后端的 sglang-kernel。pip install "python[all_musa]" 安装 SGLang 及其完整 MUSA 依赖环境。import torchada,否则 flash_attn 的 CUDA 符号解析会失败。# 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 参数、模型适配均保持与原来一致。cannot find libcudart 类错误,说明 torchada 没先 import。确保 import torchada 出现在 import sglang 之前。这正是 torchada PR #49 要解决的问题。四、启动 OpenAI 兼容服务
SGLang 也提供了 sglang launch_server 命令行接口,与 vLLM 十分相似:
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
# 请求测试
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
# 启用 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 子集快速评测):
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 + 历史消息是 完全重复 的,命中后几乎零开销。
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% | 原生 |
八、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 的全套适配补丁。
# 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
8.3 AI Agent + TileLang 补齐模型特异算子
DeepSeek-V4 某些计算负载高度特异化,标准的融合模式无法覆盖。摩尔线程采用了一个AI Agent 窗口与 TileLang 配合的开发循环,快速补齐 missing kernel:
- 算子语义分析:AI Agent 读取模型代码中的算子调用 + 输入输出规格。
- 接口适配:生成 TileLang Kernel 骨架,填入 layout / dtype 券贩。
- Kernel 实现:Agent 生成初始 DSL 代码,并调用 mate 优化 pass。
- 正确性与精度验证:对 reference 函数跑 diff 测试,达标则交付。
这个循环下完成了 RMSNorm、RoPE、Compress、Topk 等多个核心自定义算子的快速开发与集成。详细流程可参考 m6-l4:TileLang-MUSA 算子开发课程。
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 接口层。
# 启动九天 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
十、未来路线
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 原生路径。
补充实验:集成 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
可复用的回归验收表
- 前置条件:掌握设备内存和主机内存的区别,准备可回滚的引擎环境。记录 CPU、GPU、OS、驱动、SDK、torch_musa、SGLang commit;缺项不进入生产验收。
- 读目标 commit 的设备类型判断和内存查询代码,画出集成 / 独立 GPU 两个分支,标注取值来源和单位。
- 先运行分支单元测试,检查返回值未被覆盖;将 mock 测试与物理设备测试分开保存。
- 在具体硬件上比较进程启动前后的系统内存、设备报告值与引擎预算,再以短请求验证启动、输出和 OOM 边界。
- 逐步增加输入和并发,保留日志;失败则恢复原镜像与调度参数,不在共享生产节点直接试探上限。
该 PR 的 CPU 测试栈不能作为 MUSA 部署矩阵;物理设备兼容组合仍需按目标发布文档和现场环境确认。上述步骤属于教学设计,不是已完成的运行验收。SGLang PR #43398
观察区:INT8 讨论不等于功能交付
MUSA Roadmap 中的 W8A8 INT8 贡献讨论与维护者邀请提交 PR,是协作信号,不是已合并实现或正式发布证明。不要与上一课 W4A16 的开发分支能力混为一谈。SGLang MUSA Roadmap