ROCm 7.x 环境搭建避坑指南,Ubuntu 下一次成功的关键配置
从零开始:Ubuntu 下 ROCm 7.x 环境搭建实录
最近入手了一块 AMD Instinct 显卡,准备在 Ubuntu 上搭建 ROCm 7.x 环境跑大模型。本以为照着官方文档敲几行命令就能搞定,结果在实际操作中踩了不少“隐形坑”。很多教程只给了理想状态下的命令,却忽略了权限配置、密钥验证以及重启后的设备识别等关键细节。这篇文章就记录我从零开始搭建全过程的真实经历,重点复盘那些文档里没细说但决定成败的步骤,希望能帮刚接触 AMD GPU 的朋友少走弯路。
软件源配置与密钥验证:别跳过这一步
安装 ROCm 的第一步是添加官方软件源。很多人直接复制 echo 命令追加到 sources.list,却忽略了 GPG 密钥的导入验证,这在后续更新时极易报错。
正确的操作是先下载并验证密钥指纹,确保来源可信:
wget -q -O - https://repo.radeon.com/rocm/rocm.gpg.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/rocm.gpg > /dev/null
接着添加源列表。注意 ROCm 7.x 对 Ubuntu 版本有严格要求,推荐使用 22.04 LTS:
echo 'deb [arch=amd64] https://repo.radeon.com/rocm/apt/debian/ jammy main' | sudo tee /etc/apt/sources.list.d/rocm.list
sudo apt update
如果在 apt update 时看到 GPG 签名错误,大概率是密钥导入路径不对或网络问题导致密钥损坏,此时切勿强行安装,否则后续组件依赖会全部断裂。
用户组权限:被忽视的"video"与"render"
安装核心组件前,有一个极易被忽略但至关重要的步骤:将当前用户加入 video 和 render 用户组。ROCm 驱动通过这两个组控制用户对 GPU 设备的访问权限。如果漏掉这一步,即使安装成功,运行 rocminfo 也会提示"No devices found"或直接无输出。
执行以下命令并务必重启系统使权限生效:
sudo usermod -aG video $USER
sudo usermod -aG render $USER
# 必须重启,仅重新登录终端无效
sudo reboot
重启后,可以通过 groups $USER 确认是否已包含上述两个组。这是解决"GPU 未识别”问题最高频的方案,比重装驱动有效得多。
自动化安装脚本:一键部署 PyTorch ROCm 版
环境依赖就绪后,我们可以编写一个 Shell 脚本来自动化安装 ROCm 核心组件及 PyTorch。手动逐条输入容易出错,脚本化能确保环境一致性。
创建 install_rocm_pytorch.sh:
#!/bin/bash
set -e
echo ">>> 开始安装 ROCm 7.x 核心组件..."
sudo apt install -y rocm-hip-sdk rocblas hipblas miopen-hip
echo ">>> 配置环境变量..."
# 将 ROCm 路径写入 bashrc,避免每次手动 export
if ! grep -q "ROCM_PATH" ~/.bashrc; then
echo 'export PATH=/opt/rocm/bin:$PATH' >> ~/.bashrc
echo 'export HSA_OVERRIDE_GFX_VERSION=11.0.0' >> ~/.bashrc
source ~/.bashrc
fi
echo ">>> 安装 PyTorch ROCm 版本..."
# 指定 index-url 确保下载的是 ROCm 编译版而非 CUDA 版
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm6.2
echo ">>> 安装完成,请运行验证脚本。"
赋予执行权限并运行:chmod +x install_rocm_pytorch.sh && ./install_rocm_pytorch.sh。脚本中显式指定了 rocm-hip-sdk 等关键包,防止默认安装遗漏编译器;同时自动配置 HSA_OVERRIDE_GFX_VERSION,这对某些非最新架构的显卡兼容至关重要。
深度排查:当 rocminfo 无输出时怎么办
重启后运行 rocminfo 是检验环境的金标准。如果命令执行后没有任何输出,或者卡在等待状态,请按以下逻辑排查:
- 检查内核模块加载:运行
lsmod | grep amdgpu。若无输出,说明驱动未加载。尝试sudo modprobe amdgpu,若报错则需检查内核版本是否与 ROCm 7.x 匹配(通常需 5.15+)。 - 查看设备节点权限:执行
ls -l /dev/kfd /dev/dri/render*。确认当前用户是否有读写权限(crw-rw----),若无,回到上一步检查用户组配置是否生效。 - dmesg 日志分析:使用
dmesg | grep -i amdgpu查看启动日志。若出现"VCN decode/encode disabled"或固件加载失败信息,可能需要手动更新 linux-firmware 包。
最终验证:用代码说话
一切配置妥当后,我们用一段 Python 代码做最终验收。这段脚本不仅检测 PyTorch 是否识别到 ROCm,还尝试进行一次简单的矩阵运算,确保计算链路畅通。
import torch
def verify_rocm():
print(f"PyTorch 版本:{torch.__version__}")
# 检查 ROCm 可用性
if not torch.cuda.is_available(): # 注意:PyTorch 中仍沿用 cuda.is_available() 接口
print("❌ 错误:未检测到可用的 ROCm 设备")
return False
print(f"✅ 检测到 ROCm 设备数量:{torch.cuda.device_count()}")
print(f"🚀 当前设备名称:{torch.cuda.get_device_name(0)}")
# 简单计算测试
try:
x = torch.rand(5, 3).to('cuda')
y = torch.rand(5, 3).to('cuda')
z = torch.matmul(x, y.T)
print("✅ 矩阵乘法测试通过,GPU 计算正常!")
return True
except Exception as e:
print(f"❌ 计算测试失败:{e}")
return False
if __name__ == "__main__":
verify_rocm()
运行结果显示设备名称且无报错,才算真正大功告成。ROCm 的搭建过程虽然有些琐碎,尤其是权限和内核模块的配合需要细心对待,但一旦跑通,AMD GPU 在大模型推理上的性价比优势是非常明显的。希望这份避坑指南能让你的一次性成功率大幅提升。
更多推荐


所有评论(0)