AMD GPU 运行torch 显示节点不可用,没有读写权限

178 阅读1分钟

最近在部署一套医疗识别的模型时遇到了torch不可用的情况,原项目运行在nvdiai上,后因业务需要移植至AMD上,刚开始以为是小菜,结果才发现是道主食。torch环境配置没问题,rocm版本也能对的上,运行代码时死活起不来,要不就是加载道CPU上要不就是显存无访问权限。后联系上AMD官方人员也未能解决。 后经过不断尝试,终于解决了。以下为解决问题的流程:

1. 问题描述

使用AMD显卡运行torch训练代码时出现如下报错:

4f801945a96bbda7e6b9fb2825c2801.png

Memory access fault by GPU node-2 (Agent handle: 0x14a2d350) on address (nil). Reason: Write access to a read-only page.  
Aborted (core dumped)

2. 配置环境

GPU:MI210 * 8
rocm: 5.4.2
python:3.8.16
torch :2.0.1+rocm5.4.2
torchaudio :2.0.2+rocm5.4.2
torchtyping:0.1.5
torchvision :0.15.2+rocm5.4.2

3. 前期验证工作

查询相关资料后得知有可能为torch与rocm版本不对应导致 ;

但是在终端使用torch能够获取到可用设备

(py_3.8) root@217f58e52400:~/CT2Rep# python  
Python 3.8.16 (default, Mar  2 2023, 03:21:46)  
[GCC 11.2.0] :: Anaconda, Inc. on linux  
Type "help", "copyright", "credits" or "license" for more information.  
import torch  
torch.cuda.device_count()  
8

经过多轮验证,发现torch始终可用,但就是运行程序时不能将模型加载到GPU上。百思不得其解。 终,查看github issue上问题解答,抱着试试看的心态进行降级torch,将torch从2.0.1降至1.13.1

pip install torch==1.13.1+rocm5.2 torchvision==0.14.1+rocm5.2 torchaudio==0.13.1

降级之后代码成功运行!

报错总结:

  1. rocm版本大部分支持torch向下兼容,个别torch版本需要对rocm版本对应。
  2. 多尝试,说不定哪个就对了