Qwen3-VL在华为昇腾 NPU 910B4 vLLM-Ascend完整部署指南

Qwen3-VL在华为昇腾 NPU 910B4 vLLM-Ascend完整部署指南

本文档详细说明如何在华为昇腾 NPU (910B4) 上部署和运行 Qwen3-VL-8B-Instruct 多模态大语言模型,基于 vLLM Ascend 推理框架。

目录

  1. 系统环境
  2. 前置要求
  3. 第一步:安装 CANN 环境
  4. 第二步:拉取 vLLM Ascend 镜像
  5. 第三步:创建自定义 Dockerfile
  6. 第四步:构建自定义镜像
  7. 第五步:运行容器
  8. 第六步:验证部署
  9. 故障排查

系统环境

组件版本/型号
操作系统Linux 22.03 (openEuler)
架构ARM64 (aarch64)
NPU 硬件910B4 (davinci2 和 davinci5 两张卡)
Docker已安装
驱动固件24.1.rc3
CANN 版本8.3.RC1 (必须)

前置要求

必要条件

  1. NPU 驱动和固件已正确安装
    # 查看驱动和固件版本npu-smi info


2.CANN 环境(见下一步安装)

# 查看 CANN 是否已安装ls-la /usr/local/Ascend/

  1. Docker 已安装并可用
    dockerversiondockerps

  1. 模型文件已下载
    • 模型位置:/root/qwen3vl/models/Qwen3-VL-8B-Instruct/
    • 模型大小: 约 17GB

第一步:安装 CANN 环境

CANN (Compute Architecture for Neural Networks) 是华为昇腾的计算架构,包含驱动库、运行时和工具。

1.1 检查当前 CANN 版本

# 查看已安装的 CANN 版本ls-la /usr/local/Ascend/echo"=== Toolkit ==="&&\ls-d /usr/local/Ascend/ascend-toolkit/*/&&\echo""&&\echo"=== NNAL ==="&&\ls-d /usr/local/Ascend/nnal/atb/*/

1.2 安装 CANN 8.3.RC1(如果未安装)

# 1. 添加 yum 仓库yum-config-manager --add-repo https://repo.huaweicloud.com/ascend/ascend_install# 2. 安装 CANN Toolkityuminstall-y Ascend-cann-toolkit-8.3.RC1# 3. 安装 NNRT (运行时库)yuminstall-y Ascend-cann-nnrt-8.3.RC1# 4. 安装 NNAL (神经网络抽象层)yuminstall-y Ascend-cann-nnal-8.3.RC1

建议去 昇腾软件官方下载根据自己的服务器类型和HDK版本下载对应的驱动。


1.3 配置环境变量

# 加载环境变量source/usr/local/Ascend/ascend-toolkit/set_env.shsource/usr/local/Ascend/nnal/atb/set_env.sh# 验证安装echo$ASCEND_TOOLKIT_HOMEecho$LD_LIBRARY_PATH|grep-i ascend

1.4 永久化环境变量(可选)

添加到/root/.bashrc:

cat>>/root/.bashrc<<'EOF' # Ascend environment source /usr/local/Ascend/ascend-toolkit/set_env.sh source /usr/local/Ascend/nnal/atb/set_env.sh EOFsource/root/.bashrc

第二步:拉取 vLLM Ascend 镜像

vLLM Ascend 是华为昇腾官方提供的优化版本,内置了对 NPU 的完整支持。

2.1 从 Quay.io 拉取镜像

# 拉取最新的 vLLM Ascend v0.11.0rc1dockerpull quay.io/ascend/vllm-ascend:v0.11.0rc1# 验证镜像dockerimages|grepquay.io/ascend/vllm-ascend

2.2 镜像信息

属性
完整 URIquay.io/ascend/vllm-ascend:v0.11.0rc1
大小约 16.3 GB
架构arm64/linux
包含内容vLLM 0.11.0, NNAL 8.3.RC1, torch_npu 2.7.1
官方仓库https://quay.io/repository/ascend/vllm-ascend

2.3 其他版本

