読者です 読者をやめる 読者になる 読者になる

ほろ酔い開発日誌

有意義な技術的Tipsを共有出来たら嬉しいです。Ruby、Railsが好きです。Web開発全般(Rails多め、フロント、サーバー、インフラ)、データ分析、機械学習あたりの記事が中心になる予定です。

MacでディープラーニングのためにGPUを使いたかった話

ディープラーニングをするときは処理速度を上げるためにGPUを使いたいです。GPUを使わないとなれば、大きなデータセットは扱いたくはないです。この前、CPUでやろうとして3日くらいかかった(途中で諦めた笑)やつもGPUだったらどれだけ楽になったことか。

ところで最近、新しいMacbook Pro(2016 late, 13 inch)を買いました。こいつにはGPUがあるとのことで使う気満々でした。

よし、使ってみよう

ひとまず、Tensorflowでやろうと思って調べたら以下のような感じで記事が出てきて、やっぱり出来るんだと嬉しくなりました。

qiita.com

qiita.com

さて、Tensorflowのドキュメントにもご丁寧にMacGPUのセットアップ方法が書いてあったので指示通りにやりました。ほんとにちゃんとやりました。

出来ない。なんかエラーが出てうまくいかないのです。

 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にサポートされていない。

この記事を読んでわかりました。

stackoverflow.com

以前のMacbook ProのモデルのGPUNVIDIA製でした。しかし、現在はAMD製です。なので、Tensorflowにサポートされていないんです。issueはあるみたいなので頑張って欲しいです。

github.com

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製に向けて進んでいるみたいです。

www.universityherald.com

ホットな分野はGPGPUが求められますし、割りと大事だと思うんですよね。 次のモデルではNVIDIA製に戻るのではないでしょうか。

そうなると、今回のモデルでたまたまNVIDIA製じゃなかったということで少しだけ残念な気もします。

ただ、外付けのGPUの開発も進んでいるようで期待したいところですね。

www.gizmodo.jp

こちら参考にしました。

qiita.com