新手必读,在 Linux 上配置 AMD GPU 开发环境的 checklist
驱动安装与内核前置检查
在 AMD GPU 上跑大模型,最劝退的往往不是代码写不出来,而是环境根本起不来。很多新手拿着最新的显卡,直接照搬网上的通用教程,结果卡在第一步。ROCm 对内核版本和固件有着近乎苛刻的要求,这一步没走对,后面所有的 pip install 都是徒劳。
首先,别急着装驱动,先确认你的系统内核。ROCm 7.x 系列通常要求 Linux Kernel 5.15 以上,推荐使用 6.2 或更新的 LTS 版本。如果你还在用几年前的旧系统镜像,大概率会遭遇兼容性问题。可以通过 uname -r 快速查看,如果版本过低,请先升级内核并重启。
接下来是固件更新,这是最容易被忽略的“隐形坑”。AMD 的 Instinct 系列和部分高端 Radeon 卡需要特定的系统固件(system firmware)才能正确识别加速功能。在 Ubuntu 系发行版上,务必执行以下命令确保固件库是最新的:
sudo apt update
sudo apt install linux-firmware
安装完固件后,不要立即进行下一步,必须重启系统。很多开发者反馈“驱动装上了但设备不可见”,90% 的情况是因为重启前内核加载了旧的固件模块。重启后,使用 dmesg | grep -i amdgpu 检查日志,如果看到类似 AMDGPU: Initialized 且没有报错的信息,说明底层硬件识别正常,这时候才可以开始安装 ROCm 驱动。
对于驱动本身,强烈建议通过官方 APT 源安装,而不是手动下载 .run 文件。手动编译的安装方式在后续内核升级时极易失效,维护成本极高。配置好官方源后,安装核心组件:
sudo apt install rocm-dkms rocm-libs
安装过程中,DKMS 模块会自动针对当前内核进行编译,这需要几分钟时间,请耐心等待直到出现 Installation complete 提示。
用户组权限与环境变量配置
驱动装好不代表你能直接用。Linux 的权限机制默认不允许普通用户直接访问 GPU 设备,如果不配置用户组,你在运行 PyTorch 或 vLLM 时会频繁遇到 Permission denied 或 HIP initialization failed 的错误。
你需要将当前用户添加到 video 和 render 这两个关键用户组中。这两个组分别控制显示输出和通用计算渲染权限,缺一不可。执行以下命令(注意将 $USER 替换为你的实际用户名,或者直接运行环境变量自动获取):
sudo usermod -aG video $USER
sudo usermod -aG render $USER
关键点来了:修改用户组后,当前的终端会话并不会立即生效。你必须完全注销并重新登录,或者干脆重启一次机器。很多新手在这一步只是简单地 su - 切换了一下,结果发现 clinfo 还是报错,白白浪费半小时排查。重新登录后,可以用 groups 命令确认自己是否已在上述两个组中。
接下来是环境变量设置,这是让 PyTorch 和 vLLM 正确识别 AMD 架构的核心。AMD GPU 有不同的计算架构代号(如 gfx90a, gfx942 等),如果环境变量未指定,编译器可能会尝试编译不支持的架构,导致运行时崩溃。
打开你的 ~/.bashrc 或 ~/.zshrc 文件,添加以下内容。这里以常见的 Instinct MI250/MI300 系列为例,如果你的卡是消费级 Radeon,请查阅对应架构代号:
export PATH=/opt/rocm/bin:$PATH
export LD_LIBRARY_PATH=/opt/rocm/lib:$LD_LIBRARY_PATH
# 关键:指定目标 GPU 架构,避免编译错误
export PYTORCH_ROCM_ARCH=gfx90a;gfx942
# 开启 HIP 可见性,便于多卡通信调试
export HSA_VISIBLE_DEVICES=0,1
保存文件后,执行 source ~/.bashrc 使其生效。为了验证环境是否真正打通,可以安装 rocminfo 工具并运行:
rocminfo | grep -A 5 "Name:.*amd"
如果输出了详细的 GPU 属性信息,包括 Wavefront Size、Memory Size 等,恭喜你,底层地基已经打牢了。
验证测试与避坑指南
环境搭好了,最后一步是用真实的代码验证。不要只停留在命令行工具,直接拉一个最小的 PyTorch 脚本测试 ROCm 后端是否可用。创建一个 test_rocm.py:
import torch
print(f"PyTorch version: {torch.__version__}")
print(f"ROCm available: {torch.cuda.is_available()}") # 注意:PyTorch 中仍用 cuda 接口判断
if torch.cuda.is_available():
print(f"Device count: {torch.cuda.device_count()}")
print(f"Current device: {torch.cuda.get_device_name(0)}")
# 简单张量运算测试
x = torch.rand(5, 3).to('cuda')
y = torch.rand(5, 3).to('cuda')
z = x + y
print("Matrix addition on GPU successful!")
else:
print("ROCm backend not detected. Check drivers and env vars.")
运行它,如果看到 “Matrix addition on GPU successful!” 且设备名称显示为你的 AMD 显卡型号,说明开发环境已完美就绪。
在这个阶段,还有几个高频坑点需要提醒:
- Docker 用户注意:如果你在容器内开发,必须使用
--device /dev/kfd --device /dev/dri参数挂载设备,并且容器内的用户 ID 需要与宿主机匹配,否则同样会报权限错误。 - 多卡通信问题:如果在双卡环境下运行 vLLM 遇到死锁,检查
HSA_VISIBLE_DEVICES是否正确设置了所有卡的索引,同时确认 PCIe 拓扑是否支持 P2P 通信,部分消费级主板可能需要在内核参数中添加pci=realloc。 - 版本对应关系:ROCm 7.x 配套的 PyTorch 版本通常是固定的(如 2.4+),不要盲目
pip install torch最新版,务必去 PyTorch 官网查找带有 “ROCm” 标签的安装命令,例如pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm6.2(具体版本号随时间变化,请以官网为准)。
走到这里,你应该已经拥有了一个可工作的 AMD GPU 开发环境。接下来的路,无论是部署 vLLM 进行大模型推理,还是用 LLaMA-Factory 做微调,地基都已经稳固。社区里有很多针对特定模型的优化脚本,但万变不离其宗,只要底层环境没问题,上层的应用迁移其实就是几条命令的事。

更多推荐



所有评论(0)