東京電機大学人工知能同好会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なりで指摘していただければありがたい。

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のバージョンである。

 

 次にここ

developer.nvidia.com

から必要なバージョンの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:
  1. `sudo dpkg -i cuda-repo-ubuntu1604-10-0-local-10.0.130-410.48_1.0-1_amd64.deb`
  2. `sudo apt-key add /var/cuda-repo-<version>/7fa2af80.pub`
  3. `sudo apt-get update`
  4. `sudo apt-get install cuda`

 

に従えば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): , 2019-04-04 00:58:16.894359: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1433] Found device 0 with properties: name: GeForce GTX 1060 6GB major: 6 minor: 1 memoryClockRate(GHz): 1.7335 pciBusID: 0000:08:00.0 totalMemory: 5.93GiB freeMemory: 5.46GiB 2019-04-04 00:58:16.894395: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1512] Adding visible gpu devices: 0 2019-04-04 00:58:16.896221: I tensorflow/core/common_runtime/gpu/gpu_device.cc:984] Device interconnect StreamExecutor with strength 1 edge matrix: 2019-04-04 00:58:16.896250: I tensorflow/core/common_runtime/gpu/gpu_device.cc:990] 0 2019-04-04 00:58:16.896262: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1003] 0: N 2019-04-04 00:58:16.896563: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1115] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 5289 MB memory) -> physical GPU (device: 0, name: GeForce GTX 1060 6GB, pci bus id: 0000:08:00.0, compute capability: 6.1)

 

 という出力が得られる。

 

 

 

 

もし変なエラーや抜けてる部分や要望があったらツイッター@TDU_ML_AI)でリプなりDMなりで指摘していただければありがたい。