GPUStack 在华为昇腾 800I A2 服务器上的保姆级部署指南

前言

随着国产 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

 

# 下载固件

wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/Ascend%20HDK/Ascend%20HDK%2023.0.RC3/Ascend-hdk-910b-npu-firmware_7.1.0.5.220.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

  1. 登录 GPUStack 管理界面
  2. 进入 “Models” → “Deploy New Model”
  3. 输入模型名称(如 Qwen2.5-7B-Instruct)
  4. 选择 Hugging Face 模型 ID:Qwen/Qwen2.5-7B-Instruct
  5. 后端选择:MindIE
  6. 点击 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 官方文档 与 昇腾社区 获取最新适配信息。

温馨提示:生产环境部署前,请务必在测试环境充分验证稳定性与性能表现。

 

posted on 2026-03-25 16:15  肥仔鱼Liam  阅读(28)  评论(0)    收藏  举报