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源碼進行編譯的方法,我反正失敗了,如果有人能編譯成功也發我一下方法哈哈哈。