# 龙蜥 8.9 部署大模型服务实战全流程:海光 DCU + vLLM
> 在 **龙蜥(Anolis OS)8.9** 操作系统上,基于海光开发者社区提供的 **vLLM Docker 镜像** 部署大模型服务的完整流程,涵盖 DCU 驱动安装、Docker 环境搭建、镜像拉取、服务部署与调用验证。
---
## 目录
- [一、环境概览](#一环境概览)
- [二、DCU 驱动安装](#二dcu-驱动安装)
- [三、Docker 环境搭建](#三docker-环境搭建)
- [四、获取 vLLM 镜像](#四获取-vllm-镜像)
- [五、部署模型服务](#五部署模型服务)
- [六、服务调用验证](#六服务调用验证)
- [七、常见问题](#七常见问题)
---
## 一、环境概览
| 项目 | 说明 |
| -------- | ----------------------------------------- |
| 操作系统 | 龙蜥(Anolis OS)8.9 |
| 加速硬件 | 海光 DCU(Hygon DCU) |
| 驱动版本 | rock-6.3.30+(对应 DTK 26.04) |
| 推理框架 | vLLM 0.11.0 |
| 运行环境 | Docker 容器(Ubuntu 22.04 + Python 3.11) |
> 💡 **什么是 DCU?** DCU(Deep Computing Unit)是海光推出的深度计算加速卡,其编程模型兼容 ROCm 生态,可通过 vLLM 等框架高效运行大模型推理任务。
---
## 二、DCU 驱动安装
### 1. 选择驱动版本
目前主流的 vLLM Docker 镜像基于 **DTK 26.04** 构建,因此需要下载对应的驱动 `.run` 文件。驱动版本与硬件、DTK 的兼容关系如下:
| 驱动版本 | 支持硬件 | 推荐 DTK 版本 |
| ------------ | ---------------------------------------------------------------------- | ------------- |
| rock-6.3.8+ | BW1000 / K100-AI / K100 / Z100L / Z100 | 25.04 |
| rock-6.3.30+ | BW1100 / BW1000 / BW150 / BW100 / BW10 / K100-AI / K100 / Z100L / Z100 | 26.04 |


> 🔗 **DCU 驱动下载地址**:请前往[海光开发者社区](https://download.sourcefind.cn:65024/6/main/)官方下载页获取对应 `.run` 文件。
### 2. 安装依赖
根据操作系统选择对应的依赖安装命令:
```bash
# CentOS / Anolis(龙蜥)
yum install -y rpm-build gcc-c++ cmake automake elfutils-libelf-devel \
libdrm libdrm-devel pciutils
yum install -y kernel-devel-`uname -r` kernel-modules-extra-`uname -r`
# Ubuntu
apt install -y gcc g++ cmake automake libelf-dev \
libdrm_amdgpu1 libtinfo5 pciutils libdrm-dev
apt install -y linux-headers-`uname -r` linux-modules-extra-`uname -r`
```
> ⚠️ `libdrm_amdgpu1` 在不同 Ubuntu 版本中包名可能为 `libdrm-amdgpu1`,若安装失败可尝试替换。

### 3. 安装驱动
```bash
# 修改驱动安装包权限
chmod +x rock*.run
# 执行驱动安装
./rock*.run
```
安装过程中会提示更新 **vbios**,选择 **是(Yes)**。安装完成后重启驱动服务:
```bash
# 重启驱动服务
systemctl restart hymgr
```

### 4. 驱动验证
```bash
# 6.3.x 及其以上的驱动,检查内核模块
lsmod | grep -E "hydcu|hycu"
# 查看显卡信息
/opt/hyhal/bin/hy-smi
```
执行 `/opt/hyhal/bin/hy-smi` 后若能正常列出显卡信息,说明驱动安装成功。

---
## 三、Docker 环境搭建
### 1. 在线安装 Docker
```bash
# 安装依赖工具
sudo dnf install -y yum-utils device-mapper-persistent-data lvm2
# 添加阿里云 Docker CE 镜像源
sudo yum-config-manager --add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装 Docker 相关组件
sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
```

### 2. 启动并设置开机自启
```bash
# 启动 Docker
sudo systemctl start docker
# 设置开机自启
sudo systemctl enable docker
```
---
## 四、获取 vLLM 镜像
前往**光源 vLLM 镜像仓库**,找到需要的 vLLM 版本,点击对应镜像右下角的 **复制** 按钮即可获得拉取命令,例如:
```bash
docker pull harbor.sourcefind.cn:5443/dcu/admin/base/vllm:0.11.0-ubuntu22.04-dtk26.04-py3.11
```
> 📌 **镜像命名解析**:`vllm:0.11.0` 表示 vLLM 版本,`ubuntu22.04` 为容器基础系统,`dtk26.04` 为对应的 DCU 工具包版本,`py3.11` 为 Python 版本。

---
## 五、部署模型服务
### 1. 启动容器
```bash
docker run -d \
--name dcu-model-service \
--restart=unless-stopped \
--network=host \
--ipc=host \
--shm-size=16G \
--device=/dev/kfd \
--device=/dev/mkfd \
--device=/dev/dri \
-v /data/model/llm:/model \
-v /opt/hyhal:/opt/hyhal \
--group-add video \
--cap-add=SYS_PTRACE \
--security-opt seccomp=unconfined \
-e VLLM_LOGGING_LEVEL=INFO \
harbor.sourcefind.cn:5443/dcu/admin/base/vllm:0.11.0-ubuntu22.04-dtk26.04-py3.11 \
python -m vllm.entrypoints.openai.api_server \
--model /model \
--served-model-name test \
--host 0.0.0.0 \
--port 30000 \
--max-model-len 20000 \
--tensor-parallel-size 4 \
--gpu-memory-utilization 0.9 \
--trust-remote-code \
--dtype bfloat16
```
### 2. vLLM 服务参数说明
| 参数 | 值 | 说明 |
| ---------------------------- | ------------ | --------------------------- |
| `--model` | `/model` | 模型路径(容器内挂载路径) |
| `--served-model-name` | `test` | API 中显示的模型名称 |
| `--host` | `0.0.0.0` | 监听所有网络地址 |
| `--port` | `30000` | 服务端口 |
| `--max-model-len` | `20000` | 最大序列长度 |
| `--tensor-parallel-size` | `4` | 张量并行度(对应 4 张 DCU) |
| `--gpu-memory-utilization` | `0.9` | GPU 显存利用率上限 |
| `--trust-remote-code` | — | 信任模型仓库中的远程代码 |
| `--dtype` | `bfloat16` | 推理数据类型 |
### 3. Docker 运行参数说明
| 参数分类 | 参数 | 值 | 说明 |
| ------------------ | ------------------ | ------------------------------------------------------------------------------------ | ---------------------------------- |
| **基础** | `-d` | — | 后台运行容器 |
| | `--name` | `dcu-model-service` | 容器名称 |
| **重启策略** | `--restart` | `unless-stopped` | 异常崩溃自动重启,手动停止后不重启 |
| **网络** | `--network` | `host` | 使用宿主机网络,无网络隔离 |
| **内存/IPC** | `--ipc` | `host` | 共享宿主机 IPC 命名空间 |
| | `--shm-size` | `16G` | 共享内存大小 16GB |
| **设备挂载** | `--device` | `/dev/kfd` | DCU 核心驱动设备 |
| | `--device` | `/dev/mkfd` | DCU 辅助设备文件 |
| | `--device` | `/dev/dri` | DCU 显示/计算设备 |
| **数据卷** | `-v` | `模型目录:/model` | 挂载模型文件 |
| | `-v` | `/opt/hyhal:/opt/hyhal` | 挂载 DCU 运行时库 |
| **权限** | `--group-add` | `video` | 加入 video 组以访问 DCU |
| | `--cap-add` | `SYS_PTRACE` | 允许 ptrace 系统调用 |
| | `--security-opt` | `seccomp=unconfined` | 禁用 seccomp 限制 |
| **环境变量** | `-e` | `VLLM_LOGGING_LEVEL=INFO` | 设置日志级别 |
| **镜像** | — | `harbor.sourcefind.cn:5443/dcu/admin/base/vllm:0.11.0-ubuntu22.04-dtk26.04-py3.11` | vLLM DCU 镜像 |
### 4. 验证服务状态
```bash
# 查看容器是否正常运行
docker ps
# 查看启动日志,确认无报错
docker logs -f dcu-model-service
```
容器启动后,可通过 `hy-smi` 观察到显卡显存被占用,说明模型已成功加载。

---
## 六、服务调用验证
服务启动成功后,通过 OpenAI 兼容接口进行调用测试:
```bash
curl -s -X POST http://127.0.0.1:30000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "test",
"messages": [
{"role": "user", "content": "Hello"}
],
"max_tokens": 200,
"temperature": 0.7,
"stream": true
}'
```
返回符合 OpenAI Chat Completions 格式的响应即表示部署成功。
---
## 七、常见问题
### Q1:容器启动失败,提示无法找到 `/dev/kfd`
驱动未正确安装或未重启服务。执行以下命令检查:
```bash
lsmod | grep -E "hydcu|hycu"
systemctl restart hymgr
```
### Q2:`--tensor-parallel-size` 应该如何设置?
应设置为参与推理的 DCU 卡数量,且需能整除模型的注意力头数。例如 4 卡则设置为 `4`。
### Q3:显存不足(OOM)如何调整?
适当降低 `--max-model-len` 或 `--gpu-memory-utilization` 的值。
---
**参考链接**
- https://developer.sourcefind.cn/servicelist/detail?post_id=61036870-b3c7-11f0-9989-acde48001122&active=Overview
- https://download.sourcefind.cn:65024/6/main/