ディープラーニングをするときは処理速度を上げるためにGPUを使いたいです。GPUを使わないとなれば、大きなデータセットは扱いたくはないです。この前、CPUでやろうとして3日くらいかかった(途中で諦めた笑)やつもGPUだったらどれだけ楽になったことか。
ところで最近、新しいMacbook Pro(2016 late, 13 inch)を買いました。こいつにはGPUがあるとのことで使う気満々でした。
よし、使ってみよう
ひとまず、Tensorflowでやろうと思って調べたら以下のような感じで記事が出てきて、やっぱり出来るんだと嬉しくなりました。
さて、Tensorflowのドキュメントにもご丁寧にMacのGPUのセットアップ方法が書いてあったので指示通りにやりました。ほんとにちゃんとやりました。
出来ない。なんかエラーが出てうまくいかないのです。
CUDA Device Query (Runtime API) version (CUDART static linking) cudaGetDeviceCount returned 35 -> CUDA driver version is insufficient for CUDA runtime version Result = FAIL
こんな感じのエラーが出てきます。何度もやり直してもうまくいかなかったです。
Macbook ProなのにGPUを利用出来ない??
それで、重要なことに気づいたのですが、そもそも勘違いもしていました。
Macbook Pro (2016 late, 13 inch) のGPUは NVIDIA製じゃない。 だからそもそもまだTensorflowにサポートされていない。
この記事を読んでわかりました。
以前のMacbook ProのモデルのGPUはNVIDIA製でした。しかし、現在はAMD製です。なので、Tensorflowにサポートされていないんです。issueはあるみたいなので頑張って欲しいです。
GPUの話
そもそもGPUをディープラーニングで使うために最低限のことをざっくり書いておきます。(厳密じゃないかもです、ただ僕と同じ現象にぶつかった人が腑に落ちるように)
GPUは一般的には画像処理のための演算装置です。単純な計算にはめっぽう強いみたいです。CPUがボスキャラ1体、GPUが雑魚キャラ1000体みたいなものだと思ってます。GPUは単純なことならたくさんの処理を効率よく行ってくれます。
それで、画像処理だけじゃなくても使えるんじゃない?といった感じで他の分野にも使うことになりました。GPGPU(General-purpose GPU)ってやつです。
このGPGPUを使う環境を整えてくれているのがNVIDA社のCUDAという環境です。なのでNVIDA社のGPUを使うときはこの環境を使えるので幸せになれるというわけです。
さて、じゃあそれを使えばいいじゃないという話になるんですが、このCUDAというやつは標準化されてなくてNVIDA製のGPUじゃないとダメみたいなんです。
じゃあGPUが使える標準規格は何かというとOpenCLというやつになります。ただこいつはGPGPUに特化していないです。そういうわけで、ディープラーニングのライブラリ的にはサポートしづらいのではないでしょうか。
そうなると、なんでわざわざAMD製にしたんだという感じですが、既にNVIDIA製に向けて進んでいるみたいです。
ホットな分野はGPGPUが求められますし、割りと大事だと思うんですよね。 次のモデルではNVIDIA製に戻るのではないでしょうか。
そうなると、今回のモデルでたまたまNVIDIA製じゃなかったということで少しだけ残念な気もします。
ただ、外付けのGPUの開発も進んでいるようで期待したいところですね。
こちら参考にしました。