1. 需求:
在客户提供的 8 * Z100L 算力服务器上,部署全量微调过的 qwen2.5-32B 大模型。
2. 解决:
海光算力服务器部署模型三件套:DCU、DCU驱动、DTK。
1. 查看显卡(即 DCU)数量
shell
[root@dcu6 ~]# lspci | grep -i 'VGA\|3D\|Display\|Compute'
12:00.0 VGA compatible controller: ASPEED Technology, Inc. ASPEED Graphics Family (rev 41)
37:00.0 Display controller: Chengdu C-3000 IC Design Co., Ltd. ZIFANG (rev 01)
3a:00.0 Display controller: Chengdu C-3000 IC Design Co., Ltd. ZIFANG (rev 01)
3d:00.0 PCI bridge: Chengdu C-3000 IC Design Co., Ltd. Device 23b7 (rev 01)
3f:00.0 Display controller: Chengdu C-3000 IC Design Co., Ltd. ZIFANG (rev 01)
45:00.0 Display controller: Chengdu C-3000 IC Design Co., Ltd. ZIFANG (rev 01)
b7:00.0 Display controller: Chengdu C-3000 IC Design Co., Ltd. ZIFANG (rev 01)
ba:00.0 Display controller: Chengdu C-3000 IC Design Co., Ltd. ZIFANG (rev 01)
bf:00.0 Display controller: Chengdu C-3000 IC Design Co., Ltd. ZIFANG (rev 01)
c6:00.0 Display controller: Chengdu C-3000 IC Design Co., Ltd. ZIFANG (rev 01)
说明:输出结果的第1列(例如: 37:00.0、3a:00.0) 是 显卡对应的 PCI 设备地址。
2. 查看显卡详情
shell
[root@dcu6 ~]# lspci -vv -s 37:00.0
37:00.0 Display controller: Chengdu C-3000 IC Design Co., Ltd. ZIFANG (rev 01)
Subsystem: Chengdu C-3000 IC Design Co., Ltd. Z100L
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR+ FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 340
NUMA node: 3
Region 0: Memory at 23000000000 (64-bit, prefetchable) [size=32G]
Region 2: Memory at 23800000000 (64-bit, prefetchable) [size=2M]
Region 4: I/O ports at 3000 [size=256]
Region 5: Memory at b7200000 (32-bit, non-prefetchable) [size=512K]
Expansion ROM at b7280000 [disabled] [size=128K]
Capabilities: [48] Vendor Specific Information: Len=08 <?>
Capabilities: [50] Power Management version 3
......
说明:从输出结果可知,显卡型号是 Z100L ,单卡显存大小是 32G。
3. 下载、安装 DCU驱动
shell
# 下载驱动
wget https://download.sourcefind.cn:65024/directlink/6/dtk-25.04.1%E9%A9%B1%E5%8A%A8/rock-6.3.15-V1.0.1.run
# 给驱动文件授权
chmod 777 rock-6.3.15-V1.0.1.run
# 安装驱动
./rock-6.3.15-V1.0.1.run
# 查看驱动版本(输出 rock-5.7.1-6.2.26-1.x86_64)
rpm -qa | grep rock
说明:如果需要卸载老版DCU驱动,使用命令rpm -e rock-5.7.1-6.2.26-1.x86_64进行卸载。
4. 安装驱动成功后,使用官方工具 hy-smi 查看显卡使用率
shell
[root@dcu6 ~]# hy-smi
============================ System Management Interface =============================
======================================================================================
DCU Temp AvgPwr Perf PwrCap VRAM% DCU% Mode
0 N/A N/A auto N/A 87% 0% N/A
1 N/A N/A auto N/A 87% 0% N/A
2 N/A N/A auto N/A 87% 0% N/A
3 N/A N/A auto N/A 87% 0% N/A
4 N/A N/A auto N/A 87% 0% N/A
5 N/A N/A auto N/A 87% 0% N/A
6 N/A N/A auto N/A 87% 0% N/A
7 N/A N/A auto N/A 86% 0% N/A
======================================================================================
=================================== End of SMI Log ===================================
说明:
1> VRAM% :显存使用率;
2> DCU% :显卡实时使用率。如上图所示均为0%,说明显卡全部空闲,没有进行任务推理。
3> 可使用 watch -n 1 hy-smi 命令,每间隔1秒实时监测显卡使用情况。
5. 下载、启动 环境配置 docker 镜像
shell
# 下载环境配置镜像
docker pull image.sourcefind.cn:5000/dcu/admin/base/vllm:0.8.5-ubuntu22.04-dtk25.04.1-rc5-das1.6-py3.10-20250705
[root@dcu6 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
image.sourcefind.cn:5000/dcu/admin/base/vllm 0.8.5-ubuntu22.04-dtk25.04.1-rc5-das1.6-py3.10-20250705 6e41fdfdf849 4 months ago 24.5GB
# 启动镜像
docker run -it \
--name vllm085-qwen2.5 \
--privileged \
--shm-size=128G \
--device=/dev/kfd \
--device=/dev/dri \
--cap-add=SYS_PTRACE \
--security-opt seccomp=unconfined \
--ipc=host \
--network=host \
--group-add video \
-v /opt/hyhal:/opt/hyhal:ro \
-v /public/software/xingpu-qwen2.5:/home/ \
6e41fdfdf849 bash
注意事项:
启动镜像命令中
1> -v /public/software/xingpu-qwen2.5:/home/: 替换成你宿主服务器上,模型源文件所在目录地址;
2> 6e41fdfdf849 :替换成你实际的下载后的 镜像id。
6. vLLM 启动模型
shell
# vLLM 启动模型
nohup python -m vllm.entrypoints.openai.api_server \
--model /home \
--served-model-name xingpu-qwen2.5 \
--api-key sk-xxxyyyzzz \
--tensor-parallel-size 8 \
--max-model-len 6144 \
--gpu-memory-utilization 0.90 \
--dtype bfloat16 \
--trust-remote-code \
--host 49.123.8.124 \
--port 5002 \
> vllm.log 2>&1 &
# 查看 vLLM 启动日志
tail -500f vllm.log
启动成功有如下类似输出:
INFO 12-01 11:06:34 [launcher.py:36] Route: /v1/rerank, Methods: POST
INFO 12-01 11:06:34 [launcher.py:36] Route: /v2/rerank, Methods: POST
INFO 12-01 11:06:34 [launcher.py:36] Route: /invocations, Methods: POST
INFO 12-01 11:06:34 [launcher.py:36] Route: /metrics, Methods: GET
INFO: Started server process [54]
INFO: Waiting for application startup.
INFO: Application startup complete.
说明:
1> --host 49.123.8.124 : 这里的 IP 是当前宿主机内网地址。
2> vLLM 启动命令行参数一览。
7. curl 验证 OpenAI Chat API 接口
shell
# 验证
curl http://49.123.8.124:5002/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-xxxyyyzzz" \
-d '{
"model": "xingpu-qwen2.5",
"messages": [
{"role": "user", "content": "天空为什么是蓝色的,在50字以内回答?"}
]
}'
结果输出:
{
"id": "chatcmpl-2ad1059728a54a1cba3e86a9432db7cb",
"object": "chat.completion",
"created": 1764558564,
"model": "xingpu-qwen2.5",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"reasoning_content": null,
"content": "天空呈蓝色是因为大气中的分子和微粒散射阳光,
波长较短的蓝光比其他颜色散射更强烈,这种现象称为瑞利散射。",
"tool_calls": []
},
"logprobs": null,
"finish_reason": "stop",
"stop_reason": null
}
],
"usage": {
"prompt_tokens": 41,
"total_tokens": 79,
"completion_tokens": 38,
"prompt_tokens_details": null
},
"prompt_logprobs": null
}