春休み到来!
RX 470 8GB マイニングエディションと ROCm TensorFlow で StyleGAN で顔生成を始めよう!
できました.
ねんがんの RX470 8GB mem マイニングエディション + ROCm 2.1 + TensorFlow での StyleGAN の実行に成功したぞ!!!!!! 💪💪💪💪💪🎉🎉🎉🎉🎉🎉🎉🤘🤘🤘🤘😻😻😻😻😻㊗️㊗️㊗️㊗️㊗️🤩🤩🤩🤩🤩🤩🤩☀️☀️☀️☀️😊😊😊😊😊😎😎😎😎😎😎 pic.twitter.com/omZ3gJCEmV
— Syoyo Fujita ⚡️ No ray tracing No life (@syoyo) 2019年2月7日
環境
- Ubuntu 18.04
- ROCm 2.1 + TensorFlow 1.12
- RX 470 8GB マイニングエディション
- Python 3.6+(miniconda)
セットアップ
ROCm TensorFlow を頑張ってインストールしよう!
2019 年 2 月 7 日時点の最新である ROCm 2.1 + MIOpen 1.7.1 で動作確認しました.
StyleGAN のオフィシャル実装は, 型付け機能や typeguard モジュールを使っているため, python 3.6+ が必須です. conda で python 3.6 環境を作っておきましょう.
$ conda create -n stylegan python=3.6
$ source activate stylegan
StyleGAN を動かす.
README にあるように git clone します.
実行する
ROCm TensorFlow 用の修正はありません. そのままで動きます.
$ python pretrained_example.py
でいけます. PIL など module が見つからないエラーが出たら, 適宜 pip install ください.
(PIL については pip install image で一応動きますが, 推奨される方法かしらん?)
/gpu:0 が見つからないエラーが出る場合
ROCm TensorFlow ではなく, 通常の TensorFlow をソースコードからビルドなりして XLA を有効にしている場合は,
/gpu:0
がみつからないエラーが出ますので,
の部分を /job:localhost/replica:0/task:0/device:XLA_GPU:0
あたりに書き換えると動きます.
マイニングしながら動かす.
学習では 12 GB 以上のメモリが必要とありますが, GAN の実行だけであればあまりメモリを使わないようで, マイニング(ethminer)しつつ動かすことができました.
学習を動かす.
ROCm 2.2 + TensorFlow 1.13 で, NVIDIA に比べると 3~5 倍は遅いですが(ROCm は対応していない op/layer があり一部 CPU fallback している?)ですが, 学習が走るのを確認しました(それより以前では無限ループかなにかで学習が進まなかった)
TODO
- ROCm で遅い原因をプロファイラーを使って原因を突き止める.
- StyleGAN で生成された顔を, ブロックチェーン(e.g. ERC721)で管理し, 肖像権管理を行う.