# 拉取 v0.10.1rc1 版本dockerpull quay.io/ascend/vllm-ascend:v0.10.1rc1# 从华为云镜像源拉取(国内加速)dockerpull swr.cn-south-1.myhuaweicloud.com/ascendhub/vllm-ascend:v0.11.0rc1

第三步:创建自定义 Dockerfile

自定义 Dockerfile 基于官方镜像,添加以下功能:

  • 创建HwHiAiUser(UID 981) 和hisi组 (GID 1000),与 NPU 设备文件权限匹配
  • 配置环境脚本/etc/profile.d/ascend-env.sh
  • 优化容器启动配置

3.1 Dockerfile 内容

创建/root/qwen3vl/Dockerfile:

FROM quay.io/ascend/vllm-ascend:v0.11.0rc1 USER root # 创建 hisi 组 (GID 1000) RUN groupadd -g 1000 hisi 2>/dev/null || true # 创建 HwHiAiUser (UID 981),加入 hisi 组 RUN useradd -d /home/HwHiAiUser -m -u 981 -g 1000 -s /bin/bash HwHiAiUser 2>/dev/null || true # 设置主目录权限 RUN chmod 750 /home/HwHiAiUser # 配置环境脚本 RUN mkdir -p /etc/profile.d && \ echo '#!/bin/bash' > /etc/profile.d/ascend-env.sh && \ echo 'source /usr/local/Ascend/ascend-toolkit/set_env.sh' >> /etc/profile.d/ascend-env.sh && \ echo 'source /usr/local/Ascend/nnal/atb/set_env.sh' >> /etc/profile.d/ascend-env.sh && \ echo 'export LD_LIBRARY_PATH=/usr/local/Ascend/driver/lib64/driver:${LD_LIBRARY_PATH}' >> /etc/profile.d/ascend-env.sh && \ chmod +x /etc/profile.d/ascend-env.sh # 验证用户和组 RUN grep HwHiAiUser /etc/passwd && grep hisi /etc/group USER root ENTRYPOINT [] CMD ["/bin/bash", "-c", "tail -f /dev/null"]

第四步:构建自定义镜像

4.1 构建镜像

cd/root/qwen3vl# 构建镜像,标记为 latestdockerbuild -t qwen3-vl-custom:latest.# 验证构建结果dockerimages|grepqwen3-vl-custom

4.2 构建输出示例

Sending build context to Docker daemon 40.61GB Step 1/10 : FROM quay.io/ascend/vllm-ascend:v0.11.0rc1 ---> 49bc5b2c530a Step 2/10 : USER root ---> Using cache ... Successfully built cba5d4f9b4b1 Successfully tagged qwen3-vl-custom:latest

第五步:运行容器

5.1 使用启动脚本(推荐)

# 直接运行启动脚本bashdocker_run_start.sh# 脚本会自动:# 1. 停止并删除旧容器# 2. 启动新容器,挂载所有必要的设备和路径# 3. 启动 vLLM 服务# 4. 等待 30 秒让模型加载# 5. 检查 API 可用性

5.2 启动脚本内容参考

编写脚本docker_run_start.sh

关键参数:

  • 容器名:qwen3-vl
  • 镜像:qwen3-vl-custom:latest
  • 设备挂载:
    • /dev/davinci2- NPU 2
    • /dev/davinci5- NPU 5
    • /dev/davinci_manager- NPU 管理设备
    • /dev/devmm_svm- 内存虚拟化设备
    • /dev/hisi_hdc- 硬件诊断通道
  • 路径挂载:
    • /usr/local/dcmi- DCM 接口库
    • /usr/local/bin/npu-smi- NPU 状态工具
    • /usr/local/Ascend/driver/lib64- 驱动库
    • /usr/local/Ascend/nnrt- 运行时库
    • /etc/ascend_install.info- 安装配置
    • /root/qwen3vl/models:/root/models- 模型文件
  • 端口:20240:8000(API 端口映射)
  • vLLM 启动参数:
    • --model /root/models/Qwen3-VL-8B-Instruct
    • --port 8000 --host 0.0.0.0
    • --gpu-memory-utilization 0.9- 显存利用率 90%
    • --max-model-len 32768- 最大序列长度
    • --dtype float16- 半精度浮点
    • --trust-remote-code- 信任远程代码

