基础环境
CPU: Intel(R) Xeon(R) Platinum 8358P * 2
内存:32GB * 16
显卡:AMD Instinct MI210 * 8
操作系统:CentOS Linux release 8.4.2105
内核:4.18.0-305.3.1.el8.x86_64
部署结果
vllm+Qwen3-32B,运行成功
sglang+Qwen3-32B,运行失败,所部署的sglang版本暂时不支持Qwen3,详细说明
部署过程
安装驱动和rocm:
rocm目前的最新版本是6.4.1,但截止到本文编写时间,vllm和sglang暂时还只是适配了6.3.x版本,因此建议安装6.3.x的最新版本(本文以6.3.3为例)
可以在此URL:https://repo.radeon.com/amdgpu-install/6.3.3/下找到对应的安装源,本文是安装了amdgpu-install-6.3.60303-1.el8.noarch.rpm
wget https://repo.radeon.com/amdgpu-install/6.3.3/el/8.10/amdgpu-install-6.3.60303-1.el8.noarch.rpm
rpm -ivh amdgpu-install-6.3.60303-1.el8.noarch.rpm
安装repo后,再执行以下命令安装驱动及rocm:
amdgpu-install
amdgpu-install --usecase=rocm
运行dkms status和rocm-smi命令验证安装成功。
部署vllm
直接拉起vllm镜像
拉取镜像(国内需要从国内的镜像源拉取或使用代理)
docker pull rocm/vllm:rocm6.3.1_vllm_0.8.5_20250521
更多版本见这里,https://hub.docker.com/r/rocm/vllm/tags
拉起vllm容器
docker run -it \
--network=host \
--group-add=video \
--ipc=host \
--cap-add=SYS_PTRACE \
--security-opt seccomp=unconfined \
--device /dev/kfd \
--device /dev/dri \
-v /public/models:/root/.cache/huggingface \
rocm/vllm:rocm6.3.1_vllm_0.8.5_20250521 \
bash
自己构建vllm镜像
直接从docker hub拉取的镜像,是vllm 0.8.5版本,如果想要较新版本,可以自己构建。
目前构建起来的版本是0.9.1
下载rocm版本的Dockerfile,https://github.com/vllm-project/vllm/blob/main/docker/Dockerfile.rocm,运行以下命令进行构建
DOCKER_BUILDKIT=1 docker build -f Dockerfile.rocm -t vllm-rocm .
如果构建失败,把Dockerfile.rocm中的ARG REMOTE_VLLM=”0″改为”1″
构建完成后,拉起容器
docker run -it \
--network=host \
--group-add=video \
--ipc=host \
--cap-add=SYS_PTRACE \
--security-opt seccomp=unconfined \
--device /dev/kfd \
--device /dev/dri \
-v /public/models:/root/.cache/huggingface \
vllm-rocm \
bash
运行vllm
运行vllm服务端(在容器内运行)
#已下载好模型文件,本地离线运行
vllm serve /root/.cache/huggingface/Qwen3-32B \ #目录路径是模型文件夹本身的路径
--served-model-name Qwen3-32B \
--tensor-parallel-size 8 \
--gpu-memory-utilization 0.95 \
--trust-remote-code
#在线运行,从huggingface下载模型文件
vllm serve Qwen/Qwen3-32B \ #用huggingface格式填写模型名称
--tensor-parallel-size 8 \
--gpu-memory-utilization 0.95 \
--trust-remote-code
部署sglang
用于rocm的sglang,目前最新版是v0.4.7-rocm630,同样可以从docker hub拉取,也可以自己构建。但最新版不支持MI210(gfa90a),建议使用”lmsysorg/sglang:v0.4.3.post2-rocm630″,来源
直接拉起sglang镜像
部署lmsysorg/sglang:v0.4.3.post2-rocm630版本
拉取镜像(国内需要从国内的镜像源拉取或使用代理)
docker pull lmsysorg/sglang:v0.4.7-rocm630
更多版本见这里,https://hub.docker.com/r/lmsysorg/sglang/tags
拉起sglang容器
docker run -it \
--network=host \
--device=/dev/kfd \
--device=/dev/dri \
--ipc=host \
--shm-size 16G \
--group-add video \
--cap-add=SYS_PTRACE \
--security-opt seccomp=unconfined \
-v /public/models:/root/.cache/huggingface \
--privileged \
-w /workspace \
lmsysorg/sglang:v0.4.3.post2-rocm630
运行sglang
运行sglang服务端(在容器内运行)
#已下载好模型文件,本地离线运行
python3 -m sglang.launch_server \
--model-path /root/.cache/huggingface/DeepSeek-R1-Distill-Qwen-7B \ #目录路径是模型文件夹本身的路径
--host 0.0.0.0 \
--port 30000 \
--tp 4 \
--context-len 8192 \
--max-prefill-tokens 8192 \
--chunked-prefill-size 2048
#在线运行,从huggingface下载模型文件
python3 -m sglang.launch_server \
--model-path deepseek-ai/DeepSeek-R1-Distill-Qwen-7B \ #用huggingface格式填写模型名称
--host 0.0.0.0 \
--port 30000 \
--tp 4
测试vllm模型运行效果:
curl -X POST -H "Content-Type: application/json" -d '{"model": "Qwen3-32B", "messages": [{"role": "user", "content": "你好"}], "max_tokens": 10}' http://localhost:8000/v1/chat/completions
其它
sglang支持qwen3问题
因为目前的硬件环境是MI210(gfx90a),只能使用”lmsysorg/sglang:v0.4.3.post2-rocm630″这个版本,而这个版本是不支持qwen3。
最新版lmsysorg/sglang:v0.4.7-rocm630目前还没支持MI210(gfx90a),所以暂时也没法测试最新版是否支持qwen3。
下载模型
huggingface命令下载
huggingface-cli login
huggingface-cli download deepseek-ai/DeepSeek-R1-Distill-Qwen-7B --local-dir /root/.cache/huggingface/DeepSeek-R1-Distill-Qwen-7B --local-dir-use-symlinks False
国内代理站
相关资料
AMD
驱动、rocm等: https://repo.radeon.com/
rocm相关镜像: https://hub.docker.com/u/rocm
vllm
github: https://github.com/vllm-project/vllm
Dockerfile: https://github.com/vllm-project/vllm/blob/main/docker/Dockerfile.rocm
部署指引: https://docs.vllm.ai/en/latest/getting_started/installation/gpu.html#amd-rocm
镜像: https://hub.docker.com/r/rocm/vllm/tags
sglang
github: https://github.com/sgl-project/sglang
Dockerfile: https://github.com/sgl-project/sglang/blob/main/docker/Dockerfile.rocm
部署指引: https://docs.sglang.ai/start/install.html
镜像: https://hub.docker.com/r/lmsysorg/sglang/tags
监控相关
- device-metrics-exporter
github: https://github.com/ROCm/device-metrics-exporter
镜像: https://hub.docker.com/r/rocm/device-metrics-exporter/tags
运行命令:
docker run -d \
--device=/dev/dri \
--device=/dev/kfd \
-p 5000:5000 \
--name device-metrics-exporter \
rocm/device-metrics-exporter:v1.2.1
-
amd_smi_exporter
github: https://github.com/amd/amd_smi_exporter -
grafana模板
https://grafana.com/grafana/dashboards/23434-amd-instinct-single-node-dashboard/