Windowsで安定して使用できるv1.24を使用していましたが、Chainer v2.0でパフォーマンスが向上するということなので、アップデートしました。
v1.24用のコードに一部修正が発生しましたが、軽微な修正で対応できました。
環境準備
以前の日記を参照してください。
アップデート手順
v1.24をアンインストールして、インストールし直す。
pip uninstall chainer pip install chainer --no-cache-dir
GPUを使用する場合は、cupyを追加でインストールする。
pip install cupy
MNISTサンプルの実行
git clone https://github.com/pfnet/chainer.git cd chainer python examples\mnist\train_mnist.py -g 0
成功すれば、以下のように表示される。
H:\src\chainer>python examples\mnist\train_mnist.py -g 0 GPU: 0 # unit: 1000 # Minibatch-size: 100 # epoch: 20 epoch main/loss validation/main/loss main/accuracy validation/main/accuracy elapsed_time 1 0.192455 0.0952584 0.942016 0.9691 41.9665 2 0.0766379 0.0824858 0.975816 0.9736 44.3679 3 0.0475103 0.0777052 0.984365 0.9759 46.7663 4 0.0350414 0.0709947 0.988666 0.9795 49.1532 5 0.0306068 0.0739683 0.990015 0.9812 51.5701 6 0.0223621 0.082753 0.992615 0.9787 53.9638 7 0.0204088 0.07966 0.993482 0.9805 56.4207 8 0.0193365 0.074065 0.993732 0.9814 58.8356 9 0.0145758 0.0646451 0.995515 0.985 61.2115 10 0.015124 0.087687 0.995498 0.981 63.6042 11 0.0152862 0.0875953 0.995016 0.9826 65.9779 12 0.0150241 0.0847389 0.995349 0.983 68.3442 13 0.00898874 0.0903441 0.997049 0.9807 70.6993 14 0.0138175 0.124715 0.995916 0.9764 73.0819 15 0.00765957 0.0941705 0.997549 0.9818 75.4683 16 0.0109906 0.116298 0.996966 0.9781 77.8691 17 0.0103545 0.0987549 0.996749 0.9824 80.2834 18 0.0108863 0.127021 0.997149 0.9787 82.7075 19 0.0088669 0.120687 0.997332 0.9792 85.0907 20 0.00868301 0.108154 0.997749 0.9821 87.4538
v1用のコード修正
自分が記述したコードで、対応が必要な個所は以下の通りでした。
trainとtestオプション削除
BatchNormalizationのtestオプションと、dropoutのtrainオプションを削除し、モデル実行時に
with chainer.using_config('train', False):
を使用する。
volatileオプション削除
Variableのvolatileオプションを削除し、モデル実行時に
with chainer.no_backprop_mode():
を使用する。
パフォーマンス測定
v2.0にすることでパフォーマンスが向上するか確認した。
検証している将棋のWide Resnetのモデルの学習時間で比較した。
time(mm:ss) | |
v1.24 | 0:21:01 |
v2.0 | 0:19:53 |
学習時間が5.39%向上した。
また、Windowsで問題なく実行できた。