硬件架构:
硬件配置清单(总计:~2397元
显卡(GPU): AMD Radeon Vll 16GB x2(二手 ~1600元)
主板(Motherboard):精粤 X99M-PLUS(~300元
处理器(CPU):Intel Xeon E5-2680 v4(56元)
内存(RAM): 海力士 ECC REG DDR4 8GB x4(176元)
硬盘(Storage):512GB NVMe SSD(~150元)
电源(PSU): 额定850W 金牌认证电源(二手 115元)
核心挑战: 您的 Radeon VII 显卡(gfx906 架构)已被 AMD 官方在新版的 ROCm 驱动中停止支持。这意味着官方的 vLLM 推理框架无法直接在您的硬件上正常工作。
解决方案: 我们将采用一个由社区维护的、专门为 gfx906 硬件优化的 vLLM 分支 (nlzy/vllm-gfx906)。此方案将通过预构建的 Docker 容器来部署,以最大程度地简化安装流程并规避复杂的依赖问题。通过张量并行技术,我们将把 Qwen3-32B-AWQ 模型分片到您的两张 Radeon VII 显卡上,实现高效推理。
系统版本: ubuntu 22.04.5,如使用其他操作系统请自行通过AI修改相关命令。
第一部分:系统底层环境配置
在安装任何 AI 软件栈之前,必须确保操作系统和 BIOS 已为多 GPU 计算环境正确配置。这些步骤虽常被忽视,但至关重要。
BIOS/UEFI 设置
您需要进入服务器的 BIOS/UEFI 设置界面,进行以下两项关键修改。这些设置是让操作系统正确识别和管理多个无头(headless)计算卡的先决条件。
启用 “Above 4G Decoding”: 此设置允许 64 位操作系统正确映射多个 GPU 所需的巨大内存地址空间,是避免资源冲突和硬件识别失败的关键。请在 “PCIe Subsystem Settings” 或 “Advanced” 菜单中找到并启用它。
禁用 “Compatibility Support Module (CSM)”: 禁用 CSM 会强制系统进入纯 UEFI 启动模式。由于 Radeon VII 在此场景下作为纯计算卡使用,没有视频输出,传统的 BIOS 启动模式可能会干扰其在操作系统层面的正确初始化。
安装 Docker Engine
我们将使用 Docker 来部署服务,这可以极大地简化环境配置。
Bash
# 更新您的包列表
sudo apt update && sudo apt upgrade -y
# 安装 Docker
sudo apt install docker.io -y
# 启动并设置 Docker 开机自启
sudo systemctl start docker
sudo systemctl enable docker
—
第二部分:ROCm 驱动与验证
尽管 gfx906 已被官方弃用,但我们依赖的社区方案 (vllm-gfx906) 要求使用 ROCm 6.3 版本进行构建和运行。其底层的内核驱动仍对您的硬件保持兼容性。
安装 ROCm 6.3
我们将使用 amdgpu-install 脚本来精确安装所需的版本。
Bash
# 下载针对 Ubuntu 22.04 (Jammy) 的 ROCm 6.3 安装脚本
wget https://repo.radeon.com/amdgpu-install/6.3/ubuntu/jammy/amdgpu-install_6.3.60300-1_all.deb
# 安装该脚本
sudo apt install ./amdgpu-install_6.3.60300-1_all.deb
# 使用该脚本安装 ROCm 核心计算库# –usecase=rocm,hiplibsdk 参数确保安装了所有必要的计算库
sudo amdgpu-install -y –usecase=rocm,hiplibsdk
配置用户权限并重启
这是允许应用程序访问 GPU 硬件的强制步骤。
Bash
# 将当前用户添加到 render 和 video 组
sudo usermod -a -G render,video $LOGNAME# 必须重启系统以使新安装的内核模块和用户组权限生效
sudo reboot
严格验证 ROCm 环境
重启后,打开一个新的终端,执行以下命令来验证 ROCm 是否已正确安装且识别出您的两张 Radeon VII 显卡。
检查用户组权限:
Bash
groups
预期输出应包含 render 和 video。
检查内核模块:
Bash
dkms status
预期输出应显示 amdgpu 模块已为当前内核成功安装 (installed)。
检查 ROCm Agent 枚举:
Bash
rocminfo
您应该能在此命令的输出中找到 两个独立的 “Agent” 块,每个块的 “Name” 字段都应显示为 gfx906。
检查硬件状态:
Bash
rocm-smi
预期输出应清晰地列出 两张 显卡,每张卡的 VRAM 显示为 16384MiB,并且状态正常。
[SUCCESS CHECKPOINT] 在继续下一步之前,请确保以上所有验证命令均返回了预期的结果。任何一步的失败都表明底层驱动存在问题,必须先行解决。
第三部分:使用 vLLM-GFX906 部署模型
我们将采用社区推荐的、最直接的部署路径:使用预构建的 Docker 镜像。这个镜像封装了所有必需的补丁和依赖,包括为 gfx906 定制的 vLLM 和 Triton。
拉取预构建的 Docker 镜像
该镜像是 nlzy/vllm-gfx906 分支的作者提供的,专门为 ROCm 6.3 环境构建。
Bash
# 拉取社区报告中验证过的特定标签的镜像
docker pull nalanzeyu/vllm-gfx906:v0.9.0-rocm6.3
启动 vLLM 服务器
现在,我们将使用一条命令来启动 Docker 容器,并在其中运行 vLLM 服务器。该命令将配置张量并行,把 Qwen3-32B-AWQ 模型加载到您的两张 Radeon VII 上。
Bash
# 将 /path/to/your/models 替换为您在主机上存储模型的实际路径# 如果您希望 vLLM 自动从 Hugging Face 下载,可以省略 -v 挂载和 –model 参数中的路径部分
docker run -it –rm \
–network=host \
–ipc=host \
–shm-size=16g \
–device=/dev/kfd \
–device=/dev/dri \
–group-add video \
–cap-add=SYS_PTRACE \
–security-opt seccomp=unconfined \
-v /path/to/your/models:/models \
nalanzeyu/vllm-gfx906:v0.9.0-rocm6.3 \
vllm serve Qwen/Qwen3-32B-AWQ \
–tensor-parallel-size 2 \
–quantization awq \
–max-model-len 5100 \
–disable-log-requests \
–dtype float16
命令参数详解:
docker run …: 启动容器所需的一系列标准参数,用于正确地将 AMD GPU 设备暴露给容器。
nalanzeyu/vllm-gfx906:v0.9.0-rocm6.3: 指定我们下载的、包含所有 gfx906 补丁的必需镜像。
vllm serve Qwen/Qwen3-32B-AWQ: vLLM 的启动命令,指向您要服务的模型。vLLM 会自动从 Hugging Face 下载。
–tensor-parallel-size 2: 核心参数。指示 vLLM 将模型的权重均匀地切分到您的 2 张 GPU 上。
–quantization awq: 明确告知 vLLM 加载的模型是 AWQ 量化格式。
–max-model-len 8192: 设置模型能处理的最大序列长度。
–disable-log-requests: 一项性能优化措施,在生产环境中建议开启。
–dtype float16: vllm-gfx906 分支推荐使用 float16 以在 gfx906 硬件上获得更好的性能。
第四部分:验证与客户端交互
服务器成功启动后,vLLM 会在日志中显示工作进程已在所有指定的 GPU (GPU 0, 1) 上初始化,并开始在 localhost:8000 上监听 API 请求。
使用curl进行快速测试
这是验证 API 端点是否正常响应的最简单方法。
Bash
curl http://localhost:8000/v1/completions \
-H “Content-Type: application/json” \
-d ‘{
“model”: “Qwen/Qwen3-32B-AWQ”,
“prompt”: “San Francisco is a”,
“max_tokens”: 20,
“temperature”: 0
}’
如果一切正常,您将收到一个包含模型生成文本的 JSON 响应。
使用 Python 客户端进行交互
为了更方便地进行程序化访问,您可以使用 openai Python 库,因为它与 vLLM 提供的 API 完全兼容。
首先,安装 openai 库:
Bash
pip install openai
然后,使用以下 Python 脚本与您的本地模型进行交互: Python
from openai import OpenAI