東京電機大学人工知能同好会HP

東京電機大学人工知能同好会のHPです。

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.849209: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMA
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なりで指摘していただければありがたい。