ubuntu20.04安装rocm教程,AMD深度学习,6800xt配置pytorch、CUDA
ROCm安装配置踩坑
- 遇到的问题
- 安装ubuntu系统更新内核,但是在win和Ubuntu双系统的前提下(可能)导致内核更新不成功,我安装成功的内核是5.13.39.
- 内核更新不成功的原因是自己在安装ubuntu系统时没有手动分区,直接清空磁盘安装,所以安装系统时还是手动分区
- 关闭bios安全启动,并设置ubuntu的启动引导为第一引导
- navi6800xt(gfx1030)显卡安装5.0及以上
- rocm5.0以上是支持了navi显卡,如果是上一代的卡,可以装4.5这个版本系列,因为torch官网就有编译好的pytorch版本,可以直接安装到本地环境而不需要docker镜像
- 安装后重启
ROCm安装
此版本为5.1.0
sudo apt update && sudo apt dist-upgrade
sudo apt-get install wget gnupg2
sudo usermod -a -G video $LOGNAME
echo 'ADD_EXTRA_GROUPS=1' | sudo tee -a /etc/adduser.conf
echo 'EXTRA_GROUPS=video' | sudo tee -a /etc/adduser.conf
echo 'EXTRA_GROUPS=render' | sudo tee -a /etc/adduser.conf
sudo wget https://repo.radeon.com/amdgpu-install/22.10/ubuntu/focal/amdgpu-install_22.10.50100-1_all.deb
sudo apt-get install ./amdgpu-install_22.10.50100-1_all.deb
sudo amdgpu-install --usecase=dkms
amdgpu-install -y --usecase=rocm
配置环境和权限
sudo usermod -a -G video $LOGNAME
sudo usermod -a -G render $LOGNAME
echo 'ADD_EXTRA_GROUPS=1' | sudo tee -a /etc/adduser.conf
echo 'EXTRA_GROUPS=video' | sudo tee -a /etc/adduser.conf
echo 'EXTRA_GROUPS=render' | sudo tee -a /etc/adduser.conf
echo 'export PATH=$PATH:/opt/rocm/bin:/opt/rocm/profiler/bin:/opt/rocm/opencl/bin' | sudo tee -a /etc/profile.d/rocm.sh
验证
# 显示gpu信息
rocm-smi
# 两项都显示gpu信息
/opt/rocm/bin/rocminfo
/opt/rocm/opencl/bin/clinfo
接下来就是如何使用rocm进行显卡运算加速了,有两种方式,推荐方式1
方式一,docker容器运行
首先按以下教程安装docker,教程里推荐使用阿里云的分支
docker安装
安装后下载pytorch或者tensorflow的镜像,这两个镜像里面都装好了torch或者tf,所以进去就可以直接用,好像是rocm5.0以上才支持navi显卡,所以推荐navi显卡用这个方法,因为torch官网编译好的版本最新支持到rocm4.5.2,所以你的显卡要是支持,就可以区torch官网选择你的版本,他会给你pip命令,这样你就可以安装到本地环境而不需要docker容器的远程环境。
安装完docker就可以下载镜像了,需要哪个下哪个,这两个镜像一个(解压后)27g,一个22g,docker默认安装到根目录下的相关文件夹中,所以安装ubuntu时需要指定/
的大小要大一点
下载Pytorch和TersonFlow镜像
sudo docker pull rocm/pytorch:latest
sudo docker pull rocm/tensorflow:latest
下载完之后可以使用 docker images
查看已下载的镜像,第四个就是
创建Pytorch或者TensorFlow容器
这里可以把--rm
删除,保存容器,以后直接使用docker start pytorch
启动容器,再用docker attach pytorch
进入容器,进入之后直接运行包含调用cuda的代码就可以。
# 如果下载的是pytorch的镜像就用这个命令
sudo docker run -it -v $HOME:/data --privileged --rm --device=/dev/kfd --device=/dev/dri --group-add video --name pytorch rocm/pytorch:latest
#如果是tensorflow就用这个命令
sudo docker run -it -v $HOME:/data --privileged --rm --device=/dev/kfd --device=/dev/dri --group-add video rocm/tensorflow:latest
如果是会用docker的到这里教程基本就结束了。如果不会用docker接着往下看。
上述命令运行完会直接进入创建好的容器,可以按ctrl+p+q
先暂时退出,打开vscode,vscode安装的话就自己百度了,在插件市场搜索remote-containers
安装
安装完之后点vscode左下角的
选择Attach to Running Container
之后会弹出来一个新窗口,这样就可以在ide上开发了。注意:vscode连接container后默认不启用一部分插件,所以你需要自己安装python等的支持插件
验证没有问题
运行rocm的官方示例
还有一个方法是不用vscode,可以进入容器内配置jupyter notebook 远程连接,方法自行百度,在映射了路径的前提下,容器内开启jupyter服务,可以在ubuntu本地浏览器运行jypyter笔记本,并且实现文件的同步。
方式二
或者直接新建一个新的环境,根据文章开始提供的下载的torch版本决定,下载安装至本地的python环境。此方法适用于不熟悉docker且rocm版本是4.5.2以下的
import torch
torch.cuda.is_available()
# output = True 即可以调用gpu
此方法目前只支持rocm4.5(应该),在文章最开始提供的torch下载页面,进去搜索rocm,可以看到支持的版本
其他版本目前还不太行,需要build自己显卡的pytorch版本,我尝试了几次编译失败,就直接用docker容器了,安装后虽然显示cuda.is_available()
是True
,但是运行训练会报HIP编译错误,如果你是这方面的大佬的话,可以去官方文档的深度学习板块有git官方的torch源码进行编译的方法,我反正失败了,如果有人能编译成功也发我一下方法哈哈哈。