この記事は@kjunichiの2017年パーソナルアドベントカレンダーの24日目の記事です 。
背景
という記事を目にして、以前、別の場所で見て気になっていた画像処理関係の論文の実装を扱っている記事だと分かり読んでみました。
どうやらpytorchというTensorflowみたいなのがベースになっており、 このリポジトリに立っているissue見るとWindowsでもCUDAを使って動かせるような記述があったので、 Windows10を動かしてNVIDIAのGPUが載っている自作PCで動かせそうだったので試してみた。
準備
Python3
Anacondaをインストールしており、これを使用して進めた。
conda create -n pttest python=3.6 activate pttest
として、環境を用意。以降この環境で作業した。
玄人志向 NVIDIA GeForce RTX 2080Ti 搭載 グラフィックボード 11GB GALAKUROモデル GK-RTX2080Ti-E11GB/WHITE2
- 出版社/メーカー: 玄人志向
- 発売日: 2019/01/18
- メディア: Personal Computers
- この商品を含むブログを見る
玄人志向 NVIDIA GeForce RTX 2080 搭載 グラフィックボード 8GB GALAKUROモデル GK-RTX2080-E8GB/WHITE2
- 出版社/メーカー: 玄人志向
- 発売日: 2019/01/30
- メディア: Personal Computers
- この商品を含むブログを見る
Windows版のpytorchのインストール
conda install -c peterjc123 pytorch
これで、今回使うcycleGANで使用している2.x系のpytorchがインストールされた。
その後、 pytorch-CycleGAN-and-pix2pixの公式READMEに従って、pytorchの他に必要なライブラリをインストール
git clone https://github.com/pytorch/vision cd vision python setup.py install pip install visdom pip install dominate git clone https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix cd pytorch-CycleGAN-and-pix2pix
データの入手
WSL大活躍、ubuntu入れて、そこで/mnt/c/..で作業しているディレクトリまで移動して、 公式のシェルスクリプトを実行。 (sudo apt-get unzipが必要だった)
cd /mnt/c/hoge/fuga/pytorch-CycleGAN-and-pix2pix bash ./datasets/download_cyclegan_dataset.sh maps
これで、必要なデータのDLが行えた。WSLさまさまでした。 (その後、map以外のサンプルukiyoe2photoを試したら、zip展開後のファイル名にWindowsでは問題のある文字が使われているようで、 macOSで展開して、そこからリモートコピーすることで、取得できた)
うごかす
Windowsでの対応が必要だった。
Windows版の説明にちらっと書いてはあったが、意味が分からなかったが動かして分かった。
学習データの読み込み処理などをマルチプロセスで実行して処理速度を稼ぐようだが、 Windows版ではこれを無効にしないとだめらしい。そのための修正が以下
train.pyの修正
from util.visualizer import Visualizer if __name__ == '__main__': # この一行を入れて、次行以降のインデントを下げる
test.pyの修正
from util import html if __name__ == '__main__': # この一行を入れて、次行以降のインデントを下げる
玄人志向 NVIDIA GeForce GTX 1650 搭載 グラフィックボード 4GB デュアルファン GF-GTX1650-E4GB/OC/DF
- 出版社/メーカー: 玄人志向
- 発売日: 2019/04/23
- メディア: Personal Computers
- この商品を含むブログを見る
実行
python train.py --dataroot ./datasets/maps --name maps_cyclegan --model cycle_gan --no_dropout --loadSize 128 --fineSize 128
多分警告が出るだけとは思うが
動き出すと、ローカルのvisdomのサーバーへのアクセスに失敗したと警告がでてくる。 で、これを解消しようと、
python -m visdom.server
として、visdomのサーバーをたてようとした。 が、
Traceback (most recent call last): File "C:\Users\kjw_j\Anaconda3\envs\pttest\lib\runpy.py", line 193, in _run_module_as_main "__main__", mod_spec) File "C:\Users\kjw_j\Anaconda3\envs\pttest\lib\runpy.py", line 85, in _run_code exec(code, run_globals) File "C:\Users\kjw_j\Anaconda3\envs\pttest\lib\site-packages\visdom\server.py", line 636, in <module> download_scripts() File "C:\Users\kjw_j\Anaconda3\envs\pttest\lib\site-packages\visdom\server.py", line 616, in download_scripts with open(filename, 'wb') as fwrite: OSError: [Errno 22] Invalid argument: 'C:\\Users\\kjunichi\\Anaconda3\\envs\\pttest\\lib\\site-packages\\visdom/static/fonts/glyphicons-halflings-regular.eot?#iefix'
と、エラーが出て動かない。
そこで、再びWSL登場!。 WSLのubuntuにvisdomを入れて、ここで動かしすことで解決した。
GPUを使用せずに動かす
AMD CPU Ryzen 7 2700 with Wraith Spire (LED) cooler YD2700BBAFBOX
- 出版社/メーカー: AMD
- 発売日: 2018/04/19
- メディア: Personal Computers
- この商品を含むブログを見る
INTEL インテル CPU Corei9-9900K INTEL300シリーズChipsetマザーボード対応 BX80684I99900K【BOX】
- 出版社/メーカー: インテル
- 発売日: 2018/11/02
- メディア: Personal Computers
- この商品を含むブログ (1件) を見る
学習中でもGPUを占有しているようで、じつは別のプロセスでGPU資源を利用出来てしまい、 この状態で、学習中のプログラムがGPU資源を掴もうとして、リソース不足になって途中でGPUエラーで 落としてしまいました。
まぁ、そもそも、viscomのサーバーにWebブラウザでアクセスすれば、途中経過が見れるのですが、 当初はその見方が全く分からず、別途test.pyを動かして確認してました。
そんな中、方法を編み出しました。
epochを途中から指定するには
こうして中断してしまった学習の続きをさせる場合、epochを指定することで、 途中から続けてくれる感じでした。
また、意図的にGPU資源を利用せずとも、Windows版のpytorchだからなのか、学習途中で予期せぬエラーが起きて中断することがありました。
まとめ
WSLのおかげで、データのDLと、visdomのサーバーを動かすことが容易に行えた。
TensorflowのmacOSでのGPUサポートが切れてからはWindows生活が加速してるが、今回使ってるpytorchなら、 MacBook ProでもGPU使えるのか気になった。
関連記事
- Windows(MSVC)でmrubyからGPU対応のTensorflowを動かせた
- Tensorflowのclassify_image.pyにElectronでGUIを被せてみた
- Tensorflowのclassify_image.pyをWebアプリ化した
- Raspberry Pi3でTensorflowをビルドして動かした
- 2018年版pytorchによるcycleGANの実装をWindowsで動かした