表題の通り、Surface Book (i5モデル) の GPU で Deep Learning を試してみた話。
(2017/08/02 さらに追記)
(2017/07/25 末尾に追記。有効なケースについて)
最近、ふと deep learning について勉強したくなって、ちょっとしたサンプルプログラムを動かしたりしている。 まだ理論をきちんと理解していないので、サンプルを書き換えるのも、ままならない状態だが、何かの役に立てば面白いかなと思っている。
演算には結構時間がかかるが、GPU を使えば高速化できるらしい。
そういえば、Surface にも GPU 入っているのを思い出したので、試してみることにした。
Surface Book の i5/8GB/256GB のモデルには、dGPU という NVIDIA製の無銘GPUが搭載されている。 一応、CUDA も動くみたい。
- Windows 10
- Cuda 8.0
- CuDNN 5.1
- Tensorflow GPU 1.2.1
どれも普通にインストールしただけ。CuDNNはシステム環境設定のPATHをbinに通しておく。 TensorFlow も公式の手順で pip install しただけ。 インストールして、以下サイトのサンプルを動かしてみると。。。
RNNで来月の航空会社の乗客数を予測する:TFLearnでLSTMからGRUまで実装しよう
なんと、GPU より CPU のほうが早かった。。。
(ひどいオチだ。。。)
なんかね、3000 x 2000 pixel の表示を高速化するために搭載されてはいるが、そういうことには使わないでくださいって感じ。。。
一応認識されたし、動きはしたけど、演算は無理でした。残念。。。
ちなみに、deep learning の参考書はこれ。いい本だと思う。
Surface でこれなので、お得意の Raspberry Pi では。。。インストールする気も起きないです(笑)
(2017/07/25 追記)
サンプルプログラムによっては、速くなるものもあることが分かった。
スピードは倍くらいになる。 GPUのメモリが1GBしかないので、メモリに関する部分でパフォーマンスに差が出るようだ。
とりあえず、GPU版を入れておいて、Windows の場合、システム環境変数で切り替えるのがよさそう。
CUDA_VISIBLE_DEVICES=-1 で無効、CUDA_VISIBLE_DEVICES=0 で有効。
(2017/08/02 追記)
GPUのメモリが少ないので、バッチサイズは小さめにする必要があるが、うまく調整すれば、3~4倍程度のパフォーマンスが出ることを確認。
調整には、nvidia-smi や NvGpuUtilization ツールを使うとやりやすい。