当前位置:首页 > 未分类 > 正文内容

华为 Atlas 800I A2 部署 Qwen2.5-32B 全栈 AI 应用实践

xiaorui9小时前未分类5

本文记录在鲲鹏+昇腾硬件上,基于 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 推理服务、应用平台搭建。


一、驱动和固件安装

参考官方文档   https://www.hiascend.com/document/detail/zh/canncommercial/850/softwareinst/instg/instg_0000.html?Mode=PmIns&InstallType=netyum&OS=openEuler

先检查 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 端口冲突,已修改为 1900119000

cd /data/KunpengRAG/deployment/docker-compose/ragflow
docker-compose up -d

访问地址:http://192.168.2.104:8080(首次使用需注册)


结语

以上为在华为 Atlas 800I A2 上部署 Qwen2.5-32B 大模型,并搭配 Dify、RagFlow、Milvus 构建企业 RAG 应用的全流程。过程中搞过ragflow编译、dify国内镜像源安装都出现不少问题,最后找了这么一个开源项目,一次性解决问题,简单快速。


相关文章

Mysql数据库主从模式配置及切换方案

Mysql数据库主从模式配置及切换方案

有一个项目的需求,同时配置两台服务器,两台服务器的mysql数据库、系统图片、视频等资源等实时同步,在出现故障时迅速切换。(通过mysql主从复制、rsync数据同步、nginx负载均衡的方案实现)通...

虚拟机模拟mongodb配置多节点副本集,实现事务特性

虚拟机模拟mongodb配置多节点副本集,实现事务特性

一、环境环境:Ubuntu 22,完成mongd、mongosh、mongodump安装,第一步先进行备份(这里端口用的是27070):(注意,这里配置内部地址,在远程连接时无法连接,或者加上直连参数...

Linux通过手机USB网络共享上网设置方法

多数情况下,服务器无法直接联网,需通过手机连线上网。设置方法如下:终端中查看现有网络接口:ip addr 或 ifconfig连接好数据线并在手机设置中打开“通过USB共享网络”再次查看是否将USB识...

通过云主机SSH 反向端口转发访问无公网ip电脑的服务

利用 SSH 反向端口转发:轻松实现本地服务远程访问 在日常开发或服务器管理中,我们经常需要将本地服务暴露给外部网络访问,比如让客户临时访问你的本地开发环境,或者在没有公...

Linux系统备份及恢复的一个方案

Linux系统备份及恢复的一个方案

本文为借鉴经验并按实际梳理,测试成功,环境如下:VMware虚拟机Ubuntu20.04系统、实体电脑Ubuntu20.04系统主要思路如下:由于linux系统一切皆文件的理念。通过tar工具将除启动...