5.3 手动启动容器(如需自定义)

# 第1步:启动容器保活dockerrun -dit\--name qwen3-vl\--device=/dev/davinci2\--device=/dev/davinci5\--device=/dev/davinci_manager\--device=/dev/devmm_svm\--device=/dev/hisi_hdc\-v /usr/local/dcmi:/usr/local/dcmi\-v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi\-v /usr/local/Ascend/driver/lib64:/usr/local/Ascend/driver/lib64\-v /usr/local/Ascend/driver/tools:/usr/local/Ascend/driver/tools\-v /usr/local/Ascend/driver/version.info:/usr/local/Ascend/driver/version.info\-v /usr/local/Ascend/nnrt:/usr/local/Ascend/nnrt\-v /etc/ascend_install.info:/etc/ascend_install.info\-v /root/qwen3vl/models:/root/models\-p20240:8000\qwen3-vl-custom:latest\tail-f /dev/null# 第2步:进入容器启动 vLLMdockerexec-it qwen3-vlbash-c" source /etc/profile.d/ascend-env.sh python -m vllm.entrypoints.openai.api_server \ --model /root/models/Qwen3-VL-8B-Instruct \ --port 8000 \ --host 0.0.0.0 \ --gpu-memory-utilization 0.9 \ --max-model-len 32768 \ --dtype float16 \ --trust-remote-code "

第六步:验证部署

6.1 检查容器状态

# 查看容器是否运行dockerps|grepqwen3-vl# 查看容器日志dockerlogs qwen3-vl# 查看容器内 vLLM 进程dockerexecqwen3-vlpsaux|grepvllm

6.2 检查 NPU 显存占用

# 查看 NPU 状态npu-smi info# 预期输出应显示:# - NPU 2: ~23GB 显存被 vLLM 占用(加载了 17GB 模型)# - NPU 5: 空闲 (可用于其他任务)

6.3 测试 API

# 测试模型列表接口curl-s http://localhost:20240/v1/models|python -m json.tool# 预期返回:# {# "object": "list",# "data": [# {# "id": "/root/models/Qwen3-VL-8B-Instruct",# "object": "model",# "created": ...,# "max_model_len": 32768,# ...# }# ]# }

6.4 测试推理

# 发送对话请求curl-s http://localhost:20240/v1/chat/completions\-H"Content-Type: application/json"\-d'{ "model": "/root/models/Qwen3-VL-8B-Instruct", "messages": [ {"role": "user", "content": "你好,请自我介绍一下"} ], "max_tokens": 150, "temperature": 0.7 }'|python -m json.tool# 预期返回:模型的中文自我介绍


故障排查

问题 1:CANN 版本冲突

症状:RuntimeError: ExchangeDevice:... error code is 507033

原因: 容器内 CANN 版本与宿主机不匹配

解决方案:

# 确保宿主机和容器都使用 8.3.RC1# 升级宿主机 CANNyum upgrade -y Ascend-cann-*-8.3.RC1

问题 2:vllm._C 模块找不到

症状:ModuleNotFoundError: No module named 'vllm._C'

原因: 使用了编译不完整的 vllm 包,应使用 vllm-ascend

解决方案:

# 在容器内查看安装的 vLLM 版本dockerexecqwen3-vl pip list|grepvllm# 确保使用 vllm-ascend 而不是 vllm# 若不对,需要重建镜像

问题 3:显存不足

症状:KV cache memory is larger than available

原因: 模型序列长度太长,超过单卡显存

解决方案:

# 减少 max-model-len 参数--max-model-len16384# 改为 16384 或更小# 或降低 gpu-memory-utilization--gpu-memory-utilization0.85

问题 4:NPU 设备权限错误

症状:Permission denied访问 /dev/davinci*

原因: 容器内用户权限不匹配

解决方案:

# 确保 Dockerfile 中创建了正确的用户# HwHiAiUser (UID 981), hisi 组 (GID 1000)dockerexecqwen3-vlgrepHwHiAiUser /etc/passwddockerexecqwen3-vlgrephisi /etc/group

问题 5:8000 端口未监听

症状:Connection refused连接 API

原因: vLLM 还在启动或已崩溃

