なんとなく日誌

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

RX470で機械学習ことはじめ その6 ~Dockerを使ってTensorFlow~

Dockerというものが便利らしい

Dockerを使えば、さまざまな環境をコマンド一発で用意できるらしい。
しかも自分で用意しなくても、DockerHubというところにいろんな環境が用意されているらしい。
これを使えば楽なのでは?と思って試してみたが、特にそうでもなかった記録。
複数の環境を用意したり、同じ環境をいくつも準備したいというわけでもなければ特にDockerを使う必要はなさそう。
noroue4.hatenablog.com

Dockerのインストール

使用OSはUbuntu18.04。
Dockerの公式リポジトリを登録してそこからインストールする方法もあるが、Ubuntuではデフォルトでaptからインストールできる。

	sudo apt install docker.io

インストールできたかどうかを確認するには、

	sudo docker run hello-world

と打って情報が表示されたらオッケー。

Dockerイメージのダウンロードと実行

使いたいDockerのイメージを探すには、DockerHubのページで検索するか、

	sudo docker search イメージ名

でも調べることができる。
今回は、「rocm/tensorflow」を試してみる。
かなり容量が大きく、5GBほどあるのでダウンロードに時間がかかる。

	sudo docker pull rocm/tensorflow

ダウンロードが終わったら

	sudo docker run -it rocm/tensorflow

で実行できる。(-itオプションを付けると、Docker内の標準入力が表示されるのでそのままコマンドが打てるようになる)
お?動いてる?と思うが、TensorFlowのMNISTを試しに動かすとエラーが出る。

f:id:noroUE4:20190208153229p:plain
MNISTのエラー
rocminfoも動かない。
どうやら、

  • 結局、ROCm(rocm-kdms)はホスト側のUbuntuにインストールしておかないといけない

(Docker内ではrocm-dkmsはインストールできなかった)

  • Dockerの実行時に、権限オプションをつけないとGPUにアクセスできないらしい

ということで、先日の記事を参考にrocm-dkmsをインストールした上で、

	sudo docker run -it --device=/dev/kfd --device=/dev/dri --group-add video rocm/tensorflow

と実行することで、rocminfoも表示されるようになるしMNISTも実行できるようになる。
Dockerをインストールする分だけ手間がかかるし、普通にROCm環境を作るのとほぼやる必要があることは変わらないので、個人で試す限りではあんまり使う意味がなかった。残念。
仕事で使ってて環境を分けたい、とか複数のPCに同じ環境を展開したい、というような必要がなければDockerに手を出す必要はないんじゃないかな。


参考図書

AMDGPU で『もっと』深層学習をはじめよう 著:一条和城
https://utatane-i-k.booth.pm/items/1042047utatane-i-k.booth.pm
DockerHubのrocm/rocm-terminalの解説
https://hub.docker.com/r/rocm/rocm-terminal/