なんとなく日誌

覚え書きとか。twitter:https://twitter.com/noronoroxxxxxx

RX470で機械学習ことはじめ その3 ~ROCmとTensorFlowのインストール~

※2019.8.16追記:ROCmのバージョンが2.7になりましたが、Ubuntu Japanese teamで配布されているUbuntu18.04日本語remixでは正常にtensorflowが動作しません。オリジナルの英語版Ubuntu18.04だと動く模様。

ようやく機械学習に触れる

初心者である自分にとってROCmは分からない言葉だらけで、とても混乱する。
実際にやる作業の難易度は高くないんだけど、ROCmだとかMIOpenだとかHIPだとかROCkだとかOpenCLだとかOpenCVだとか、ああもう何がなんなんだ!という感じ。
単語とコマンドを検索しながら雲をつかむような気持ちで進めている。

AMDGPU機械学習するなら、GPUのドライバは削除しておこう

その1でインストールしたRX470のドライバは使えないどころか、ROCmのインストールの邪魔になる。
ROCmに含まれるドライバとバッティングして面倒なことになるので、ROCmをインストールする前に削除しておこう。
noroue4.hatenablog.com
noroue4.hatenablog.com

ROCmのインストール

ようやくROCmのインストールを始める。
基本的にROCmのGithubページのUbuntu Support - installing from a Debian repositoryに従う。
まず最初に

	sudo apt update
	sudo apt dist-upgrade

でUbuntu18.04を最新の状態にアップデートして、

	sudo apt install libnuma-dev
	sudo reboot

で前提となるパッケージをインストールして、再起動する。

次に、Radeonリポジトリのgpgキーを取得し、登録する。

	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

wgetはダウンロードコマンド。これでgpgキーをダウンロードしてきて、apt-key addコマンドでキーを登録している。
二行目は、リポジトリの定義を保存して、aptコマンドで使えるようにしている。

これで、aptコマンドでRadeonリポジトリサーバからROCm関連のパッケージをインストールすることができるようになったので、ROCmのインストールに取り掛かれる。

	sudo apt update
	sudo apt install rocm-dkms

AMDGPUドライバが先にインストールされていると、ここでエラーになってしまう。あらかじめアンインストールしておこう。

次に、自分のUbuntuログインアカウントがvideoグループに所属していないと権限の問題で操作ができないらしく、所属の変更をする。

	groups

のコマンドで自分のログインアカウント名を確認して、

	sudo usermod -a -G video ログインアカウント名

のコマンドを実行したら、いったん再起動する。
この時点ではvideoグループができていないように見えるが、再起動するとvideoグループが確認できる。

この時点で一応ROCmのインストールは完了していて、

	/opt/rocm/bin/rocminfo 

のコマンドでGPU情報が確認でき、GPUを認識していることが分かる。
RX470はGFX803として認識されている。

f:id:noroUE4:20190205024839p:plain
rocminfo

また、

	/opt/rocm/bin/rocm-smi

のコマンドで、GPUの状態が分かる。
温度・消費電力・ファンの回転数・GPU使用率などが表示される。

f:id:noroUE4:20190205024902p:plain
rocm-smi
現在はもうちょっと更新されていて、VRAM使用量なども確認できる。

PATHを通す

ROCmのインストールが確認できたら、rocm-smiなどのコマンドでフルパスを打つ必要がないように、PATHを通しておこう。
ホームフォルダに「.profile」というファイルがあるので(ドットから始まる隠しファイルなので、lsコマンドに-aオプションを付けないと見えない。ホームフォルダで「ls -a」)

	PATH=$PATH:/opt/rocm/bin:/opt/rocm/profiler/bin:/opt/rocm/opencl/bin/x86_64

を追加する。
ここまででROCm本体のインストールは完了だが、関連ツールがいろいろあるので適宜インストールすることになる。

TensorFlowのインストール

TensorFlowのインストール方法もいくつかあるようだが、最も簡単らしいPIPを使う。
PIPはPythonのパッケージ管理ツールということで、これをインストールするとPIPを使って様々なパッケージをインストールできるようになる。

PIPとPython3のインストール

Python2版とPython3版があるようだが、今回はPython3版を使う。

	sudo apt install python3-pip

これで、一緒にpython3もインストールされるようだ。

TensorFlowのインストール
	pip3 install tensorflow-rocm

これでROCm版のTensorFlowがインストールされる。
問題なくインストールできたら、

	python3

のコマンドでPythonの対話モード(一文ずつ書いて実行する)に入る。
そこで

	import tensorflow

でTensorFlowのPythonパッケージをインポートできるか確認すると、ファイルが足りないというエラーが出るのでいろいろインストールしていく。
いったん

	exit()

のコマンドでPython対話モードを抜けて

	sudo apt install cxlactivitylogger miopen-hip miopengemm rocrand rocfft rocblas rccl

これで、再びPython対話モードで「import tensorflow」を打ち込むとTensorFlowのインポートが成功するはずだ。

機械学習の内容によっては、計算系のライブラリscipyも使うので

	pip3 install scipy

もやっておくといい。

TensorFlowのインストールは完了したが

これで、TensorFlowのサンプルプログラムを拾ってきたら動くはずだ。
仮にtest.pyというファイルであれば、test.pyのあるフォルダで

	python3 test.py

とコマンドを入れると動作する。
試しに、チュートリアルでよく使われるMNISTという数字認識訓練を実行してみたら、動作したようだ。(サンプルプログラムはMNISTでぐぐったらたくさん出てくる)
まだコピペレベルでしか扱えないので、TensorFlowの使い方を勉強したら続きを書く・・・と思う。
それではまた。