Rocm-TensorFlowでRadeon用に機械学習のための環境を整える時のメモ
1.1導入
普段グラボと言われると我々の多くはゲームを連想するだろう。
しかし今回はそれを一般的な用途(General Purpose)で使うのである。
(まぁGPGPUのGPってこれのことだし)
今回はRadeonを使うよ
1.2 今回この記事の内容を行った環境
CPU:Ryzen5 1400
GPU:RadeonRX580
RAM:32GB
OS:Ubuntu18.04
CFXしながらUbuntu18.04を使う場合はデスクトップにたどり着けない もしくはフリーズするというバグが現在確認されているため
まずは一枚刺し状態でUbuntu18.04をインストールしてその後
sudo add-apt-repository ppa:danielrichter2007/grub-customizer
sudo apt update
sudo apt-get install grub-customizer
その後Grub-Customizerを起動しカーネルパラメータの部分を
iommu=soft
にすれば普通に起動できるようになる。
CFXするための二枚目のグラボはこれらの操作が終わるまで刺してはいけない
2.1 手順1:TensorFlowを入れる
とりあえず入れてみる.
ターミナルにて
sudo apt update
sudo apt dist-upgrade
sudo apt install libnuma-dev
sudo reboot
再起動したあと
wget -qO - 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 tee /etc/apt/sources.list.d/rocm.list
sudo apt update
sudo apt install rocm-dkms
sudo usermod -a -G video $LOGNAME
/opt/rocm/bin/rocminfo
/opt/rocm/opencl/bin/x86_64/clinfo iommu=soft
と入力。インストールにはかなり時間がかかる。
その後
python3
を起動し
>> import tensorflow as tf
と入力。
すると
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/tensorflow/__init__.py", line 24, in <module>
from tensorflow.python import *
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/__init__.py", line 49, in <module>
from tensorflow.python import pywrap_tensorflow
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/pywrap_tensorflow.py", line 52, in <module>
raise ImportError(msg)
ImportError: Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/pywrap_tensorflow.py", line 41, in <module>
from tensorflow.python.pywrap_tensorflow_internal import *
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 28, in <module>
_pywrap_tensorflow_internal = swig_import_helper()
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 24, in swig_import_helper
_mod = imp.load_module('_pywrap_tensorflow_internal', fp, pathname, description)
ImportError: libCXLActivityLogger.so: cannot open shared object file: No such file or directory
というエラー結果またはそれに類するものが帰ってくる。
2.2 手順2:エラーを治す
このままじゃ動かないのでターミナルにて
sudo apt-get install cxlactivitylogger
sudo apt-get update && \
sudo apt-get 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 \
rocm-profiler cxlactivitylogger \
miopen-hip miopengemm
と入力
その後
python3
pip3 install tensorflow-rocm
pip3 install opencv-python
pip3 install matplotlib
と必要なものをpipでインストールしていく。
これで必要なものはすべて揃った。
3.1 結果
一度ターミナルを閉じてまた開き
python3
と入力、その後
>>import tensorflow
でエラーが出なければ
>>tensorflow.Session()
と入力
2019-04-17 01:33:08.849779: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1531] Found device 0 with properties:
name: Ellesmere [Radeon RX 470/480/570/570X/580/580X]
AMDGPU ISA: gfx803
memoryClockRate (GHz) 1.34
pciBusID 0000:1c:00.0
Total memory: 8.00GiB
Free memory: 7.75GiB
2019-04-17 01:33:08.849802: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1642] Adding visible gpu devices: 0
2019-04-17 01:33:08.849873: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1053] Device interconnect StreamExecutor with strength 1 edge matrix:
2019-04-17 01:33:08.849883: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1059] 0
2019-04-17 01:33:08.849888: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1072] 0: N
2019-04-17 01:33:08.849927: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1189] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 7539 MB memory) -> physical GPU (device: 0, name: Ellesmere [Radeon RX 470/480/570/570X/580/580X], pci bus id: 0000:1c:00.0)
<tensorflow.python.client.session.Session object at 0x7f26dda50cf8>
という出力が得られれば勝利である。
CUDAのときより楽に感じる。みんなAMDは良いからAMDを買え。
もし変なエラーや抜けてる部分や要望があったらツイッター(@TDU_ML_AI)でリプなりDMなりで指摘していただければありがたい。