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なりで指摘していただければありがたい。
TensorFlow-GPUをCUDAで使えるようにするときのメモ
1.1 導入
普段グラボと言われると我々の多くはゲームを連想するだろう。
しかし今回はそれを一般的な用途(General Purpose)で使うのである。
(まぁGPGPUのGPってこれのことだし)
1.2 今回この記事の内容を行った環境
CPU:Ryzen5 1400
GPU:GTX1060
RAM:16GB
OS:Ubuntu16.04
2.1 手順1:CUDAを入れる
とりあえず動かないのは承知で入れてみる.
ターミナルにて
pip3 install tensorflow-gpu
その後
python3
を起動し
>> import tensorflow as tf
と入力。 すると
ImportError: libcublas.so.10.0: cannot open shared object file:
という結果またはそれに類するものが帰ってくる。
このlibcublas.so.〜
のあとに続く数字の部分(今回はlibcublas.so.10.0
なので10.0)
が今回インストールするのに必要なCUDAのバージョンである。
次にここ
から必要なバージョンのCUDAをダウンロードする。
基本的にTensorFlowが出たばかりの最新版のCUDAを使用することは少ないため
右側にあるLegacy Releasesの部分から該当のバージョンを探しだしてダウンロードする。
CUDA Toolkit 10.0 Archive を選択し
Operating System > Linux
Architecture > x86_64
Distribution > Ubuntu
Version > 16.04
Installer Type > deb[local]
をそれぞれ選択してダウンロード あとは
Installation Instructions: | |
に従えばOK 多分うまく行く
2.2 手順2:CuDnnを入れる
まだこのままじゃ動かない
次に
https://developer.nvidia.com/rdp/cudnn-download
からcuDNNをダウンロードする。
これにはアカウントが必要なので各自作ってやってほしい。
CUDAのバージョンにあった部分をクリック(今回はDownload cuDNN v7.5.0 (Feb 21, 2019), for CUDA 10.0)して
cuDNN Runtime Library for Ubuntu16.04 (Deb)
cuDNN Developer Library for Ubuntu16.04 (Deb)
cuDNN Code Samples and User Guide for Ubuntu16.04 (Deb)
の3つをダウンロードしてインストールする。
インストールする順番はRuntime→Developer→CodeSamplesでないとエラーが出る。
2.3 手順3:仕上げ
homeディレクトリの隠しファイルに.bashrc と.profile という設定ファイルがある。
これらを開いて中身の最後に
export PATH="/usr/local/cuda/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"
をそれぞれ書き込む。
3.1 結果
ターミナルで
python3
と入力、その後
>>import tensorflow
でエラーが出なければ
>>tensorflow.Session()
と入力、すると
2019-04-04 00:58:16.697057: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
2019-04-04 00:58:16.856579: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:998] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2019-04-04 00:58:16.857726: I tensorflow/compiler/xla/service/service.cc:150] XLA service 0x56fbb20 executing computations on platform CUDA. Devices:
2019-04-04 00:58:16.857749: I tensorflow/compiler/xla/service/service.cc:158] StreamExecutor device (0): GeForce GTX 1060 6GB, Compute Capability 6.1
2019-04-04 00:58:16.892815: I tensorflow/core/platform/profile_utils/cpu_utils.cc:94] CPU Frequency: 3193620000 Hz
2019-04-04 00:58:16.893704: I tensorflow/compiler/xla/service/service.cc:150] XLA service 0x5765840 executing computations on platform Host. Devices:
2019-04-04 00:58:16.893781: I tensorflow/compiler/xla/service/service.cc:158] StreamExecutor device (0):
という出力が得られる。
もし変なエラーや抜けてる部分や要望があったらツイッター(@TDU_ML_AI)でリプなりDMなりで指摘していただければありがたい。