相关网站
ModelScope
海光开发者社区
常用命名速查
查看驱动是否安装
1 | lsmod | grep hycu |
查看显卡型号
1 | clinfo | grep -A 2 "Device Type" |
可以看到Board name
1 | Device Type: CL_DEVICE_TYPE_GPU |
GPU使用情况
功能类似于 NVIDIA 的 nvidia-smi 或 AMD 的 rocm-smi,用于监控和管理海光 GPU 的状态。
输入
1 | hy-smi |
查看剩余显存
1 | hy-smi --showmemavailable |
显示总显存和已用显存
1 | hy-smi --showmeminfo vram |
查看是否有进程在使用 GPU
1 | hy-smi --showpids |
查看显存是否启用 ECC(关键用于稳定性)
1 | hy-smi --showmemeccinfo |
准备工作
环境测试代码
验证 PyTorch 是否识别海光 GPU
/data/aitest/cuda_test.py
1 | import torch |
注意:
在 ROCm 中,
torch.cuda接口仍然可用(AMD/海光做了 CUDA API 兼容层),所以代码无需修改。
代码路径为
1 | /data/aitest |
下载模型
下载模型
1 | modelscope download --model Qwen/Qwen3-8B |
模型下载位置为
1 | /data/tools/modelscope |
步骤
VLLM镜像启动
下载vllm镜像
1 | docker pull image.sourcefind.cn:5000/dcu/admin/base/vllm:0.8.5-ubuntu22.04-dtk25.04.1-rc5-das1.6-py3.10-20250724 |
运行容器
我这里下载镜像的 IMAGE ID是efc1a5d819c4
1 | docker run -it --shm-size 64g --network=host --name vllm_085 --privileged --device=/dev/kfd --device=/dev/dri --device=/dev/mkfd --group-add video --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -u root -v /opt/hyhal/:/opt/hyhal/:ro -v /data/tools/modelscope/:/data/tools/modelscope/ -v /data/aitest/:/data/aitest/ efc1a5d819c4 bash |
参数说明:
-it:以交互模式运行容器,并分配一个伪终端(TTY)。--shm-size 64g:将容器的共享内存(/dev/shm)大小设为 64GB,供 vLLM 等大模型推理使用。--network=host:让容器直接使用宿主机的网络命名空间(端口无需映射)。--name vllm_085:给容器指定名称为vllm_085。--privileged:赋予容器几乎全部系统权限(用于访问硬件设备,但有安全风险)。--device=/dev/kfd:将海光/AMD 的 KFD(Kernel Fusion Driver)计算设备挂载进容器。--device=/dev/dri:挂载 DRI 图形/计算设备节点,用于 GPU/DCU 访问。--device=/dev/mkfd:挂载海光特有的多卡管理设备(如 Multi-KFD)。--group-add video:将容器内用户加入video用户组,获得设备访问权限。--cap-add=SYS_PTRACE:授予容器进程跟踪(ptrace)能力,用于调试或性能分析。--security-opt seccomp=unconfined:禁用 seccomp 安全限制,避免 DCU 驱动调用被拦截。-u root:以 root 用户身份在容器内运行。-v /opt/hyhal/:/opt/hyhal/:ro:将宿主机的海光 HAL 驱动库以只读方式挂载到容器内。-v /data/tools/modelscope/:/data/tools/modelscope/:挂载 ModelScope 模型缓存目录,供容器内使用。-v /data/aitest/:/data/aitest/:挂载自定义测试数据或代码目录。efc1a5d819c4:要运行的 Docker 镜像 ID(或可替换为完整镜像名)。bash:容器启动后执行的命令(进入 bash shell)。
如果已经运行可以这样进入
1 | docker exec -it vllm_085 bash |
vLLM运行模型
容器启动后运行测试代码
1 | cd /data/aitest |
这里显示
1 | 2.4.1 |
安装依赖
1 | pip install transformers==4.51.3 |
运行
/data/aitest/start_qwen3_8b.sh
1 | # 设置容器内可见的设备 |
设置可执行
1 | chmod +x /data/aitest/start_qwen3_8b.sh |
运行
1 | sh /data/aitest/start_qwen3_8b.sh |
参数解释
/data/tools/modelscope/models/Qwen/Qwen3-8B:本地模型文件路径。--served-model-name Qwen/Qwen3-8B:设置 API 调用时使用的模型名称,如果不指定会使用上面的本地模型路径。--trust-remote-code:允许加载模型自带的自定义 Python 代码(如 Qwen 的 tokenizer)。--dtype bfloat16:使用 bfloat16 精度运行模型,节省显存并保持数值稳定性。--tensor-parallel-size 2:使用 2 张 GPU/DCU 运行模型。这个值必须<=HIP_VISIBLE_DEVICES设置的设备。
主要作用是高并发请求和扩大可用显存,并不能提升单次回复速度。
--gpu-memory-utilization 0.85:最多使用 85% 的显存,避免 OOM。 注意对于小模型又使用多卡,这个值不要太高,他会直接占用85左右的显存。--max-model-len 32768:支持的最大上下文长度为 32768 个 token。--enable-chunked-prefill:启用分块预填充,提升长文本和高并发下的吞吐性能。
--override-generation-config
1 | { |
调用
查看模型列表
1 | curl http://localhost:8000/v1/models |
测试
1 | curl http://localhost:8000/v1/chat/completions \ |
禁用思考
1 | curl http://localhost:8000/v1/chat/completions \ |
Docker
Dockerfile
/data/aitest/Dockerfile
1 | FROM image.sourcefind.cn:5000/dcu/admin/base/vllm:0.8.5-ubuntu22.04-dtk25.04.1-rc5-das1.6-py3.10-20250724 |
Docker Compose
/data/aitest/docker-compose.yml
1 | version: '3.8' |
启动
1 | docker-compose up -d |
停止并删除
1 | docker-compose down |
判断是否在容器内
执行
1 | systemd-detect-virt |
- 容器内可能返回:
docker、podman、lxc、private-users - 宿主机通常返回:
none或kvm/vmware(如果是虚拟机)
安装(如未安装):
1 | apt-get install -y systemd-container # Debian/Ubuntu |