”ニューラルネットワーク自作入門”に記載されているMNISTデータを利用した
画像認識プログラムを元にPyTorchのCPU版とGPU版の処理時間の比較を試みた。
(1)CPU版
訓練に215秒、テストに3.3秒である。
(2)GPU版
訓練に381秒(166秒遅い)、テストに6.3秒(3秒遅い)であり、認識精度は同じ。
(3)CPU版からGPU版へのプログラム変更
データをCPUからGPUへ移す処理を追加する。
テスト部分で認識したラベルデータをGPUからCPUへ移す処理を追加。
(Mnistのラベルが整数データでCPUに記憶されているので)
(4)GPUを使いながら他の方法で処理した場合
Pytorchでミニバッチ処理を行い活性化関数にReLUを使った処理の例では、
訓練+テストの処理時間合計は221秒(166秒早い)、認識精度はほぼ同じ。
(WEBで見つけて同じ階層、パラメータに変えて測定した)
(5)参考資料
下記のWEBページにお世話になりました。ありがとうございます。
・GPU の仕組みと PyTorch 入門
・手書き文字(MNIST)認識をPyTorchで記述する
<個人的な感想>
GPU版の方が処理時間が長くなったのは意外である。
データの転送時間(CPU/GPU間)が馬鹿にならないようである。
これならCPUで処理した方が良い。
画素サイズが28 x 28の小さなものでは、CPU/GPU転送時間の方が行列積計算差(GPU-CPU)よりも
大きいのだろう。