news 2026/4/14 23:02:54

昇腾910B部署DeepSeek-Qwen32B大模型

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
昇腾910B部署DeepSeek-Qwen32B大模型

昇腾910B部署DeepSeek-Qwen32B大模型

在国产AI基础设施加速落地的今天,如何高效部署千亿参数级大模型已成为企业构建自主可控智能系统的关键挑战。尤其是在信创环境下,既要保证性能接近国际主流水平,又要实现软硬件深度协同优化——这正是昇腾910B与vLLM结合所要解决的核心问题。

本文将带你完整走通一条基于华为昇腾910B NPU卡、使用vLLM推理引擎部署DeepSeek-Qwen-32B大模型的技术路径。整个过程不依赖X86架构或英伟达GPU,完全运行于鲲鹏+昇腾的纯国产化技术栈之上,适用于对高并发、低延迟有严苛要求的企业级生产场景。

⚠️ 重要前提:
- 系统已正确安装昇腾910B驱动及固件,并可通过npu-smi info查看四张NPU卡状态。
- 至少配备4张昇腾910B(单卡32GB显存),总计约128GB可用显存,满足32B模型加载需求。
- 操作环境为具备外网访问能力的ARM64服务器(推荐鲲鹏920平台 + OpenEuler 22.03 LTS)。


环境准备:从底层支撑到工具链齐备

部署前必须确认基础环境就绪。以下是我们实际使用的软硬件配置清单:

组件版本/型号
Docker版本24.0.9
算力卡昇腾910B ×4
CPU型号鲲鹏920
架构ARM64 (aarch64)
操作系统EulerOS 2.0 / OpenEuler 22.03 LTS

首先验证NPU设备是否正常识别:

npu-smi info

预期输出中应包含ID为0~3的四块NPU设备信息,且状态均为“Normal”。若未显示,请检查驱动安装和固件版本一致性。

同时确保docker已安装并可正常运行:

docker version

只有当主机层面的算力资源和容器运行时都准备妥当,才能进入下一步——拉取专为Ascend平台优化的高性能推理镜像。


获取vLLM Ascend优化镜像:让大模型真正“跑得快”

传统HuggingFace Transformers推理方式在处理长上下文和高并发请求时存在明显瓶颈。而vLLM通过引入PagedAttention技术,实现了KV Cache的分页管理与动态内存分配,显著提升了吞吐效率。据实测数据,在相同硬件条件下,其吞吐量可达原生方案的5–10倍

为了在昇腾平台上发挥这一优势,我们需要使用由社区维护的vLLM-Ascend专用镜像,它内置了对Ascend CANN栈的支持,以及针对DaVinci架构的算子融合与内存调度优化。

镜像地址:https://quay.io/repository/ascend/vllm-ascend
GitHub项目:https://github.com/vllm-project/vllm-ascend

由于目标平台是ARM64架构,务必指定平台参数进行拉取:

docker pull --platform=arm64 quay.io/ascend/vllm-ascend:v0.11.0rc0

拉取完成后记录镜像ID:

docker images | grep vllm-ascend

假设返回结果如下:

REPOSITORY TAG IMAGE ID CREATED SIZE quay.io/ascend/vllm-ascend v0.11.0rc0 f3e585186118 2 weeks ago 8.7GB

我们将以f3e585186118作为后续启动容器的基础镜像ID。


安装Ascend Docker Runtime:打通容器与NPU的“最后一公里”

标准Docker默认无法直接访问昇腾NPU设备。为此,华为提供了Ascend Docker Runtime插件,用于注册自定义运行时(runtime),使容器能够挂载/dev/davinci*等核心设备节点,并调用底层驱动库。

下载安装包:

👉 Ascend-docker-runtime_6.0.0.SPC1_linux-aarch64.run

执行安装:

chmod +x Ascend-docker-runtime_6.0.0.SPC1_linux-aarch64.run sudo ./Ascend-docker-runtime_6.0.0.SPC1_linux-aarch64.run

安装成功后会自动注册ascend-cl运行时至Docker。接着重启服务以生效配置:

sudo systemctl restart docker

此时可通过以下命令验证运行时是否存在:

docker info | grep -A 5 "Runtimes"

若输出中包含ascend-cl,说明环境已具备调用NPU的能力。


下载并组织模型权重:让数据“找得到、读得进”

DeepSeek-Qwen-32B 是深度求索发布的开源中文大模型,兼容Qwen系列指令格式,在多项中文任务上表现优异。该模型可在魔搭(ModelScope)平台免费获取。

📌 模型主页:https://www.modelscope.cn/models/deepseek-ai/DeepSeek-Qwen-32B/files

建议将模型完整目录下载至统一存储路径,例如:

