目的
先日mbp2014midでchainerをうごかしてみたので、gtx1080を2台積んだデスクトップでどのぐらいはやくなるか試してみる
http://qiita.com/o-kei/items/88e8e8f5343ff8d770ec
スペック
筐体はこれ
http://qiita.com/o-kei/items/5934661de484ba617d52
あとでmsi GTX 1080 ARMOR 8G OCを増設して既存グラボとSLI接続。(近日中接続ネタ書く)
http://kakaku.com/item/K0000921018/
- CPU Intel Core i7-6800K [3.40GHz/6Core/HT/L3 15MB/TDP140W]
- GPU0 サイコムオリジナル水冷静音仕様 GeForce GTX1080 8GB
- GPU1 msi GTX 1080 ARMOR 8G OC
- anaconda3-4.1.1
実験
chainer/examples/mnist/train_mnist.py
GPU: -1
# unit: 1000
# Minibatch-size: 100
# epoch: 20
epoch main/loss validation/main/loss main/accuracy validation/main/accuracy elapsed_time
1 0.189676 0.102646 0.943217 0.9688 14.811
(略)
20 0.0071264 0.108168 0.99795 0.9826 423.267
mbpよりちょっと遅い。mbpは385だった。
chainer/examples/mnist/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.192582 0.0961112 0.942733 0.9676 5.36615
(ry)
20 0.00554408 0.128831 0.998333 0.9775 60.4961
chainer/examples/mnist/train_mnist.py' -g=1
GPU: 1
# unit: 1000
# Minibatch-size: 100
# epoch: 20
epoch main/loss validation/main/loss main/accuracy validation/main/accuracy elapsed_time
1 0.188862 0.111754 0.943217 0.9666 2.9953
(ry)
20 0.0106574 0.0979032 0.996966 0.9822 60.098
7倍早い。
両方つかってみると、
chainer/examples/mnist/train_mnist_data_parallel.py'
GPU: 0, 1
# unit: 1000
# Minibatch-size: 400
# epoch: 20
epoch main/loss validation/main/loss main/accuracy validation/main/accuracy elapsed_time
1 0.280058 0.114361 0.919867 0.9635 2.29312
(ry)
20 0.00957223 0.101399 0.997067 0.9789 30.4709
7倍の2倍早くなる。7時間回す必要あるものが30分ですむのだ。
mbpのgpuと比べても6〜7倍早い。
しかしこれを考えるとmbpの優秀さも際立つ。mbpにnvidia搭載されたら買うだろう。
結論
- cpu 423秒
- gpu0,gpu1 60秒
- gpu0+gpu1 30秒 cpu1スレッドに対して、マルチgpuで約14倍早くできた。