Pytorch CPU版とGPU版の処理時間比較

ニューラルネットワーク自作入門”に記載されている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)よりも
大きいのだろう。