随着国产 AI 芯片生态的日益成熟,华为昇腾(Ascend)系列 NPU 已成为大模型私有化部署的重要选择。GPUStack 作为一个开源的、支持异构算力(包括 NVIDIA、AMD、Apple Silicon 以及华为昇腾等)的集群管理器,自 v0.6 版本起正式内置了对昇腾硬件的支持,并通过 MindIE 推理引擎实现高效的大模型推理。
本文将以华为 Atlas 800I A2 推理服务器(搭载 Ascend 910B 系列 NPU)为例,提供一份从零开始的、保姆级的部署教程。我们将涵盖从驱动安装、Docker 环境配置、Ascend Docker Runtime 安装,到 GPUStack Server 与 Worker 的完整部署流程,并提供每一步的详细命令和参数解释。本指南基于 openEuler 22.03 LTS 或 Ubuntu 22.04 系统,适用于单机或多节点集群部署场景。
一、环境准备与前置检查
1.1 硬件与系统要求
- 服务器型号:华为 Atlas 800I A2(通常搭载 4~8 张 Ascend 910B NPU,每卡 32GB HBM2e)
- 操作系统:openEuler 22.03 LTS / Ubuntu 22.04 / CTyunOS 22.06+(需为 aarch64 架构)
- 内存:建议 ≥ 128GB
- 存储:系统盘 ≥ 300MB 可用空间,模型存储盘建议 ≥ 500GB SSD
- 网络:确保服务器可访问外网(用于下载驱动、Docker 镜像等),或已配置好内网镜像源
1.2 确认 NPU 状态
在开始之前,先确认 NPU 驱动是否已安装。若为新机器,需先安装驱动与固件。
bash
# 查看 NPU 设备状态
npu-smi info
若返回类似以下信息,说明驱动已正常安装:
文本
+----------------------------------------------------------------------------------+
| npu-smi 23.0.rc1 Version: 23.0.rc1 |
+---------------------------+----------------------+-------------------------------+
| NPU Name | Health | Power(W) ... |
| 0 910B3 | OK | 75.0 ... |
| 1 910B3 | OK | 76.2 ... |
...
+----------------------------------------------------------------------------------+
若提示 command not found 或无设备信息,则需先安装驱动(见第二章)。
二、安装昇腾 NPU 驱动与固件(如未安装)
注意:若服务器已由厂商预装驱动,可跳过此章。否则请严格按顺序安装:驱动 → 固件。
2.1 创建专用用户(推荐)
bash
sudo groupadd HwHiAiUser
sudo useradd -g HwHiAiUser -d /home/HwHiAiUser -m HwHiAiUser -s /bin/bash
2.2 下载驱动与固件
访问 昇腾社区 下载对应版本的驱动包(.run 文件)。以 Ascend 910B + openEuler 22.03 为例:
bash
cd /opt
# 示例:下载驱动(请根据实际版本替换 URL)
wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/Ascend%20HDK/Ascend%20HDK%2023.0.RC3/Ascend-hdk-910b-npu-driver_23.0.rc3_linux-aarch64.run
# 下载固件
2.3 安装驱动
bash
chmod +x Ascend-hdk-910b-npu-driver_*.run
sudo ./Ascend-hdk-910b-npu-driver_*.run --full --install-for-all
安装过程中按提示操作,完成后重启系统(可选,但推荐):
bash
sudo reboot
2.4 安装固件
bash
chmod +x Ascend-hdk-910b-npu-firmware_*.run
sudo ./Ascend-hdk-910b-npu-firmware_*.run --full --install-for-all
固件安装后需复位 NPU 或重启生效:
bash
# 方式一:复位指定 NPU(例如 0 号卡)
sudo npu-smi set -t reset -i 0
# 方式二:重启整机(更稳妥)
sudo reboot
重启后再次执行 npu-smi info 确认所有 NPU 状态为 OK。
三、安装 Docker 与 Ascend Docker Runtime
GPUStack 依赖 Docker 容器化部署,而昇腾 NPU 需通过 Ascend Docker Runtime 才能被容器识别。
3.1 安装 Docker Engine
openEuler / CentOS 系:
bash
sudo yum install -y docker
sudo systemctl enable docker
sudo systemctl start docker
Ubuntu 系:
bash
sudo apt update
sudo apt install -y docker.io
sudo systemctl enable docker
sudo systemctl start docker
验证 Docker 安装:
bash
docker –version
3.2 安装 Ascend Docker Runtime
从昇腾社区下载对应版本的 Ascend-docker-runtime 安装包(需与驱动版本匹配):
bash
cd /opt
wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/MindStudio/Ascend-Docker-Runtime/Ascend-docker-runtime_24.1.rc3_linux-aarch64.run
chmod +x Ascend-docker-runtime_*.run
sudo ./Ascend-docker-runtime_*.run –install
安装完成后,重启 Docker 服务:
bash
sudo systemctl restart docker
3.3 验证 Docker 能否识别 NPU
运行一个测试容器,检查是否能访问 NPU:
bash
docker run -it --rm \
--device /dev/davinci_manager \
--device /dev/devmm_svm \
--device /dev/hisi_hdc \
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
ascendai/mindspore:latest \
bash -c "npu-smi info"
若容器内能正常输出 NPU 信息,则说明环境配置成功。
四、部署 GPUStack Server 与 Worker
GPUStack 采用 Server-Worker 架构:
- Server:负责管理、调度、API 暴露(可无 NPU)
- Worker:实际承载模型推理任务(需挂载 NPU)
在单机部署场景中,可将 Server 与 Worker 合并在同一容器中运行。
4.1 拉取 GPUStack 镜像
GPUStack 官方提供统一镜像 gpustack/gpustack,支持多后端自动选择。
bash
docker pull gpustack/gpustack:latest
提示:若在内网环境,可提前在联网机器拉取并导出镜像,再导入到目标服务器。
4.2 启动 GPUStack(单机模式:Server + Worker)
以下命令将启动一个包含 Server 和内置 Worker 的容器,并启用 MindIE 后端以支持 Ascend 910B:
bash
docker run -d \
--name gpustack \
--restart unless-stopped \
--ipc=host \
--network=host \
--security-opt seccomp=unconfined \
-e ASCEND_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 \
--device /dev/davinci_manager \
--device /dev/devmm_svm \
--device /dev/hisi_hdc \
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
-v /var/lib/gpustack:/var/lib/gpustack \
gpustack/gpustack:latest
参数详解:
- --ipc=host:共享主机 IPC 命名空间,提升进程间通信效率(对大模型必要)
- --network=host:使用主机网络,避免端口映射复杂化
- ASCEND_VISIBLE_DEVICES:指定容器可见的 NPU 卡号(根据实际数量调整,如 0,1,2,3)
- --device:挂载 NPU 相关设备文件,使容器能访问硬件
- -v /usr/local/Ascend/driver:挂载驱动目录,容器内需调用驱动库
- -v /var/lib/gpustack:持久化存储模型、配置、日志等数据
4.3 分离部署(可选:Server 与 Worker 分开)
若需多节点集群,可在一台机器部署 Server,其他机器部署 Worker。
Server 节点(无需 NPU):
bash
docker run -d \
--name gpustack-server \
--restart unless-stopped \
--network=host \
-v /var/lib/gpustack:/var/lib/gpustack \
gpustack/gpustack:latest \
server --server-port 80
Worker 节点(需 NPU):
bash
docker run -d \
--name gpustack-worker \
--restart unless-stopped \
--ipc=host \
--network=host \
--security-opt seccomp=unconfined \
-e ASCEND_VISIBLE_DEVICES=0,1,2,3 \
--device /dev/davinci_manager \
--device /dev/devmm_svm \
--device /dev/hisi_hdc \
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
-v /var/lib/gpustack:/var/lib/gpustack \
gpustack/gpustack:latest \
worker --server-url http://<SERVER_IP>:80
将 <SERVER_IP> 替换为 Server 节点的 IP 地址。
五、验证部署与部署大模型
5.1 检查 GPUStack 状态
bash
docker logs -f gpustack
观察日志,等待出现类似信息:
文本
INFO: GPUStack server started on http://0.0.0.0:80
INFO: Worker registered successfully
INFO: MindIE backend initialized for Ascend 910B
5.2 访问 Web 管理界面
打开浏览器,访问 http://<服务器IP>:80(若使用 host 网络),默认账号密码通常在首次启动时生成并打印在日志中,或参考官方文档。
5.3 部署大模型(以 Qwen2.5-7B-Instruct 为例)
方式一:通过 Web UI
- 登录 GPUStack 管理界面
- 进入 “Models” → “Deploy New Model”
- 输入模型名称(如 Qwen2.5-7B-Instruct)
- 选择 Hugging Face 模型 ID:Qwen/Qwen2.5-7B-Instruct
- 后端选择:MindIE
- 点击 Deploy,系统将自动下载模型并启动推理服务
方式二:通过 API
bash
curl -X POST http://localhost:80/v1/models \
-H "Content-Type: application/json" \
-d '{
"name": "Qwen2.5-7B-Instruct",
"source": "huggingface",
"huggingface_model_id": "Qwen/Qwen2.5-7B-Instruct",
"backend": "mindie",
"replicas": 1
}'
5.4 测试推理
模型部署完成后,可通过 OpenAI 兼容 API 进行测试:
bash
curl http://localhost:80/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen2.5-7B-Instruct",
"messages": [{"role": "user", "content": "你好,请介绍一下你自己。"}]
}'
若返回正常响应,说明部署成功!
六、常见问题与优化建议
6.1 常见问题
- 容器无法识别 NPU:检查是否安装了 Ascend-docker-runtime,并确认 --device 参数是否正确。
- 模型加载失败:确认 MindIE 是否支持该模型架构(参考昇腾官网兼容性列表)。
- 内存不足:调整 ASCEND_VISIBLE_DEVICES 减少占用卡数,或选用更小模型。
6.2 性能优化
- 多卡推理:在部署模型时设置 tensor_parallel_size 参数(如 2 或 4),利用多卡并行加速。
- 量化部署:使用 INT8 或 FP16 量化模型,降低显存占用,提升吞吐。
- 模型预热:首次请求较慢,可发送空请求预热模型。
七、总结
通过上述步骤,您已成功在华为昇腾 Atlas 800I A2 服务器上完成了 GPUStack 的全流程部署,并实现了基于 MindIE 后端的大模型推理服务。GPUStack 的异构支持能力,使得企业可以灵活整合不同品牌的算力资源,构建统一、高效的私有化 AI 平台。
未来,随着 GPUStack 对 vLLM-Ascend 等更多推理引擎的支持,昇腾生态的易用性与性能将进一步释放。建议持续关注 GPUStack 官方文档 与 昇腾社区 获取最新适配信息。
GPUStack 在华为昇腾 800I A2 服务器上的保姆级部署指南_华为_yumgpkpm-鲲鹏昇腾开发者社区
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/ai/319403.html