LoginSignup
7
3

More than 5 years have passed since last update.

ROCm TensorFlow 1.10 を pip でインストールし動かす(CIFAR10 10500 example/sec with VEGA56 @ 70W)

Last updated at Posted at 2018-09-27

漢なら ROCm TensorFlow で AMD GPU でお手軽機械学習したいですよね!

やりましょう!

ROCm 版 TensorFlow が 1.9 から pip で入るようになり, ソースコードからビルドせずに済むようになりセットアップがお手軽になりました.
(2018 年 9 月 26 日時点では 1.10 が最新です. ちなみにソースコードビルドは HIPCC でのカーネルコンパイルが激重なので 8 コアマシンでもコンパイルに 1 時間くらいかかります)

環境

  • Python 3.5(conda)
  • Ubuntu 16.04
  • ROCm 1.9

インストール

を参考に pip でインストールします.

$ pip3 install tensorflow-rocm

他に rocm 関連のパッケージを入れておかないとエラーになりますので, 適宜インストールしておきます.

問題

すでに古い ROCm 環境があり, それを apt update でアップデートしていると(2018 年 9 月 27 日 1.9 最新), 実行時にエラーがでます

/opt/rocm/bin/clang-ocl の実行で失敗してしまいました.

/opt/rocm/bin/clang-ocl が 4.0 ベースなのでそれが原因かなと思いましたが, そうでもなさそうでした.
いろいろ試行錯誤しましたが, 結局は一度 rocm 周りのパッケージをアンインストールし, 再インストールすることで解決しました.
(とくに rocm-clang-ocl, rocm-dev 周りを再インストールするとよさそうです)

学習させてみる.

rocm-smi で powerlimit した VEGA で 10500 example/sec @ 70W でました.
ありがとうございます.

2018-09-27 17:26:49.407868: step 760, loss = 2.76 (10613.8 examples/sec; 0.012 sec/batch)
2018-09-27 17:26:49.529923: step 770, loss = 2.92 (10487.1 examples/sec; 0.012 sec/batch)
2018-09-27 17:26:49.651210: step 780, loss = 3.02 (10553.4 examples/sec; 0.012 sec/batch)
2018-09-27 17:26:49.770673: step 790, loss = 2.68 (10714.7 examples/sec; 0.012 sec/batch)
2018-09-27 17:26:50.036888: step 800, loss = 2.65 (4808.1 examples/sec; 0.027 sec/batch)
2018-09-27 17:26:50.177454: step 810, loss = 2.57 (9106.1 examples/sec; 0.014 sec/batch)
2018-09-27 17:26:50.301198: step 820, loss = 2.65 (10343.9 examples/sec; 0.012 sec/batch)
2018-09-27 17:26:50.423603: step 830, loss = 2.56 (10457.1 examples/sec; 0.012 sec/batch)
2018-09-27 17:26:50.545656: step 840, loss = 2.71 (10487.3 examples/sec; 0.012 sec/batch)
2018-09-27 17:26:50.667657: step 850, loss = 2.67 (10491.7 examples/sec; 0.012 sec/batch)

https://qiita.com/syoyo/items/4a9c3e17969757ab5422
(この時に比べると, 今回はより一段 powerlimit しているので, 性能および消費電力は下がっています)

Multi GPU で学習させてみる

VEGA56 x 2 マシンで, multi gpu で train させてみます.

$ python cifar10_multi_gpu_train.py --num_gpus 2
...
2018-09-27 17:29:08.279953: step 850, loss = 2.46 (10747.8 examples/sec; 0.012 sec/batch)
2018-09-27 17:29:08.515126: step 860, loss = 2.54 (12189.3 examples/sec; 0.011 sec/batch)
2018-09-27 17:29:08.743001: step 870, loss = 2.51 (12183.3 examples/sec; 0.011 sec/batch)
2018-09-27 17:29:08.978603: step 880, loss = 2.48 (11522.1 examples/sec; 0.011 sec/batch)
2018-09-27 17:29:09.212675: step 890, loss = 2.31 (9640.6 examples/sec; 0.013 sec/batch)
2018-09-27 17:29:09.443209: step 900, loss = 2.31 (10924.3 examples/sec; 0.012 sec/batch)
2018-09-27 17:29:09.877480: step 910, loss = 2.33 (9057.1 examples/sec; 0.014 sec/batch)
2018-09-27 17:29:10.095742: step 920, loss = 2.49 (10323.9 examples/sec; 0.012 sec/batch)
2018-09-27 17:29:10.304525: step 930, loss = 2.39 (14770.1 examples/sec; 0.009 sec/batch)
2018-09-27 17:29:10.543152: step 940, loss = 2.30 (9138.4 examples/sec; 0.014 sec/batch)
2018-09-27 17:29:10.770725: step 950, loss = 2.39 (10940.6 examples/sec; 0.012 sec/batch)
2018-09-27 17:29:11.008373: step 960, loss = 2.23 (11419.9 examples/sec; 0.011 sec/batch)
2018-09-27 17:29:11.240093: step 970, loss = 2.50 (10688.7 examples/sec; 0.012 sec/batch)
2018-09-27 17:29:11.476931: step 980, loss = 2.58 (10522.3 examples/sec; 0.012 sec/batch)
2018-09-27 17:29:11.701987: step 990, loss = 2.39 (12594.5 examples/sec; 0.010 sec/batch)
2018-09-27 17:29:11.937152: step 1000, loss = 2.36 (9670.3 examples/sec; 0.013 sec/batch)
2018-09-27 17:29:12.412415: step 1010, loss = 2.34 (11320.1 examples/sec; 0.011 sec/batch

15000 examples/sec が出るときがありますが, 総じて 11000 ~ 12000 くらいと, 10 ~ 20% くらいの性能向上でしょうか. host CPU が貧弱 + host memory 4 GB なので, CPU or メモリがボトルネックという可能性もありそうです.

まだまだ課題はありますが, AMDGPU で TensorFlow で機械学習させるスキームが整いつつある予感がありますね.

tacotron は動かない

keithito Tacotron

を動かそうとしましたが, rocFFT が complex float/double に対応していないため, エラーになって動きませんでした. 音声処理周りはしばらく様子見ですね...

(2018/11/30 追記): ROCm 1.9.2 + rocm tesnsorflow 1.12 で推論デモが動作するのを確認しました. ただ, 結果がおかしいような...? 

TODO

  • CIFAR10 以外で学習がうまくいくか試す.
  • Threadripper 2990WX + VEGA 4 枚差しで multi gpu train を試したい.
  • 優秀な TensorFlow 若人さまが, 人類史上最速で優秀な ROCm TensorFlow 若人さまへと昇華なされるスキームを確立したい
7
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
3