DevCloud 实例初始化与用户组配置

对于初次接触 AMD ROCm 生态的开发者来说,搭建环境的“第一公里”往往比写代码更让人头疼。很多同学在拿到 Instinct GPU 资源后,急于安装框架,却忽略了操作系统层面的基础权限配置,导致后续驱动无法调用硬件。我们通常选择 Ubuntu 22.04 LTS 作为底座,因为它对 ROCm 7.x 的内核支持最为成熟稳定。

在 DevCloud 上创建好实例并登录后的第一件事,不是下载软件,而是配置用户权限。ROCm 驱动运行依赖于特定的设备节点访问权,默认情况下普通用户是没有权限的。你必须执行以下命令,将当前用户加入 videorender 用户组:

sudo usermod -aG video,render $USER

这一步至关重要,但常被遗漏。执行完后必须重启系统sudo reboot),否则新的组权限不会生效。很多“驱动安装成功但无法识别显卡”的诡异问题,根源就在于此。重启后,你可以用 groups $USER 确认自己是否已在这两个组中,这是后续所有操作能正常进行的基石。

ROCm 7.x 驱动安装与架构验证

环境底座打好后,接下来是安装 ROCm 7.x 驱动。建议直接添加 AMD 官方软件源进行安装,避免使用第三方打包版本,以防内核模块不匹配。安装过程相对标准化,遵循官方文档执行 apt install rocm 系列命令即可。

安装完成并不意味着结束,验证环节才是确保后续编译不报错的关键。很多开发者跳过这一步直接装 PyTorch,结果在运行时遇到"illegal instruction"错误才回头查驱动,浪费大量时间。

首先,运行 rocm-smi 命令。如果能看到清晰的表格,列出 GPU 的温度、功耗、显存使用率以及频率策略,说明内核态驱动工作正常。如果该命令无输出或报错,请立刻检查 /dev/kfd/dev/dri 设备节点是否存在。

紧接着,执行 rocminfo 获取详细的硬件架构信息。你需要重点关注输出中的 Name: gfx90agfx942 等架构代码。记下这个代码,它在下一步编译 PyTorch 时是必填项。如果系统识别到的架构代码与你预期的 Instinct 型号不符,说明驱动层仍有问题,切勿强行继续。此外,尝试编译一个简单的 HIP Hello World 程序,能进一步确认 hipcc 编译器是否就绪。

PyTorch 与 vLLM 源码编译关键点

虽然 PyTorch 提供了预编译的 ROCm 版本,但在生产环境或追求极致性能时,源码编译往往是必经之路,尤其是为了适配最新的算子优化。这里有两个极易踩坑的核心点:环境变量设置依赖版本匹配

在激活 Conda 虚拟环境后,编译 PyTorch 前必须导出架构变量:

export PYTORCH_ROCM_ARCH="gfx90a"  # 替换为你刚才 rocminfo 查到的实际代码

如果忽略这一步,编译出的二进制文件将无法在当前硬件上运行,报错时往往没有任何友好提示,直接崩溃。同时,建议使用 GCC 11 或 Clang 15 作为编译器,版本过高或过低都可能引发链接错误。

vLLM 的编译同样严谨。它对 Triton 编译器有强依赖,必须确保安装的 Triton 版本与当前 PyTorch ROCm 后端严格匹配,否则会导致严重的段错误。在执行 pip install vllm 之前,需显式导出 HIP_PATH 指向 ROCm 安装目录(通常为 /opt/rocm),并设置 MAX_JOBS 利用多核 CPU 加速构建:

export HIP_PATH=/opt/rocm
export MAX_JOBS=8
pip install vllm --no-build-isolation

加上 --no-build-isolation 参数可以减少环境隔离带来的依赖冲突。编译完成后,务必运行 python -c "import torch; print(torch.cuda.is_available())" 进行快速验证。在 ROCm 环境下,PyTorch 通常兼容此接口,若返回 True,则说明后端识别成功,可以进入服务启动阶段。

启动推理服务与接口测试

一切准备就绪,终于可以启动第一个推理实例了。我们选择一个参数量适中的模型(如 Llama 3 8B)进行测试。使用 vllm serve 命令,结合之前确认的架构和显存策略拉起服务:

python -m vllm.entrypoints.api_server \
    --model meta-llama/Meta-Llama-3-8B-Instruct \
    --gpu-memory-utilization 0.9 \
    --port 8000 \
    --host 0.0.0.0

这里 --gpu-memory-utilization 设置为 0.9 是一个经验值,预留 10% 显存给系统开销,防止因瞬时峰值导致 OOM。启动过程中,密切观察日志,直到看到"Uvicorn running on…"字样,表明服务已成功监听端口。

最后一步是验证接口可用性。vLLM 原生兼容 OpenAI API 格式,无需编写复杂客户端,直接用 curl 即可测试:

curl http://localhost:8000/v1/completions \
    -H "Content-Type: application/json" \
    -d '{
        "model": "meta-llama/Meta-Llama-3-8B-Instruct",
        "prompt": "AMD Instinct GPU 的优势在于",
        "max_tokens": 50
    }'

如果返回的 JSON 中包含流畅生成的文本,且没有报错信息,恭喜你,已经在 AMD Instinct GPU 上成功跑通了 vLLM 推理全流程。从此刻起,你就可以基于这套稳定的栈,进一步探索多卡并行、量化优化等高级特性了。

200小时GPU算力已就位,快来领取:https://marketing.csdn.net/questions/Q2604140858304426315?utm_source=AIpaper
在这里插入图片描述

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