はじめに
AMD GPUでTensorFlow 1.xを使いたかったので、ROCm入れて動かしてみました。
いろいろ試行錯誤したのでメモを残します。
環境
- OS: Ubuntu 18.04 LTS
- GPU: Radeon RX 560
入れたもの
- ROCm: v3.5.0
- tensorflow-rocm: v1.15.4
作業記録
目的は「AMD GPUしかないけどTensorFlow 1系を動かしたい」です。
使いたいライブラリがTensorFlow 2系に対応していなかったため、1系縛りです。
AMDなのでCUDAは使えず、代わりにROCmを使うことにします。
(PlaidMLなるものも見かけましたが、そちらはkerasのコードじゃないと動かせなさそうだったので今回は却下)
ROCmを使うにはUbuntu環境が必要とのこと。
DockerやVirtual Boxでできないかなと思ったけど、仮想環境からだとGPUを認識できなかったのでちゃんとUbuntu環境を用意します。
日本語RemixだとROCmが正常に動かないみたいな情報をちらっと見たので以下から通常版の18.04 LTSを準備。
ubuntu-18.04.4-desktop-amd64.isoを使う。
ROCmをインストール
基本的に、公式のインストールガイドに従えばOK。
v3.5.0が入った。
tensorflow-rocmをインストール
以下などを参考に作業。
python-devを入れる。
sudo apt install python3-dev
その他必要な諸々を入れる。
sudo apt update && \
sudo apt install -y --allow-unauthenticated \
rocm-dkms rocm-dev rocm-libs \
rocm-device-libs \
hsa-ext-rocr-dev hsakmt-roct-dev hsa-rocr-dev \
rocm-opencl rocm-opencl-dev \
rocm-utils \
miopen-hip miopengemm rccl
(参考URLにあるrocm-profilerとcxlactivityloggerの2つはパッケージが見つからないと言われて入れられなかったが、特に問題なさそう。rcclは追加。)
venvで仮想環境を作成しておいた。
tensorflow-rocm1.5はPython3.7までにしか対応していなさそうなので、今回はPython3.6環境をそのまま使っている。
作業ディレクトリで以下コマンドを実行して仮想環境を作成。
python3 -m venv venv
# . venv/bin/activate (有効化)
はじめ、tensorflow-rocm1.15.0を入れてみたところ、パッケージのimport時にImportError: libmcwamp.so: cannot open shared object file: No such file or directory
なるエラーに遭遇。
調べたところ、ROCmとtensorflow-rocmとの間のバージョン互換性の問題らしい( https://github.com/RadeonOpenCompute/ROCm/issues/1126 )。
互換性の一覧表を参考に、今回はROCm3.5に対応しているtensorflow-rocm1.15.4を入れ直した。
pip install --upgrade pip
pip install tensorflow-rocm==1.15.4
結果
以上で、今のところはちゃんと動いているように見えています。