gpu.7XLM40でChainer
IDCF Cloud Advent Calendar 2016 の12/11が中々埋まらないので個人的に責任(ぇ)をとって埋めておきますね。
IDCFクラウドのGPUインスタンスgpu.7XLM40が搭載しているTesla M40はディープラーニング用とのことなので、前回のエントリに続き、手元にあるJetson TK1と比較してみます。
今回は国産のフレームワークであるChainerを試してみましょう。
前回のエントリの通り、CUDAまで入っている前提で進めます。
まずは、NVIDIA謹製のDeepLearning高速化ライブラリ cuDNN を入れます。
以下からダウンロードします。
以下のようにダウンロードしたファイルをCUDAインストールディレクトリに展開します。
# tar zxf cudnn-8.0-linux-x64-v5.1.tgz -C /usr/local/
次にChainerをpipでインストールします。
# apt install python-dev python-pip -y # pip install chainer
以下のようにMNISTサンプルを動かして時間を比較しましょう。
# wget https://github.com/pfnet/chainer/archive/v1.19.0.tar.gz # tar xzf v1.19.0.tar.gz # python chainer-1.19.0/examples/mnist/train_mnist.py
Jetson TK1の場合、
# python 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.191052 0.0946279 0.942567 0.9685 15.3752 2 0.0759313 0.079524 0.975899 0.974 27.6975 3 0.0477192 0.0753355 0.984999 0.9782 39.9687 4 0.036118 0.0776683 0.988181 0.98 52.2688 5 0.0288793 0.0803554 0.990682 0.9784 64.564 6 0.0237394 0.0802068 0.992365 0.9808 76.8615 7 0.0206044 0.0778168 0.993249 0.9809 89.1331 8 0.0188643 0.0854813 0.993732 0.9793 101.466 9 0.0161048 0.0746344 0.994749 0.9832 113.725 10 0.0121589 0.0872302 0.996382 0.9827 125.995 11 0.0171261 0.0819404 0.994816 0.9819 138.278 12 0.012826 0.109307 0.996232 0.9796 150.613 13 0.00925115 0.107072 0.997199 0.9793 162.971 14 0.0152739 0.0923335 0.995265 0.9823 175.281 15 0.013186 0.106915 0.995599 0.9815 187.636 16 0.00774953 0.0932978 0.997649 0.9833 199.973 17 0.00556501 0.095636 0.998332 0.983 212.293 18 0.0136293 0.102989 0.996166 0.9824 224.661 19 0.0108599 0.0967607 0.997266 0.9819 236.958 20 0.00808728 0.108585 0.997465 0.9811 249.314
gpu.7XLM40の場合、
# python 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.192398 0.103778 0.941517 0.9661 3.31695 2 0.0745933 0.0841857 0.977366 0.9727 6.05998 3 0.0486797 0.074385 0.983998 0.9786 8.80333 4 0.0367712 0.0739067 0.987615 0.978 11.5473 5 0.027089 0.0893926 0.991115 0.9742 14.2486 6 0.0233483 0.0714004 0.992715 0.9805 16.9643 7 0.0221298 0.0675429 0.993066 0.9814 19.6585 8 0.0181648 0.0812684 0.994115 0.9812 22.3716 9 0.0163283 0.108464 0.994815 0.9746 25.0874 10 0.0138237 0.0710016 0.995482 0.9848 27.7974 11 0.0133834 0.0990396 0.995915 0.9791 30.5191 12 0.013658 0.0909462 0.995599 0.9812 33.2338 13 0.0133063 0.0876385 0.995949 0.9827 35.9592 14 0.0093469 0.0917807 0.997065 0.9817 38.6743 15 0.0119297 0.0796671 0.996416 0.9853 41.3877 16 0.0118582 0.10504 0.996482 0.9808 44.1021 17 0.00992382 0.0811633 0.997066 0.9837 46.817 18 0.00825741 0.102598 0.997582 0.9821 49.5329 19 0.00609279 0.0972261 0.998366 0.9819 52.2437 20 0.0118044 0.105861 0.996865 0.9804 54.9529
20epoch回すのに、
Jetson TK1は、249.314sec、
gpu.7XLM40は、54.9529sec、
5倍くらいの差がでました。さすがM40速いといいたいところですが
もっと差が出ても良さそうですが、層が浅いせいかな。
次回は別のDeepLearningのフレームワークで試してみる。