本文档介绍如何部署 MaaS-Base Worker 节点,为平台提供 GPU 推理能力。
Worker 是 MaaS-Base 的实际推理执行单元,负责:
Worker 必须运行在 Linux 节点上,且该节点需配备 GPU/NPU 等加速器。Server 可以运行在无 GPU 的 CPU 节点上。
| 要求 | 说明 |
|---|---|
| 操作系统 | Linux(推荐 Ubuntu 20.04+ / Debian 12+) |
| 加速器 | NVIDIA GPU、AMD GPU、Ascend NPU、Hygon DCU、MThreads GPU、Iluvatar GPU、MetaX GPU、Cambricon MLU、T-Head PPU |
| 驱动 | 已安装对应加速器厂商的驱动 |
| Docker | 20.10+ |
| NVIDIA Container Toolkit | NVIDIA GPU 必需,安装指南 |
| 网络连接 | Worker 需能访问 Server 的 API 端口(默认 80) |
| 厂商 | 驱动 / 工具包 |
|---|---|
| NVIDIA | NVIDIA Driver + CUDA |
| AMD | ROCm |
| Ascend | CANN + Ascend Driver |
| Hygon | DTK + HyHal |
| MThreads | MThreads Driver |
| Iluvatar | CoreX |
| MetaX | MACA + MX Driver |
| Cambricon | Neuware + cnmon |
| T-Head | PPU SDK |
# 如果 Server 是通过 Docker Compose 部署的
docker exec maas-base-server cat /var/lib/gpustack/registration_token
docker run -d --name maas-base-worker \
--restart unless-stopped \
--privileged \
--network host \
--ipc host \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /var/run/cdi:/var/run/cdi \
-v /var/lib/gpustack:/var/lib/gpustack \
-e GPUSTACK_SERVER_URL=http://<SERVER_IP>:80 \
-e GPUSTACK_RUNTIME_DEPLOY=Docker \
-e GPUSTACK_RUNTIME_DEPLOY_MIRRORED_DEPLOYMENT=true \
-v /var/lib/kubelet/device-plugins:/var/lib/kubelet/device-plugins \
gpustack/gpustack:latest \
gpustack start \
--gateway-mode disabled \
--worker
参数说明:
--privileged:允许 Worker 访问 GPU 设备--network host:使用宿主机网络,简化端口管理--ipc host:共享 IPC 命名空间,某些推理引擎需要-v /var/run/docker.sock:/var/run/docker.sock:让 Worker 能调度模型容器--gateway-mode disabled:Worker 不启动网关,仅做推理--worker:以 Worker 模式运行
# 查看 Worker 日志
docker logs -f maas-base-worker
# 在 Server UI 中查看节点是否上线
# 访问 http://<SERVER_IP> -> Clusters 页面
如果单机部署且节点本身有 GPU,可以直接在 Server 容器中启用 Worker 模式:
docker run -d --name maas-base \
--restart unless-stopped \
--privileged \
--network host \
--ipc host \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /var/run/cdi:/var/run/cdi \
-v maas-base-data:/var/lib/maas-base \
-v /var/lib/kubelet/device-plugins:/var/lib/kubelet/device-plugins \
-e NVIDIA_VISIBLE_DEVICES=all \
-e NVIDIA_DRIVER_CAPABILITIES=compute,utility \
maas-base/maas-base \
gpustack start \
--gateway-mode disabled \
--api-port 80
该模式下,同一个容器既作为 Server 也作为 Worker,适合单 GPU 节点的快速部署。
可在 docker-compose 文件中追加 Worker 服务:
maas-base-worker:
image: gpustack/gpustack:latest
container_name: maas-base-worker
restart: unless-stopped
privileged: true
network_mode: host
ipc: host
environment:
GPUSTACK_SERVER_URL: http://<SERVER_IP>:80
GPUSTACK_RUNTIME_DEPLOY: "Docker"
GPUSTACK_RUNTIME_DEPLOY_MIRRORED_DEPLOYMENT: "true"
# NVIDIA GPU 环境变量
NVIDIA_VISIBLE_DEVICES: all
NVIDIA_DRIVER_CAPABILITIES: compute,utility
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /var/run/cdi:/var/run/cdi
- /var/lib/gpustack:/var/lib/gpustack
- /var/lib/kubelet/device-plugins:/var/lib/kubelet/device-plugins
command: ["gpustack", "start", "--gateway-mode", "disabled", "--worker"]
在 Kubernetes 环境中,Worker 以 DaemonSet 形式自动部署到每个 GPU 节点。
helm install -n gpustack-system gpustack ./gpustack --create-namespace \
--set worker.enabled=true \
--set worker.gpuVendor=nvidia
支持的 GPU 厂商配置:
worker.gpuVendor |
适用硬件 |
|---|---|
nvidia |
NVIDIA GPU |
amd |
AMD GPU (ROCm) |
ascend |
Huawei Ascend NPU |
hygon |
Hygon DCU |
mthreads |
Moore Threads GPU |
iluvatar |
Iluvatar GPU |
metax |
MetaX GPU |
cambricon |
Cambricon MLU |
thead |
T-Head PPU |
null |
CPU-only(无 GPU 推理) |
详细说明请参见 Kubernetes (Helm) 部署指南。
Worker 容器支持以下环境变量:
| 变量 | 说明 | 默认值 |
|---|---|---|
GPUSTACK_SERVER_URL |
Server API 地址(必填) | - |
GPUSTACK_WORKER_NAME |
Worker 名称 | 主机名 |
GPUSTACK_WORKER_IP |
Worker IP 地址 | 自动检测 |
GPUSTACK_RUNTIME_DEPLOY |
部署模式(Docker / Kubernetes) |
自动检测 |
GPUSTACK_RUNTIME_DEPLOY_MIRRORED_DEPLOYMENT |
启用镜像部署模式 | true |
| 厂商 | 环境变量 | 说明 |
|---|---|---|
| NVIDIA | NVIDIA_VISIBLE_DEVICES |
可见 GPU 设备,all 表示全部 |
| NVIDIA | NVIDIA_DRIVER_CAPABILITIES |
驱动能力,推荐 compute,utility |
| NVIDIA | NVIDIA_DISABLE_REQUIRE |
不强制要求特定 runtime |
| AMD | AMD_VISIBLE_DEVICES |
AMD GPU 设备,all 表示全部 |
| Ascend | ASCEND_HOME_PATH |
Ascend 工具包路径 |
| Hygon | ROCM_PATH / ROCM_SMI_LIB_PATH |
Hygon 驱动路径 |
| Iluvatar | COREX_HOME |
CoreX 工具包路径 |
| MThreads | MTHREADS_VISIBLE_DEVICES |
MThreads GPU 设备 |
| Cambricon | CAMBRICON_VISIBLE_DEVICES |
Cambricon MLU 设备 |
| T-Head | PPU_HOME |
PPU SDK 路径 |
| MetaX | LD_LIBRARY_PATH |
需包含 MACA 和 MX 驱动库路径 |
平台支持多个 Worker 节点同时接入 Server,Server 会自动调度和负载均衡:
┌──────────┐
┌───────────────▶│ Worker 1 │ (GPU Node A)
│ └──────────┘
┌──────────┐ ┌──────────┐
│ Server ├────────▶ Worker 2 │ (GPU Node B)
└──────────┘ └──────────┘
│ ┌──────────┐
└───────────────▶│ Worker 3 │ (GPU Node C)
└──────────┘
只需在每个 Worker 节点上执行相同的部署命令,使用相同的 GPUSTACK_SERVER_URL 和注册令牌即可。
Error: Worker not registered with server
GPUSTACK_SERVER_URL 是否正确curl http://<SERVER_IP>:80)No GPU devices detected
nvidia-smi / rocm-smi / npu-smi 等)--privileged 参数nvidia-container-toolkit 已安装-v /dev:/dev:ro 卷挂载Error: CUDA out of memory
nvidia-smi 查看)GPUSTACK_WORKER_HEARTBEAT_INTERVAL 环境变量)