解决方案:

# 检查 vLLM 进程是否运行dockerexecqwen3-vlpsaux|grepvllm# 查看进程详情dockerexecqwen3-vlpsaux|grep"vllm.entrypoints"# 等待更长时间(模型加载可能需要 2-5 分钟)sleep300

问题 6:模型文件路径错误

症状:FileNotFoundError: /root/models/... not found

原因: 模型文件未正确挂载或不存在

解决方案:

# 验证模型文件存在ls-la /root/qwen3vl/models/Qwen3-VL-8B-Instruct/# 验证容器内的挂载dockerexecqwen3-vlls-la /root/models/Qwen3-VL-8B-Instruct/# 确保启动脚本中的挂载正确# -v /root/qwen3vl/models:/root/models

完整部署流程总结

# 1. 安装 CANN 环境yuminstall-y Ascend-cann-toolkit-8.3.RC1 Ascend-cann-nnrt-8.3.RC1 Ascend-cann-nnal-8.3.RC1source/usr/local/Ascend/ascend-toolkit/set_env.sh# 2. 拉取 vLLM Ascend 镜像dockerpull quay.io/ascend/vllm-ascend:v0.11.0rc1# 3. 创建 Dockerfile (已在 /root/qwen3vl/Dockerfile)# 4. 构建自定义镜像cd/root/qwen3vldockerbuild -t qwen3-vl-custom:latest.# 5. 运行启动脚本bash/root/qwen3vl/docker_run_start.sh# 6. 验证 APIcurl-s http://localhost:20240/v1/models# 7. 测试推理curl-s http://localhost:20240/v1/chat/completions\-H"Content-Type: application/json"\-d'{...}'

API 使用示例

文本对话

curl-X POST http://localhost:20240/v1/chat/completions\-H"Content-Type: application/json"\-d'{ "model": "/root/models/Qwen3-VL-8B-Instruct", "messages": [ {"role": "user", "content": "解释一下机器学习"} ], "max_tokens": 200, "temperature": 0.7 }'

多轮对话

curl-X POST http://localhost:20240/v1/chat/completions\-H"Content-Type: application/json"\-d'{ "model": "/root/models/Qwen3-VL-8B-Instruct", "messages": [ {"role": "user", "content": "你是谁?"}, {"role": "assistant", "content": "我是通义千问..."}, {"role": "user", "content": "你能做什么?"} ], "max_tokens": 200 }'

性能指标

部署完成后的预期性能:

指标数值
模型大小17 GB
NPU 显存占用~23 GB (NPU 2)
推理延迟取决于输入长度
吞吐量取决于硬件配置
最大序列长度32,768 tokens
数据类型float16 (半精度)

参考资源

  • vLLM 官方文档: https://docs.vllm.ai/
  • Qwen3-VL 模型卡: https://huggingface.co/Qwen/Qwen3-VL-8B-Instruct
  • 华为昇腾 Ascend 官网: https://www.hiascend.com/
  • Quay.io vLLM Ascend 仓库: https://quay.io/repository/ascend/vllm-ascend

许可证和声明

  • Qwen3-VL 模型: 遵循阿里巴巴许可证
  • vLLM: Apache 2.0 License
  • 华为昇腾 CANN: 华为许可证

常用命令速查表

# 容器管理dockerps# 查看运行中的容器dockerstop qwen3-vl# 停止容器dockerstart qwen3-vl# 启动容器dockerrmqwen3-vl# 删除容器dockerlogs qwen3-vl# 查看日志dockerexec-it qwen3-vlbash# 进入容器# 镜像管理dockerimages# 查看镜像dockerbuild -t qwen3-vl-custom:latest.# 构建镜像dockerrmi qwen3-vl-custom:latest# 删除镜像dockerpull quay.io/ascend/vllm-ascend:v0.11.0rc1# 拉取镜像# NPU 管理npu-smi info# 查看 NPU 状态npu-smi query# 查询 NPU 信息# CANN 环境source/usr/local/Ascend/ascend-toolkit/set_env.shsource/usr/local/Ascend/nnal/atb/set_env.sh# API 测试curl-s http://localhost:20240/v1/modelscurl-s http://localhost:20240/v1/chat/completions -H"Content-Type: application/json"-d'{...}'

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1124295.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

