开源大模型食用指南:Qwen3-8B 昇腾 NPU 上基于 SGLang 搭建 OpenAI 兼容推理服务
【免费下载链接】self-llm《开源大模型食用指南》针对中国宝宝量身打造的基于Linux环境快速微调(全参数/Lora)、部署国内外开源大模型(LLM)/多模态大模型(MLLM)教程项目地址: https://gitcode.com/GitHub_Trending/se/self-llm
本篇技术指南讲解如何在昇腾(Ascend)NPU 环境下,通过 SGLang 推理框架及其昇腾后端 sglang-ascend,完成 Qwen3-8B 大模型的本地部署,并对外暴露兼容 OpenAI 协议的 HTTP 接口。你将掌握从 conda 环境搭建、torch-npu 与 sgl-kernel-npu 编译安装、ModelScope 模型下载,到sglang.launch_server服务启动与 curl / Python 双通道接口验证的完整实战流程,最终得到一套可被任意 OpenAI SDK 直接调用的本地推理服务。
为什么在昇腾 NPU 上选择 SGLang
《开源大模型食用指南》在 models_ascend 目录下针对昇腾平台提供了多套主流推理引擎的部署教程。仅以 Qwen3-8B 为例,仓库内就同时收录了三种方案:
- 01-Qwen3-8B-MindIE部署调用.md:昇腾官方 MindIE 推理引擎,通过修改
conf/config.json完成服务化配置; - 02-Qwen3-8B-vLLM-ascend部署调用.md:vLLM 官方昇腾插件 vllm-ascend,一条
vllm serve命令即可起服; - 本文的主角:SGLang 源码安装 +
srt_npu推理后端,配合 sgl-kernel-npu 内核库在昇腾设备上运行。
SGLang 是面向大模型推理的高性能服务框架,其昇腾支持通过sglang.launch_server --attention-backend ascend启用。与 MindIE、vLLM-ascend 类似,SGLang 在昇腾上同样对外提供 OpenAI 兼容 API,因此服务端实现细节对上层应用完全透明,便于已有 OpenAI SDK 业务的无缝迁移。
在动手之前,请先确认昇腾 NPU 芯片版本。根据仓库 support_model_Ascend.md 的说明,本教程面向Atlas A2 系列(昇腾 910B 系列芯片,含 910B1/B2/B3/B4 等型号)与Atlas A3 系列(昇腾 910C 系列芯片)产品。
环境准备:基础软硬件清单
本文的验证基础环境如下,动手前请确保环境已就绪:
---------------- ubuntu 22.04 NPU驱动 25.2.0 python 3.11 cann 8.2.RC1 torch 2.6.0 torch-npu 2.6.0 ----------------本文默认学习者已配置好以上
Pytorch (CANN)环境,如未配置请先自行安装。
进入服务器后,可以先用npu-smi info命令检查 NPU 设备是否被正确识别(该检查方式同样记录在 support_model_Ascend.md 的常见问题章节中)。裸金属或物理机用户还需确保 CANN 工具链的环境变量可用;使用 AutoDL 等云平台实例的用户通常已预装驱动与固件,可直接进入下一步。
环境搭建:从空环境到可运行 SGLang
创建 Python 虚拟环境
SGLang 的昇腾安装路径对 Python 版本有明确要求,本文使用 Python 3.11 创建独立环境,避免污染系统环境:
conda create --name sglang_npu python=3.11 conda activate sglang_npu随后pip换源加速下载并安装依赖包:
python -m pip install --upgrade pip pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple pip install modelscope其中modelscope用于后续通过国内镜像源下载模型权重。
安装 Pytorch-npu
昇腾 NPU 上的 PyTorch 由torch与torch_npu两部分组成。torch从 PyTorch 官方 CPU 源安装(NPU 侧算子由 torch_npu 提供,无需安装 CUDA 版 torch),torch_npu通过 pip 直接安装:
PYTORCH_VERSION=2.6.0 TORCHVISION_VERSION=0.21.0 TORCH_NPU_VERSION=2.6.0.post3 pip install torch==$PYTORCH_VERSION torchvision==$TORCHVISION_VERSION --index-url https://download.pytorch.org/whl/cpu pip install torch_npu==$TORCH_NPU_VERSION其中TORCH_NPU_VERSION需要与 CANN 版本(本文为 8.2.RC1)以及 NPU 驱动版本(25.2.0)匹配,三者共同决定torch_npu的可用性与算子行为。
安装 deep-ep 与 sgl-kernel-npu
sgl-kernel-npu是 SGLang 在昇腾设备上运行所需的算子内核库,仓库随附的build.sh会一次性编译并产出deep_ep与sgl_kernel_npu两个 wheel 包。其中sgl_kernel_npu提供昇腾后端所需的融合算子内核,deep_ep则面向大模型专家并行(EP)场景的通信优化——即便当前部署的模型用不到 MoE 通信,官方安装流程也要求一并编译安装。
pip install wheel==0.45.1 git clone https://github.com/sgl-project/sgl-kernel-npu.git # 添加环境变量 export LD_LIBRARY_PATH=/usr/local/Ascend/ascend-toolkit/latest/runtime/lib64/stub:$LD_LIBRARY_PATH source /usr/local/Ascend/ascend-toolkit/set_env.sh # 编译并安装 deep-ep 与 sgl-kernel-npu cd sgl-kernel-npu bash build.sh pip install output/deep_ep*.whl output/sgl_kernel_npu*.whl --no-cache-dir需要注意:编译过程依赖昇腾 CANN 工具链的环境变量,因此必须先source /usr/local/Ascend/ascend-toolkit/set_env.sh,否则build.sh可能因找不到编译工具链而失败。
源码安装 SGLang
昇腾支持目前需要通过源码方式安装 SGLang,并启用srt_npu推理后端特性:
git clone -b v0.5.3rc0 https://github.com/sgl-project/sglang.git cd sglang pip install -e python[srt_npu]-e表示以可编辑(开发)模式安装,[srt_npu]为 Python 包的 extras 依赖标记,会拉取昇腾后端相关的额外依赖。安装完成后,python -m sglang.launch_server即应可用。
使用现成的 AutoDL 环境镜像(可选)
考虑到部分同学在配置环境时可能会遇到编译依赖、算子版本不匹配等问题,项目团队已在 AutoDL 平台准备了 Qwen3 在昇腾设备上运行 SGLang 的环境镜像,直接在平台上创建 AutoDL 示例(镜像名对应 self-llm-sglang-ascend)即可跳过上述全部手工编译步骤。
模型下载
使用 ModelScope 的snapshot_download函数下载模型。新建model_download.py文件并输入以下内容,粘贴代码后记得保存文件:
from modelscope import snapshot_download model_dir = snapshot_download('Qwen/Qwen3-8B', cache_dir='/root/autodl-tmp', revision='master')然后在终端中执行下载:
python model_download.py这里需要耐心等待一段时间直到模型下载完成。
注意:记得修改
cache_dir为你的模型下载路径哦~
创建兼容 OpenAI API 接口的服务器
Qwen3-8B兼容OpenAI API协议,所以我们可以直接使用sglang-ascend在昇腾服务器上创建OpenAI API服务器接口。
在创建服务器时,我们可以指定模型名称、模型路径、聊天模板等参数,核心参数含义如下:
| 参数 | 说明 |
|---|---|
--host与--port | 指定服务监听地址与端口 |
--model-path | 指定本地模型路径 |
--attention-backend | 指定底层注意力计算使用的硬件后端,昇腾设备上应设置为ascend |
启动命令如下:
python3 -m sglang.launch_server --model-path autodl-tmp/Qwen/Qwen3-8B --attention-backend ascend --host 0.0.0.0 --port 30000说明:
--model-path需要替换为你的实际模型下载路径(与前面cache_dir保持一致);如果你需要对外暴露自定义模型名或调整最大上下文长度,还可以进一步使用--served-model-name、--max-model-len等 SGLang 服务端参数,具体以对应 SGLang 版本官方参数说明为准。
等待模型权重加载与引擎初始化完成后,终端出现 Uvicorn 服务监听日志,即表示启动成功:
从上图日志可以看到几个关键信息:SGLang 引擎在昇腾 NPU 上完成了初始化(图中context_len=40960表明默认上下文长度配置为 40960,Uvicorn running on http://0.0.0.0:30000表明服务已监听 30000 端口),随后GET /v1/models返回200 OK,说明 OpenAI 兼容接口已可访问。日志中偶发的torch_npu/ NumPy 可写性相关 WARNING 属于昇腾动态图优化场景下的常规提示,不影响服务正常运行。
验证 OpenAI 兼容接口
通过 curl 查看当前模型列表
curl http://localhost:30000/v1/models得到的返回值如下所示:
{ "object": "list", "data": [ { "id": "autodl-tmp/Qwen/Qwen3-8B", "object": "model", "created": 1768025296, "owned_by": "sglang", "root": "autodl-tmp/Qwen/Qwen3-8B", "max_model_len": 40960 } ] }返回值中id与root对应启动服务器时传入的--model-path,max_model_len为 40960,与启动日志中的context_len一致。
使用 curl 测试 OpenAI Chat Completions API
curl http://localhost:30000/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "Qwen3-8B", "messages": [{"role": "user", "content": "你好!"}] }'得到的返回值如下所示:
{ "id": "556383264b9247c7a43369c6a82c2b29", "object": "chat.completion", "created": 1768025567, "model": "Qwen3-8B", "choices": [ { "index": 0, "message": { "role": "assistant", "content": "<think>\n好的,用户打招呼说"你好!",我需要友好回应。首先,要保持自然,用中文回应。然后,可以询问用户今天过得怎么样,或者有什么可以帮助的。这样既亲切又专业。还要注意语气要温暖,避免太过机械。可能需要根据用户的后续问题调整回答,但当前只需要一个合适的开场白。确保没有使用任何Markdown格式,保持口语化。\n</think>\n\n你好!今天过得怎么样呀?有什么我可以帮你的吗?😊", "reasoning_content": null, "tool_calls": null }, "logprobs": null, "finish_reason": "stop", "matched_stop": 151645 } ], "usage": { "prompt_tokens": 10, "total_tokens": 111, "completion_tokens": 101, "prompt_tokens_details": null, "reasoning_tokens": 0 } }可以看到返回的content中包含了以<think>与</think>包裹的思考过程以及最终答案——Qwen3 默认启用思考能力,这与仓库中 vLLM-ascend 部署文档(02-Qwen3-8B-vLLM-ascend部署调用.md)里关于enable_thinking的说明一致。usage字段则给出了 prompt / completion / total tokens 的统计,便于做计费与压测分析。
使用 Python 脚本请求 OpenAI Chat Completions API
新建sglang_openai_completions.py文件,通过openaiPython SDK 调用:
# sglang_openai_completions.py from openai import OpenAI client = OpenAI( base_url="http://localhost:3000/v1", api_key="sk-xxx", # 随便填写,只是为了通过接口参数校验 ) completion = client.chat.completions.create( model="Qwen3-8B", messages=[ {"role": "user", "content": "你好\n"} ] ) print(completion.choices[0].message)运行脚本:
python sglang_openai_completions.py脚本执行结果如下:
注意:
base_url中的端口号需要与启动服务器时--port参数保持一致(本示例服务器监听 30000 端口),并确保模型名与--model-path或--served-model-name配置一致。api_key仅为通过接口参数校验,可随意填写。
部署原理与源码级细节
--attention-backend ascend与 sgl-kernel-npu 的关系
--attention-backend用于切换 SGLang 的 Attention 算子后端。在昇腾设备上指定ascend后,SGLang 会将注意力计算调度到昇腾后端实现上——从安装流程可以推断,其底层算子正是由前面build.sh编译安装的sgl_kernel_npu提供。因此必须先完成 sgl-kernel-npu 的编译安装,再启动launch_server,否则ascend后端会因缺少内核库而无法工作。
deep_ep 与 sgl_kernel_npu 两个 wheel 的分工
从安装命令pip install output/deep_ep*.whl output/sgl_kernel_npu*.whl可以看出,sgl-kernel-npu 仓库的构建产物包含两个独立包:sgl_kernel_npu负责昇腾算子内核加速,deep_ep面向大模型专家并行(Expert Parallelism)场景的跨卡通信优化。Qwen3-8B 为稠密(Dense)架构模型,单卡部署时主要依赖前者;若后续在昇腾上部署 MoE 架构模型(例如仓库中同样收录的 Qwen3-30B-A3B 微调案例),则deep_ep将发挥关键作用。
与 MindIE、vLLM-ascend 方案的对照
昇腾平台上三种部署方案的接口体验是等价的,均对外暴露 OpenAI 兼容 API:
- MindIE:昇腾官方推理引擎,需要修改 MindIE 部署文档 中提到的
conf/config.json服务化配置,随后./bin/mindieservice_daemon启动; - vLLM-ascend:一条
vllm serve <模型路径> --served-model-name Qwen3-8B --max_model_len 8192命令即可完成部署; - SGLang + sglang-ascend:本文方案,通过
python3 -m sglang.launch_server --attention-backend ascend启动,适合已经使用 SGLang 生态、或需要其更细粒度调度控制的团队。
三者在请求侧完全兼容,业务代码无需针对引擎做任何修改。
性能调优与排障提示
根据 support_model_Ascend.md 的通用指南,服务上线后可从以下方向做性能优化:
- CPU 与内存优化:开启 CPU 高性能模式(
cpupower -c all frequency-set -g performance)可在大模型推理场景下获得约 3% 的 TPS 提升;开启透明大页(echo always > /sys/kernel/mm/transparent_hugepage/enabled)可让多次实验的吞吐率结果更稳定; - 框架加速:在支持的硬件上使用对应加速框架(如 MindIE、vllm-ascend、SGLang-ascend)是昇腾大模型推理的基础加速手段;
- 模型量化:可借助昇腾模型压缩工具对模型进行 W8A8 等量化,在保证精度的前提下减少显存占用并提升推理速度。
常见问题排查:
- NPU 设备无法识别:使用
npu-smi info检查驱动是否正常加载,确认芯片属于 A2 / A3 系列; launch_server启动报错:优先检查 sgl-kernel-npu 是否编译安装成功、CANN 环境变量是否已source;- Python 脚本请求失败:核对
base_url端口、模型名是否与服务器实际配置一致。
参考与延伸阅读
- 本文档原始出处:models_ascend/qwen3/03-Qwen3-8B-sglang-ascend部署调用.md
- 同一模型的另两种昇腾部署方案:MindIE 部署、vLLM-ascend 部署
- 昇腾 NPU 平台支持的模型列表与硬件环境说明:support_model_Ascend.md
- 环境搭建细节可进一步参考昇腾开源社区"快速安装昇腾环境"、昇腾社区 CANN 安装文档,以及 SGLang 官方"支持 NPU 的安装指南"(本文为 Ubuntu 22.04 + CANN 8.2.RC1 组合的验证记录,其他 CANN/驱动组合请以官方文档为准)。
【免费下载链接】self-llm《开源大模型食用指南》针对中国宝宝量身打造的基于Linux环境快速微调(全参数/Lora)、部署国内外开源大模型(LLM)/多模态大模型(MLLM)教程项目地址: https://gitcode.com/GitHub_Trending/se/self-llm
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考