华为 Atlas 800I A2 部署 Qwen2.5-32B 全栈 AI 应用实践
本文记录在鲲鹏+昇腾硬件上,基于 openEuler、vLLM-Ascend、Dify、RagFlow、Milvus 搭建大模型私有化知识库的完整过程,方便日后快速复现,记录一下。
环境概览
硬件:4×鲲鹏920_5250 处理器 + 8×昇腾910B NPU(Atlas 800I A2)
操作系统:openEuler 22.03 LTS SP4(aarch64)
关键软件:昇腾驱动/固件、CANN 8.5.0、torch-npu、vLLM-Ascend v0.13.0、Qwen2.5-32B-Instruct、Dify、RagFlow、Milvus
整体部署架构如下:
┌─────────────────────────────────────────────────────────────┐
│ 【系统基础层】 │
│ openEuler 22.03 LTS SP4 (aarch64) │
│ 内核: 5.10.0-60.18.0.50.oe2203 │
├─────────────────────────────────────────────────────────────┤
│ 【昇腾计算栈(物理机)】 │
│ 昇腾驱动 → 昇腾固件 → CANN 8.5.0 → torch-npu → vLLM-Ascend │
├─────────────────────────────────────────────────────────────┤
│ 【模型推理层】 │
│ Qwen2.5-32B 大模型 │
│ (部署在vLLM推理引擎, 使用8卡NPU并行) │
├─────────────────────────────────────────────────────────────┤
│ 【应用编排层】 │
│ Dify(流程编排) ←→ RagFlow(RAG框架) ←→ langchain │
├─────────────────────────────────────────────────────────────┤
│ 【向量存储层】 │
│ Milvus 向量数据库 │
│ (支持RAG场景的向量检索与存储) │
└─────────────────────────────────────────────────────────────┘
部署共分为六个阶段:基础系统准备、驱动与固件安装、CANN 软件包安装、Python AI 环境、vLLM 推理服务、应用平台搭建。
一、驱动和固件安装
先检查 NPU 状态:
#检查是否安装了驱动
npu-smi info
如果未安装,需创建运行用户 HwHiAiUser 并准备编译环境:
#如未安装需安装,NPU驱动和固件安装用户,root安装,指定运行用户为HwHiAiUser
groupadd HwHiAiUser
useradd -g HwHiAiUser -d /home/HwHiAiUser -m HwHiAiUser -s /bin/bash
yum makecache
yum install -y make dkms gcc kernel-headers-$(uname -r) kernel-devel-$(uname -r)
上传驱动和固件包后,添加可执行权限并安装:
chmod +x Ascend-hdk-910b-npu-driver_25.5.1_linux-aarch64.run
chmod +x Ascend-hdk-910b-npu-firmware_7.8.0.6.201.run
./Ascend-hdk-910b-npu-driver_25.5.1_linux-aarch64.run --full --install-for-all
#结果:Driver package installed successfully!则安装成功
./Ascend-hdk-910b-npu-firmware_7.8.0.6.201.run --full
#结果:Firmware package installed successfully! Reboot now or after driver installation for the installation/upgrade to take effect 则安装成功
若指定非 root 运行用户,驱动安装时可添加
--install-username=<username> --install-usergroup=<usergroup>参数。安装完成后建议重启,但直接执行npu-smi info也可能已生效:#reboot 不用重启也行
npu-smi info
二、通过 Docker 容器直接启动推理服务
此方式无需单独安装 CANN、torch、torch-npu、vllm 等组件,直接使用官方镜像 quay.io/ascend/vllm-ascend:v0.13.0。
参考链接:https://docs.vllm.ai/projects/ascend/en/v0.13.0/installation.html
Docker Compose 配置
编写 docker-compose.yml:
version: '3.8'
services:
vllm-ascend:
image: quay.io/ascend/vllm-ascend:v0.13.0
container_name: vllm-ascend-env
restart: unless-stopped # 可选,如需调试可改为 "no"
network_mode: host # 使用宿主机网络,解决容器无法访问外网的问题
shm_size: 1g
devices:
- /dev/davinci0
- /dev/davinci1
- /dev/davinci2
- /dev/davinci3
- /dev/davinci4
- /dev/davinci5
- /dev/davinci6
- /dev/davinci7
- /dev/davinci_manager
- /dev/devmm_svm
- /dev/hisi_hdc
volumes:
- /usr/local/dcmi:/usr/local/dcmi
- /usr/local/Ascend/driver/tools/hccn_tool:/usr/local/Ascend/driver/tools/hccn_tool
- /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 # 缓存 Hugging Face 模型
# 可选:挂载宿主机上提前下载的模型目录(避免下载)
# - /path/to/your/local/model:/models/Qwen2.5-32B-Instruct
environment:
- PYTORCH_NPU_ALLOC_CONF=max_split_size_mb:128
- VLLM_USE_MODELSCOPE=true
- HF_HUB_OFFLINE=1 # 强制Hugging Face Hub处于离线模式[reference:8]
- TRANSFORMERS_OFFLINE=1 # 强制Transformers库处于离线模式
- HF_HOME=/root/.cache/huggingface # 明确指定缓存根目录
- HUGGINGFACE_HUB_CACHE=/root/.cache/huggingface/hub # 明确指定Hub缓存目录[reference:9]
command: >
sh -c "vllm serve Qwen/Qwen2.5-32B-Instruct
--tensor-parallel-size 8
--gpu-memory-utilization 0.85
--max-model-len 32768
--max-num-seqs 32
--enforce-eager"
#容器启动自动执行运行,也可以进入容器后运行:vllm serve "Qwen/Qwen2.5-32B-Instruct"
启动容器后,服务会监听 8000 端口,模型自动加载(若已离线缓存则直接使用)。
三、CANN Toolkit 安装(可选,物理机部署时使用)
若不走 Docker 方案,或者需要在宿主机进行开发调试,才需安装 CANN 开发套件。本次通过 Docker 启动,vllm-ascend 镜像已包含 CANN 运行时,因此以下步骤在本次方案中无需执行,仅作记录。
#cann toolkit 用root用户安装
bash ./Ascend-cann-toolkit_8.5.0_linux-aarch64.run --install
#安装ops算子包
bash ./Ascend-cann-910b-ops_8.5.0_linux-aarch64.run --install
#安装nnal加速
bash ./Ascend-cann-nnal_8.5.0_linux-aarch64.run --install
配置环境变量(添加到 /etc/profile 实现开机生效):
source /usr/local/Ascend/cann-8.5.0/set_env.sh
source /usr/local/Ascend/nnal/asdsip/set_env.sh
验证 CANN 安装:
python3 -c "import acl;print(acl.get_soc_name())"
四、大模型推理测试
容器启动后,可使用 curl 调用 OpenAI 兼容接口测试:
curl -X POST "http://localhost:8000/v1/chat/completions" \
-H "Content-Type: application/json" \
--data '{
"model": "Qwen/Qwen2.5-32B-Instruct",
"messages": [
{
"role": "user",
"content": "What is the capital of France?"
}
]
}'正常应返回巴黎等回复。服务对外 API 地址为 http://192.168.2.104:8000/v1(根据实际 IP 调整)。
五、应用平台部署与归档指引
以下为生产环境中所有服务的启动方式及端口信息,适用两台机器(如 103、104)均如此操作。
1. Qwen2.5-32B 大模型启动
cd /data/vllm-ascend docker-compose up -d
2. 测试接口
#测试
curl -X POST "http://localhost:8000/v1/chat/completions" \
-H "Content-Type: application/json" \
--data '{
"model": "Qwen/Qwen2.5-32B-Instruct",
"messages": [
{
"role": "user",
"content": "What is the capital of France?"
}
]
}'API Endpoint:
http://192.168.2.104:8000/v1
3. Milvus 向量数据库
通过 docker-compose 启动:
cd /data/Milvus docker-compose up -d
服务端口:9091
4. Dify(华为适配版)
使用 KunpengRAG 项目中的部署文件:
# git clone https://gitee.com/kunpeng_compute/KunpengRAG.git 这个项目有华为 适配dify、ragflow、openwebui等项目 cd /data/KunpengRAG/deployment/docker-compose/dify docker-compose up -d
访问地址:http://192.168.2.104(首次使用需注册)
5. RagFlow(华为适配版)
为避免 MinIO 端口冲突,已修改为 19001、19000:
cd /data/KunpengRAG/deployment/docker-compose/ragflow docker-compose up -d
访问地址:http://192.168.2.104:8080(首次使用需注册)