cpolar实现linux内网穿透

安装cpolar工具 通过命令行下载并安装cpolar&#xff1a; curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash安装完成后&#xff0c;检查版本号以确认安装成功&#xff1a; cpolar version认证登录 登录cpolar官网&#xff08;https…

程序员必学:Multi-LoRA让大模型微调更高效(附代码)

本文详细介绍了Multi-LoRA&#xff08;低秩适配&#xff09;技术&#xff0c;通过低秩分解原理降低大模型微调的参数量和计算成本。文章从低秩分解的数学原理出发&#xff0c;结合MNIST手写体识别案例&#xff0c;展示了LoRA在模型微调中的应用实践&#xff0c;并分析了其优缺点…

动终端在轨道交通中的使用现状:技术融合与服务创新

目录 1. 研究背景与意义 1.1 轨道交通的数字化转型浪潮 1.2 移动终端的多重角色定位 2. 移动终端在乘客服务中的应用现状 2.1 支付方式的革命性变革 2.2 导航与信息服务的智能化升级 2.3 乘车体验的娱乐化与办公化转变 3. 移动终端在运营管理中的应用现状 3.1 5G专网支…

收藏!年底裁员潮下,传统程序员转型大模型的破局指南

这周部门突然传来裁员消息&#xff0c;HRBP接连找了好几位同事谈话&#xff0c;给出N1补偿后要求当周交接离职。不知不觉间&#xff0c;年底裁员好像成了行业里每年例行的“保留节目”。 如今传统开发岗位的“内卷”早已是公开的常态&#xff0c;不仅各大厂商裁员消息频发&…

ESP-IDF组件编译规则

简单来说就是esp-idf的构建系统会自动编译components &#xff08;名称固定&#xff09;文件夹下面的CMakeLists.txt&#xff0c;通过CMake将组件放到项目中&#xff0c;优先编译我们创建项目中的components 文件夹下的CMakeList.txt&#xff0c;然后在编译esp-idf架构中的comp…

学长亲荐2026专科生必用TOP10 AI论文写作软件测评

学长亲荐2026专科生必用TOP10 AI论文写作软件测评 2026专科生论文写作工具测评&#xff1a;为何需要一份精准推荐 随着人工智能技术的不断发展&#xff0c;AI论文写作软件逐渐成为高校学生&#xff0c;尤其是专科生群体提升写作效率的重要工具。然而&#xff0c;面对市场上琳琅…

如何在没有 iTunes 的情况下备份 iPhone

我可以在没有 iTunes 的情况下将 iPhone 备份到电脑吗&#xff1f;虽然 iTunes 曾经是备份 iPhone 的主要方法&#xff0c;但它并不是 iOS 用户唯一的备份选项。您可以选择多种方便的替代方案来备份 iPhone&#xff0c;无需使用 iTunes。您可以在这里获得更灵活、更人性化的备份…

智能终端在铁路客运服务中的应用现状与发展策略研究

目录 摘要 一、引言&#xff1a;铁路客运的智能化转型浪潮 1.1 背景与意义 1.2 研究范围与方法 二、智能终端在铁路客运服务中的应用现状 2.1 旅客服务领域的应用深化 &#xff08;1&#xff09;全流程无感出行体系 &#xff08;2&#xff09;个性化服务推送系统 &…

导师严选10个AI论文写作软件,专科生毕业论文必备!

导师严选10个AI论文写作软件&#xff0c;专科生毕业论文必备&#xff01; AI工具如何助力论文写作&#xff1f;专科生必看的实用指南 在当前学术写作日益数字化的背景下&#xff0c;AI工具正逐渐成为学生和研究者不可或缺的助手。尤其是对于专科生而言&#xff0c;撰写毕业论文…

基于stm32单片机的地铁售票系统设计(有完整资料)

资料查找方式&#xff1a;特纳斯电子&#xff08;电子校园网&#xff09;&#xff1a;搜索下面编号即可编号&#xff1a;T3062405M设计简介&#xff1a;本设计是基于STM32的地铁售票系统&#xff0c;主要实现以下功能&#xff1a;1.可通过按键选择票种&#xff0c;不同票种价格…

