Edited at

【TensorFlow】 CPUとGPUの速度比較

More than 1 year has passed since last update.

「機械学習おもしろい!もっと勉強したい!」と思ったものの、Macbookでは時間がかかりすぎるのでNVIDIAのGTX1080を搭載したPCを買いました。

意外と速度比較の記事がなかったので、色々比較をしてみて随時追加していきます。「買おうかなどうしようかな。」と、悩んでおられる方のご参考になれば幸いです。

機械学習初心者勢なので、至らない点はご容赦ください。


学習対象

MNISTの手書き数字認識を扱います。精度はテストセットのデータの精度を使っています。精度も一応書きますが、あまり気にしなくてもよいです。


比較対象

一応MacbookAirの方のGPUも書いておきましたが、TensorFlowで使えるのは現状NVIDIA製のGPUのみなので、使いません。

PC
MacBook Air(Early 2014モデル)
Alienware aurora R6

OS
MacOS Sierra
Windows10 Pro

CPU
Intel Core i7 1.7GHz
Intel Core i7-7700 3.6GHz

GPU
Intel HD Graphics 5000
NVIDIA GTX1080

メモリ
8GB
32GB


NN

5層、ユニット数=(前層 + 出力層) / 3 * 2、ミニバッチサイズ100、バッチノーマライゼーション

実行コード

https://github.com/syatyo/tensorflow-practice/blob/master/five_layer_nn_batch_norm.py


1000エポック

環境
CPU
GPU

学習時間(秒)
38.5
12.5

精度: 0.9762

約3倍の速さになったっていう記事は見たことありましたが、だいたいそんな感じですね。


10000エポック

環境
CPU
GPU

学習時間(秒)
334.6
73.5

精度: 0.9856

10000エポック回しても、ANNではそこまでの差はなさそうです。ギリCPUでも耐えられるレベルでしょうか。


CNN

入力層→Conv1→Pooling1→Conv2→Pooling2→全結合→ドロップアウト→出力層

ミニバッチサイズ50、エポック1000、ドロップアウトの利用

実行コード

https://github.com/syatyo/tensorflow-practice/blob/master/cnn.py


1000エポック

環境
CPU
GPU

学習時間(秒)
253.5
9.2

精度: 0.941

CNNだと明らかに速度に差が出ます。10秒と4分では大違いですね。


10000エポック

環境
CPU
GPU

学習時間(秒)
1906.5
57.7

精度: 0.9897

これくらい回すと、CPUでは30分強かかります。


LSTM

入力層→LSTM→出力層、ドロップアウトなし。

ミニバッチサイズ128、隠れ層のユニット数128、エポック10000

実行コード

https://github.com/syatyo/tensorflow-practice/blob/master/rnn_lstm.py


1000エポック

環境
CPU
GPU

学習時間(秒)
81.3
17.0

精度: 0.953125

意外とCNNよりはCPUでも早く学習しています。


10000エポック

環境
CPU
GPU

学習時間(秒)
800.5
127.7

精度: 0.9921875

CNNの1万エポックよりはマシですが、それでも13分強の待ち時間は辛いですね。


最後に

何か計測の要望あればコメントお願いします。