## 部署环境说明
- **服务器型号**:曙光 X7850H0(256 核 + 8 张 K100 + 1.5 TB 内存)
- **服务器操作系统**:UOS V2500
- **DTK 版本**:25.04.1
- **ROCm 版本**:6.3.13
- **VLLM 版本**:0.8.5
- **Python 版本**:3.10.16
> **注意**:海光 VLLM 安装文件依赖 `uma` 库,与 Python 3.11 版本不兼容,因此本部署选择 Python 3.10 版本。
## 安装包清单
- **驱动包**:`rock-6.3.13-V1.12.0.run`
- **开发工具包**:`DTK-25.04.1-openEuler22.03-x86_64.tar.gz`
- **容器镜像包**:`registry.uniontech.com/uos-ai/uos-server-25-hygon-vllm:v0.8.5-dtk25.04.1`
## 安装步骤
### 一、安装系统依赖包
```bash
yum install -y gcc openssl-devel zlib-devel bzip2-devel gdbm-devel \
xz-devel sqlite-devel tk-devel libuuid-devel libnsl2-devel \
readline-devel libffi-devel numactl-devel.x86_64 pciutils \
libgfortran.x86_64 automake findutils mlocate autoconf \
rpm-build gcc-c++ libdrm-devel.x86_64
```
### 二、物理机环境部署
#### 1. ROCm 驱动安装
```bash
# 修改驱动安装文件权限
chmod +x rock-6.3.13-V1.12.0.run
# 执行驱动安装
./rock-6.3.13-V1.12.0.run
# 安装完成后重启主机
reboot
```
#### 2. DTK 安装
```bash
# 解压缩到 /opt 目录
tar -zxf /opt/dcu/DTK-25.04.1-openEuler22.03-x86_64.tar.gz -C /opt
mv dtk-25.04.1 dtk
# 配置环境变量
cat >> /etc/profile << 'EOF'
export LIBRARY_PATH=/opt/dtk/lib:$LIBRARY_PATH
source /opt/dtk/env.sh
source /opt/hyhal/env.sh
EOF
cat >> ~/.bashrc << 'EOF'
export LIBRARY_PATH=/opt/dtk/lib:$LIBRARY_PATH
source /opt/dtk/env.sh
source /opt/hyhal/env.sh
EOF
source /etc/profile
source ~/.bashrc
# 验证 K100 卡信息
rocm-smi
```
成功查看 K100 卡信息的输出示例:

## 容器化部署
### 一、导入容器镜像
```bash
# 拉取镜像(如需从仓库获取)
docker pull registry.uniontech.com/uos-ai/uos-server-25-hygon-vllm:v0.8.5-dtk25.04.1
# 查看导入结果
docker images
```
### 二、启动容器
> **前置条件**:物理机上已完成 ROCm 驱动和 DTK 安装(见上文"物理机环境部署"章节)。
```bash
docker run -dit \
--restart=always \
--name=vllm-api \
--network=host \
--privileged \
--device=/dev/kfd \
--device=/dev/dri \
--device=/dev/mkfd \
--ipc=host \
--shm-size=128G \
--group-add video \
--cap-add=SYS_PTRACE \
--security-opt seccomp=unconfined \
-u root \
--ulimit stack=-1:-1 \
--ulimit memlock=-1:-1 \
-v /opt/hyhal:/opt/hyhal \
-v /root/models:/opt/models \
registry.uniontech.com/uos-ai/uos-server-25-hygon-vllm:v0.8.5-dtk25.04.1 \
tail -f /dev/null
```
### 三、运行 vLLM 服务
```bash
# 进入容器
docker exec -it vllm-api /bin/bash
# 启动 vLLM 服务
vllm serve /opt/models/DeepSeek-R1-Distill-Qwen-32B \
--trust-remote-code \
--dtype float16 \
--max-model-len 1024 \
--tensor-parallel-size 8 \
--host 0.0.0.0 \
--port 8000 \
--served-model-name deepseek
```
服务启动成功后的输出示例:

## 多节点集群部署方式
### 前提条件
每个节点均需按照"容器化部署"章节完成容器启动和环境配置。
### 部署步骤
#### 1. 配置环境变量(所有节点容器内均需执行)
```bash
docker exec -it vllm-api /bin/bash
# 配置环境变量
export ALLREDUCE_STREAM_WITH_COMPUTE=1
export VLLM_HOST_IP=<本节点IP>
export NCCL_SOCKET_IFNAME=<本节点IP对应的网口名>
export GLOO_SOCKET_IFNAME=<本节点IP对应的网口名>
export NCCL_MIN_NCHANNELS=16
export NCCL_MAX_NCHANNELS=16
export NCCL_NET_GDR_READ=1
export HIP_VISIBLE_DEVICES=0,1
```
#### 2. 启动 Ray 集群
在 **主节点** 容器内执行:
```bash
ray start --head \
--port=6000 \
--node-ip-address=<主节点IP> \
--num-gpus=<主节点GPU数量>
```
在 **工作节点** 容器内执行:
```bash
ray start \
--address=<主节点IP>:6000 \
--num-gpus=<工作节点GPU数量>
```
#### 3. 启动 vLLM 分布式服务
在 **主节点** 容器内执行:
```bash
vllm serve /opt/models/DeepSeek-R1-Distill-Qwen-32B \
--trust-remote-code \
--dtype float16 \
--max-model-len 1024 \
--tensor-parallel-size 8 \
--distributed-executor-backend ray \
--host 0.0.0.0 \
--port 8000 \
--served-model-name deepseek
```
服务启动成功后的输出示例:
