在 Ubuntu 18.04 上安裝 ROCm 3.3.0 和 TensorFlow

目標

我一直覺得 AMD 出的幾張織女星顯卡很是吸引。 VEGA 56VEGA 64 都是很強勁的計算裝置,和 NVIDIA 2080 Ti 不相上下。 Radeon VII 更是讓我流口水,13.44 TFLOPS FP32 (float) 運算能力(理論值)而且只有 2080 Ti 的一半價錢。

爲了嘗試 AMD 的表現,和依賴庫的穩定性,我買了一張 RX 580 來玩,只花了我100美刀。AMD Radeon RX 580 感覺性價比很高,有 6 TFLOPS 的運算能力。

NVIDIA 的 GPU 就用 CUDA 來跑,那 AMD 怎麼安裝 CUDA 呢?不怕,我們有 ROCm 來替代 CUDA。

前提

對於使用性價比超高的 AMD GPU 來跑模型我已經迫不及待了,不過原來 ROCm 有很多要求,不是隨便哪個舊電腦就可以跑的。

  • 要有比較新的 CPU 支援 PCIe Gen3 和 PCIe Atomics 操作的才行
  • 底板要支援 PCIe 3.0
  • GPU 也要比較新的才行,AMD 說太舊的顯卡性能太差懶得支援了
  • 更新你的 Linux 系統到內核版本 kernel 4.17 以上(如果你用 Windows 就不行了)

支援的 CPU 型號

  • AMD Ryzen CPUs
  • The CPUs in AMD Ryzen APUs
  • AMD Ryzen Threadripper CPUs
  • AMD EPYC CPUs
  • Intel Xeon E7 v3 或以上
  • Intel Xeon E5 v3 或以上
  • Intel Xeon E3 v3 或以上
  • Intel Core i7 v4 或以上 (i.e. 要 Haswell 或更新的架構)
  • Intel Core i5 v4 或以上
  • Intel Core i3 v4 或以上
  • 某些 Ivy Bridge-E systems

原文鏈接

我也不知道 “某些 Ivy Bridge-E systems” 是哪些,有需要的話請前往提問。他們說有限度支援某些舊 CPU 和 GPU,不過最好就不要自尋短見了,除非你想幫忙搞底層代碼來支援那些硬件。

支援的 GPU 型號

  • GFX8 GPUs
    • “Fiji” 晶片,例如 AMD Radeon R9 Fury X 和 Radeon Instinct MI8
    • “Polaris 10” 晶片,例如 AMD Radeon RX 580 和 Radeon Instinct MI6
  • GFX9 GPUs
    • “Vega 10” 晶片,例如 AMD Radeon RX Vega 64 和 Radeon Instinct MI25
    • “Vega 7nm” 晶片,例如 Radeon Instinct MI50, Radeon Instinct MI60 和 AMD Radeon VII

參考 原文. 有些 GFX8 和 GFX7 系列的 GPU 碰巧可以支援,不過如果出問題的話,也沒人可以幫你解決了。順帶一提我的 RX 580 後來發現 Pytorch 不支援了,嫌棄我的 GPU 舊。.

安裝 ROCm

我的配置

  • i5-4570 CPU
  • RX 580 GPU
  • Ubuntu Server 18.04.

官方的教學 可以直接用,除非你想用 Pytorch,那可能有幾個不起眼的地方官方忘記提醒你要注意。可以汲取我的教訓避免再入坑。

前期準備

如果你安裝 Pytorch 就要記一下你選的 ROCm 版本,我裝 ROCm 3.3.0。

先更新系統,然後安裝 libnuma-dev 然後重啓

1
2
3
4
5
6
7
$ sudo apt update

$ sudo apt dist-upgrade

$ sudo apt install libnuma-dev

$ sudo reboot

安裝 ROCm

將 ROCm 的下載位置加入到系統的軟件包管理當中

1
2
3
$ wget -q -O - http://repo.radeon.com/rocm/apt/debian/rocm.gpg.key | sudo apt-key add -

$ echo 'deb [arch=amd64] http://repo.radeon.com/rocm/apt/debian/ xenial main' | sudo te

然後用系統的軟件包管理自動安裝

1
2
3
$ sudo apt update

$ sudo apt install rocm-dkms

安裝善後

記得幫你自己的用戶加入 GPU 的操作權限

1
$ sudo usermod -a -G video $LOGNAME

如果你要考慮再加其他用戶就請去複製官方文檔的指令

然後重啓系統

1
$ sudo reboot

測試安裝及啓用

測試 ROCm 的安裝

1
2
$ /opt/rocm/bin/rocminfo
$ /opt/rocm/opencl/bin/x86_64/clinfo

你應該會看到一些類似報告表格的東西,那就說明安裝成功了。

接下來將 ROCm 植入系統的環境 PATH 當中讓其他程序可以找得到它

1
2
$ echo 'export PATH=$PATH:/opt/rocm/bin:/opt/rocm/profiler/bin:/opt/rocm/opencl/bin/x86_64' |
> sudo tee -a /etc/profile.d/rocm.sh

安裝 TensorFlow

這個很簡單,只有兩步,不過現在好像默認安裝 2.0 以上最新版本,如果你要安裝其他版本要自己指定版本,不會的話去問問谷歌pip安裝如何指定版本參考原文說明書

1
2
3
4
5
6
7
$ sudo apt update

$ sudo apt install rocm-libs miopen-hip cxlactivitylogger rccl

$ sudo apt install wget python3-pip

$ pip3 install --user tensorflow-rocm

現在 TensorFlow 2 應該是已經成功安裝了!可喜可賀 (^_^)b