电脑开关机慢?,混合睡眠命令

文件名&#xff1a;mixed_sleep.bat命令行&#xff1a;rundll32.exe powrprof.dll,SetSuspendState 0,1,0进入控制面板→硬件和声音→电源选项→更改计划设置→更改高级电源设置。在“睡眠”选项中找到“允许混合睡眠”&#xff0c;根据需要选择“启用”或“禁用”。笔记本的睡…

雅思套招小Tips(未完待续)

以下是雅思口语中常见场景的应对思路、精准用词及例句&#xff0c;涵盖高频话题&#xff0c;注重场景全面性和表达准确性&#xff1a;一、家乡&#xff08;Hometown&#xff09;常见问题&#xff1a;Where is your hometown?What’s special about your hometown?Do you like…

基于单片机的自动迎宾门的设计

2 基于单片机的自动迎宾门控制系统总体方案设计 2.1 设计的基本思路 (1)在人靠近自动迎宾门(开门或关门)时&#xff0c;安装在门上的热释电红外线感应器在监控范围之内检测到人体的活动&#xff0c;然后由单片机控制电机来开启车门。 (2)当无人接近时&#xff0c;关闭时间为1秒…

2026年最新爆火!9款AI写论文神器实测,知网查重一把过且不留AIGC痕迹

深夜警报&#xff01; 距离你的论文DDL&#xff08;截止日期&#xff09;还有不到72小时&#xff1f;导师的修改意见让你无从下手&#xff1f;知网查重率和AIGC痕迹检测像两座大山压得你喘不过气&#xff1f;别慌&#xff01;2026届毕业生最后的“救命稻草”已经出现。这篇测评…

基于nb-iot的智能井盖安防与在线监测系统(有完整资料)

资料查找方式&#xff1a;特纳斯电子&#xff08;电子校园网&#xff09;&#xff1a;搜索下面编号即可编号&#xff1a;T3112405M设计简介&#xff1a;本设计是基于STM32的智能井盖安防与在线监测系统&#xff0c;主要实现以下功能&#xff1a;1.通过温湿度传感器采集温度 2.通…

太具象了,这就是人们一直所说的中原地区!

从地图上看&#xff0c;中原地区位于西安、北京和南京连线所构成的中间区域。 西安距北京直线距离900公里&#xff0c;距南京950公里&#xff0c;南京距北京900公里&#xff0c;几乎构了一个等边三角形。 而中原所在位置&#xff0c;刚好在三个古都连线的中间区域&#xff0c…

想入行网络安全?这篇入门指南,帮你避开90%的坑

网络安全入门全攻略&#xff1a;零基础也能快速上手&#xff0c;建议收藏 网络安全行业人才缺口大&#xff0c;新手可快速入门。建议先建立"安全思维"&#xff0c;不必一开始就敲复杂代码。有两个核心方向&#xff1a;合规与安全运维&#xff08;适合技术敏感度一般…

监控视角工地建筑施工工程车辆检测数据集VOC+YOLO格式8345张10类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件)图片数量(jpg文件个数)&#xff1a;8435标注数量(xml文件个数)&#xff1a;8435标注数量(txt文件个数)&#xff1a;8435标注类别…

基于ESP8266的四足机器人的设计

第二章 四足机器人的实现原理及硬件设计 2.1 四足机器人的相关技术分析 2.1.1需求分析 本设计要求采用ESP8266串口WiFi模块进行指令编译和接收&#xff0c;要求通信模块与网络模块连接成功&#xff0c;机器人才能接收命令指令&#xff0c;经过MCU处理&#xff0c;再通过PWM Ser…

AI产学研一体化平台:让硬核技术不再“纸上谈兵”

提到AI&#xff0c;很多人想到的是实验室里的论文、复杂的公式&#xff0c;或是企业里“用不上、用不好”的尴尬——高校的前沿技术躺在硬盘里&#xff0c;企业急需的解决方案找不到门路&#xff0c;学生学的AI知识和产业实际脱节。而AI产学研一体化平台&#xff0c;就是解决这…