/data/models/DeepSeek-Qwen-32B/

关键文件包括:

  • config.json
  • pytorch_model*.bin(多个分片)
  • tokenizer.model
  • generation_config.json

这些文件将在容器启动时通过-v参数挂载进/app/model目录,供vLLM加载使用。注意保持原始结构不变,避免因路径错乱导致加载失败。


启动模型服务:两种方式,一个目标

我们提供两种启动方式:docker run命令直启 和docker-compose编排启动。虽然前者适合快速验证,但后者更利于长期运维与故障恢复。

方式一:使用docker run手动启动(适合调试)

完整命令如下:

docker run --name deepseek-qwen32b-vllm \ --net=host \ --shm-size=500g \ --device /dev/davinci0 \ --device /dev/davinci1 \ --device /dev/davinci2 \ --device /dev/davinci3 \ --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/version.info:/usr/local/Ascend/driver/version.info \ -v /etc/ascend_install.info:/etc/ascend_install.info \ -v /root/.cache:/root/.cache \ -v /data/models/DeepSeek-Qwen-32B:/app/model \ --privileged=true \ -e ASCEND_RT_VISIBLE_DEVICES=0,1,2,3 \ -p 18489:18489 \ -itd f3e585186118 bash
关键参数解析
参数作用说明
--net=host使用主机网络模式,减少网络层开销,提升通信效率
--shm-size=500g设置共享内存大小,防止长序列推理时因共享内存不足导致OOM
--device /dev/davinci*将NPU设备直通给容器,实现硬件级加速
-v ... driver/lib64挂载驱动库和版本信息,确保容器内环境一致
-v /data/models/...:/app/model模型权重挂载点,vLLM默认从此路径加载模型
--privileged=true开启特权模式,允许容器操作底层设备
-e ASCEND_RT_VISIBLE_DEVICES=0,1,2,3指定可见NPU编号,用于多卡调度
-p 18489:18489映射API端口,对外提供OpenAI兼容接口

容器启动后进入内部并手动运行服务:

docker exec -it deepseek-qwen32b-vllm bash # 启动vLLM服务 vllm serve /app/model \ --port 18489 \ --dtype auto \ --kv-cache-dtype auto \ --max-model-len 65536 \ --tensor-parallel-size 4 \ --gpu-memory-utilization 0.90 \ --enable-prefix-caching

这种方式便于观察日志、调试参数,但在生产环境中缺乏自愈能力。


方式二:使用docker-compose启动(推荐用于生产)

创建docker-compose.yaml文件,内容如下:

version: '3.8' services: deepseek-qwen32b: container_name: deepseek-qwen32b-vllm image: f3e585186118 network_mode: host shm_size: 500g devices: - /dev/davinci0:/dev/davinci0 - /dev/davinci1:/dev/davinci1 - /dev/davinci2:/dev/davinci2 - /dev/davinci3:/dev/davinci3 - /dev/davinci_manager:/dev/davinci_manager - /dev/devmm_svm:/dev/devmm_svm - /dev/hisi_hdc:/dev/hisi_hdc volumes: - /usr/local/dcmi:/usr/local/dcmi - /usr/local/bin/npu-smi:/usr/local/bin/npu-smi - /usr/local/Ascend/driver/lib64/:/usr/local/Ascend/driver/lib64/ - /usr/local/Ascend/driver/version.info:/usr/local/Ascend/driver/version.info - /etc/ascend_install.info:/etc/ascend_install.info - /root/.cache:/root/.cache - /data/models/DeepSeek-Qwen-32B:/app/model privileged: true environment: - ASCEND_RT_VISIBLE_DEVICES=0,1,2,3 ports: - "18489:18489" restart: unless-stopped command: > vllm serve /app/model --port 18489 --dtype auto --kv-cache-dtype auto --max-model-len 65536 --tensor-parallel-size 4 --gpu-memory-utilization 0.90 --enable-prefix-caching --uvicorn-log-level warning
核心配置说明
  • --tensor-parallel-size=4:启用4卡张量并行,将模型权重切分到每张NPU上并行计算,最大化利用算力。
  • --max-model-len=65536:支持最长64K token输入,适用于法律文书分析、代码生成等长文本场景。
  • --gpu-memory-utilization=0.90:控制显存利用率至90%,留出缓冲空间防溢出,兼顾性能与稳定性。
  • --enable-prefix-caching:开启公共前缀缓存,对于相同system prompt的批量请求,避免重复编码,显著提升吞吐。
  • --uvicorn-log-level warning:降低日志输出级别,减少无关信息干扰,便于监控关键事件。

部署命令:

docker-compose up -d

查看启动日志:

docker logs -f deepseek-qwen32b-vllm

