GPUのカタログスペック(TFLOPS)と学習時間の関係(chainerのMNISTサンプルからの考察)

趣旨

GPUを交換した場合の学習時間の変化を試算したい。
今回は学習時間の試算を行う指標とするため、chainerのMNIST学習サンプルプログラムを使用して学習時間を求めた。

以下プログラムのtrain_mnist.pyを使用。
chainer/examples/mnist at master · pfnet/chainer · GitHub


学習結果(時間)

手持ちのCPU,GPUを使って学習させた結果を以下に示す。

GPU(CPU) 理論上のFLOPS(TFLOPS) サンプルプログラム計算時間(min)
core i7 4720 0.23 11
tx1 0.5 5.583333333
gtx970M 2.657 1.583333333
gtx960 3.213 1.5
gtx1070 6.5 1.4

f:id:t_nkb:20160930092112p:plain

考察

2.5TFLOPS程度まではGPUカタログスペックと計算時間は反比例しているが、それ以降はGPUカタログスペックが上がっても計算時間は頭打ち。
→頭打ちしているGPUの使用率を見ると100パーセント全てを使い切っていない。
このことから、GPUメモリへの画像のロード時間がボトルネックになっていると考えられる。

結果からの知見

高速なGPUから低速なGPUに移行する場合:

TFLOPSと計算時間が反比例すると仮定して処理時間を検討することが可能。
実際の処理速度は、検討よりも早くなることはあっても、遅くなることはない。

注)検証時に、使用しているGPUメモリ量を確認しておくこと。

低速なGPUから高速なGPUに移行する場合:

TFLOPSと計算時間が反比例すると仮定して処理時間を検討すると危険。
どこかでメモリの読み出し速度がボトルネックとなって速度が頭打ちになる可能性がある。

AI

detection時の計算時間も測定して評価しておく必要あり。