self-llm 如何用 vLLM-ascend 在昇腾 NPU 上部署 Qwen3.6-35B-A3B 并验证服务
【免费下载链接】self-llm《开源大模型食用指南》针对中国宝宝量身打造的基于Linux环境快速微调(全参数/Lora)、部署国内外开源大模型(LLM)/多模态大模型(MLLM)教程项目地址: https://gitcode.com/GitHub_Trending/se/self-llm
在《开源大模型食用指南》(self-llm)中,vllm-ascend是 vLLM 社区支持昇腾后端的推荐方式:它是一个社区维护的后端插件,通过解耦的方式让 vLLM 跑在 Ascend NPU 上,覆盖 Transformer、混合专家(MoE)等主流模型结构。Qwen3.6-35B-A3B 属于 MoE 模型,本文按仓库中 Qwen3.6-35B-A3B vLLM-ascend 部署调用 的实际操作路径,完成从环境安装、模型下载,到启动兼容 OpenAI API 的服务并用多个接口验证的完整流程。适用对象是自有机型的裸金属/物理机,或使用 AutoDL 等云平台的昇腾设备。
确认硬件与基础环境
先确认你的 NPU 芯片在支持范围内。目前教程支持A2 系列(Atlas 800I A2、Atlas 800T A2、Atlas 300I A2 等,对应昇腾 910B1/910B2/910B3/910B4/910B4-1)和A3 系列(Atlas 800I A3、Atlas 800T A3 等,对应昇腾 910C),具体型号对照见 Ascend NPU 平台支持模型列表。
本文教程的基础环境为:
---------------- ubuntu 22.04 NPU驱动 25.2.0 python 3.10 cann 8.5.1 torch 2.9.0 torch-npu 2.9.0 ----------------文档默认这套 PyTorch (CANN) 环境已配置完成,未配置的先自行安装。按通用指南的说明,Ascend 环境还需要:最低 128GB 内存(推荐 256GB+)、至少 50GB 可用存储空间,且容器/环境内可以正常访问 NPU 设备。
用下面命令检查 NPU 是否被正确识别:
# 检查 NPU 设备状态 npu-smi info能列出设备信息即说明驱动与设备识别正常,可进入下一步。
安装 vLLM 与 vllm-ascend
裸金属服务器或物理机通过 docker pull 获取设备对应镜像(A2 与 A3 使用不同 tag,AutoDL 用户跳过此步):
# A2系列产品 docker pull quay.io/ascend/vllm-ascend:v0.18.0rc1 # A3系列产品 docker pull quay.io/ascend/vllm-ascend:v0.18.0rc1-a3然后在环境中安装依赖包。注意 vLLM 与插件的版本是教程验证过的固定组合(vLLM 0.18.0 + vllm-ascend 0.18.0rc1),不要随意改动:
python -m pip install --upgrade pip pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple pip install modelscope # Install vllm-project/vllm. The newest supported version is v0.18.0. pip install vllm==0.18.0 # Install vllm-project/vllm-ascend from pypi. pip install vllm-ascend==0.18.0rc1可选分支:如果配置环境遇到问题,项目在 AutoDL 平台准备了 Qwen3.5/3.6 在昇腾设备运行的环境镜像,创建实例时镜像版本选择 v0.18.0 即可,链接见上述仓库文档。
下载 Qwen3.6-35B-A3B 模型
使用 modelscope 的snapshot_download下载模型,第一个参数是模型名称,cache_dir指定下载路径。新建model_download.py:
from modelscope import snapshot_download model_dir = snapshot_download('Qwen/Qwen3.6-35B-A3B', cache_dir='/root/autodl-tmp', revision='master')终端执行python model_download.py,等待下载完成。/root/autodl-tmp是 AutoDL 的路径示例,换成你自己的存储目录即可,后续启动命令里的模型路径也要与这里一致。
启动兼容 OpenAI API 的服务
vLLM搭配vllm-ascend可以创建兼容OpenAI API协议的昇腾服务:默认在http://localhost:8000启动,一次托管一个模型,提供列表模型、completions和chat completions端点。completions面向基本文本生成,chat completions面向对话场景。
复制以下命令到终端启动服务:
VLLM_USE_MODELSCOPE=true vllm serve /root/autodl-tmp/Qwen/Qwen3.6-35B-A3B --served-model-name Qwen3.6-35B-A3B --max_model_len 8192参数说明(文档中列出的可指定项):
--host和--port:指定地址;--model:指定模型名称;--chat-template:指定聊天模板;--served-model-name:指定对外服务模型的名称,这里为Qwen3.6-35B-A3B;--max_model_len:模型可处理的最大输入输出长度之和,这里为 8192;- 环境变量
VLLM_USE_MODELSCOPE=true:模型自动下载时指定使用 modelscope,否则从 HuggingFace 下载。
模型加载完毕后,终端出现服务启动成功的信息即表示服务就绪:
验证服务
1. 查看模型列表
curl http://localhost:8000/v1/models文档示例返回值(关键字段):
{ "object": "list", "data": [ { "id": "Qwen3.6-35B-A3B", "object": "model", "owned_by": "vllm", "root": "/root/autodl-tmp/Qwen/Qwen3.6-35B-A3B", "max_model_len": 8192 } ] }id与--served-model-name一致、max_model_len为 8192,说明服务按配置加载了模型。
2. 测试 Completions API
curl http://localhost:8000/v1/completions \ -H "Content-Type: application/json" \ -d '{ "model": "Qwen3.6-35B-A3B", "prompt": "我想问你,5的阶乘是多少?", "max_tokens": 1024, "temperature": 0 }'文档示例返回(响应正文有删节):choices[0].text包含模型生成的思考过程与最终答案,finish_reason为"stop",usage中给出prompt_tokens/completion_tokens/total_tokens统计,例如文档示例中total_tokens: 850。
3. 测试 Chat Completions API
curl http://localhost:8000/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "Qwen3.6-35B-A3B", "messages": [ {"role": "user", "content": "我想问你,5的阶乘是多少?"} ] }'文档示例返回:choices[0].message的role为assistant,content是模型回答,finish_reason为"stop",并附带 token 用量统计。
也可以直接用 OpenAI Python 客户端请求,api_key按文档说明随便填写即可(仅用于通过接口参数校验):
# vllm_openai_chat_completions.py from openai import OpenAI openai_api_key = "sk-xxx" # 随便填写,只是为了通过接口参数校验 openai_api_base = "http://localhost:8000/v1" client = OpenAI( api_key=openai_api_key, base_url=openai_api_base, ) chat_outputs = client.chat.completions.create( model="Qwen3.6-35B-A3B", messages=[ {"role": "user", "content": "什么是深度学习?"}, ] ) print(chat_outputs)python vllm_openai_chat_completions.py返回一个ChatCompletion对象,choices[0].message.content即模型回答,finish_reason为stop。
4. 观察后端日志
在以上请求处理过程中,API 后端会打印对应的日志和统计信息:
边界与限制
- 硬件仅支持 Atlas A2(昇腾 910B 系列)与 A3(昇腾 910C 系列),其他芯片不在本教程验证范围内;
- 教程环境固定为 ubuntu 22.04 + NPU 驱动 25.2.0 + cann 8.5.1 + torch 2.9.0/torch-npu 2.9.0,vLLM 与 vllm-ascend 版本组合为 0.18.0 / 0.18.0rc1,与其他组合的兼容性未在文档中验证;
- 服务默认端口为 8000 且一次只托管一个模型,
--served-model-name要与请求中的model字段保持一致,否则接口无法匹配到模型; - 模型路径示例基于 AutoDL 的
/root/autodl-tmp,裸金属部署时下载路径与vllm serve后的路径需自行保持一致。
完成上述验证后,该服务即可作为 OpenAI 兼容后端接入你的应用。仓库中 Ascend NPU 支持列表 还收录了 Qwen3-8B 的 vLLM-ascend 等更多模型的昇腾部署教程,可作对照参考。
【免费下载链接】self-llm《开源大模型食用指南》针对中国宝宝量身打造的基于Linux环境快速微调(全参数/Lora)、部署国内外开源大模型(LLM)/多模态大模型(MLLM)教程项目地址: https://gitcode.com/GitHub_Trending/se/self-llm
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考