当看到如下输出时,表示服务已就绪:

INFO: Application startup complete. INFO: Uvicorn running on http://0.0.0.0:18489

此时模型已完成加载,可以接受外部请求。


验证服务可用性:一次真实的对话测试

等待2–5分钟完成模型加载后,即可发起测试请求。由于vLLM兼容OpenAI API协议,我们可以直接使用curl发起标准调用:

curl http://127.0.0.1:18489/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "DeepSeek-Qwen-32B", "messages": [ {"role": "user", "content": "你好,请介绍一下你自己"} ], "temperature": 0.7, "max_tokens": 512 }'

预期响应示例

{ "id": "chat-xxx", "object": "chat.completion", "created": 1712345678, "choices": [ { "index": 0, "message": { "role": "assistant", "content": "我是DeepSeek-Qwen-32B,一个由深度求索开发的大规模语言模型……" }, "finish_reason": "stop" } ], "usage": { "prompt_tokens": 15, "completion_tokens": 128, "total_tokens": 143 } }

只要返回结构化的JSON响应且无错误码(如500、404等),即可判定模型服务部署成功。此时你已经拥有了一个稳定运行在国产化平台上的高性能大模型推理节点。


这套基于昇腾910B + vLLM + DeepSeek-Qwen-32B的部署方案,不仅摆脱了对外部生态的依赖,还通过PagedAttention、连续批处理、动态内存管理等先进技术,实现了媲美甚至超越国际主流方案的推理效率。更重要的是,它完全兼容OpenAI API接口,意味着现有应用无需修改即可平滑迁移。

未来还可在此基础上进一步探索:
- 引入AWQ/GPTQ量化技术,降低显存占用,尝试双卡部署;
- 调整动态批处理策略,适配不同业务流量模式;
- 结合Kubernetes实现多实例负载均衡与弹性伸缩;
- 接入RAG系统或Agent框架,构建完整智能体 pipeline。

随着昇腾生态与开源社区的持续演进,国产AI基础设施正逐步走向成熟。这条从芯片到框架再到应用的全栈自研之路,不仅是技术选择,更是战略必然。

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/13 2:37:34

小白也能懂:LobeChat五大核心功能通俗讲解

小白也能懂:LobeChat五大核心功能通俗讲解 你有没有想过,自己也能拥有一个像ChatGPT那样聪明、能聊会写的AI助手?不是用别人的网页版,而是真正属于你的——可以部署在内网、连接本地模型、上传私人文档、甚至让它帮你查天气、写邮…

作者头像 李华
网站建设 2026/4/13 9:30:02

分支和循环

C语⾔是结构化的程序设计语⾔,这⾥的结构指的是顺序结构、选择结构、循环结构,C语⾔是能够实 现这三种结构的,其实我们如果仔细分析,我们⽇常所⻅的事情都可以拆分为这三种结构或者这三种 结构的组合。 我们可以使⽤ if 、 switch…

作者头像 李华
网站建设 2026/4/12 21:20:51

Dify与Spring AI性能对比(从吞吐量到内存占用的全面剖析)

第一章:Dify与Spring AI性能对比的背景与意义随着企业级AI应用的快速发展,选择合适的AI开发框架成为系统性能与可维护性的关键。Dify与Spring AI作为当前主流的两类AI集成方案,分别代表了低代码平台与传统编程框架的技术路径。Dify以可视化编…

作者头像 李华
网站建设 2026/4/15 18:57:33

揭秘Dify检索重排序机制:如何通过参数调优实现精度提升30%以上

第一章:揭秘Dify检索重排序的核心机制 在构建高效、精准的AI应用时,检索增强生成(RAG)系统中的排序环节至关重要。Dify作为领先的低代码AI应用开发平台,其内置的检索重排序(Re-ranking)机制显著…

作者头像 李华
网站建设 2026/4/12 11:33:24

LobeChat能否集成TTS语音合成?语音输出实现路径

LobeChat能否集成TTS语音合成?语音输出实现路径 在智能对话系统逐渐从“能说会写”迈向“有声有色”的今天,用户对交互体验的期待早已超越了纯文本的边界。尤其是在车载导航、老年陪伴、无障碍访问等场景中,“听懂AI的回答”比“看到AI的回答…

作者头像 李华
网站建设 2026/4/6 3:52:27

Dify平台在教育领域AI助教系统中的应用设想

Dify平台在教育领域AI助教系统中的应用设想 如今,越来越多的学生在课后提问:“这道题老师讲过,但我还是不会。”而教师也常面临“同一个问题被反复问十几次”的困境。这种信息不对称与教学资源有限的矛盾,在大班制教育中尤为突出…

作者头像 李华