GPUに入門してみます
トゥットゥルゥー。かえるのクーです。
最近実験もしていなのに、お金もないのに、しかもこの時期に「GPU」を買ってしまいました。
自己符号化器レベルの実験ばかりなので、GPUはそれほど必要ではなかったのです。(負け惜しみ)
買ったもの
GTX 1060 6GB(MSI ARMOR OC)をかいました 。
いまどきの機械学習に使うには中途半端かもしれませんが、ボクには精一杯の出費です。(29,800円な~り~)
CUDA 9.2*1 + CuDNN7.4.1(for CUDA 9.2) *2+ cupy-5.0.0*3 + chainer 5.0.0*4 を入れました。CUDA 10がでているようですが、CuPyは現在9.2までの対応のようです。
インストールは説明いただいている方が結構いるので、見せてもらいました。ありがとうございます。
ちなみにボクはfastrlockでははまりませんでした。
OSはWindows 10です。(chainerは 5.から Windows10もサポート対象の噂がありましたが、どうなのでしょう。。。)
コンパイル用にVisualStudio 2017(オプション追加 VC++ 2015.3 V14.00)*5も入れました。
VisualStudio はCUDAインストールより先に入れます。
VisualStudio で CUDAのデバッグができるようになるみたいです。
CuDNNはログインしてのダウンロードでした。nVIDIAの会員?になりました。
CuDNNのライブラリをVisualStudioの依存ファイルとして登録することも必要みたいです。(インストール説明に記載がありました)
ベンチマークしてみます
chainerのMNISTチュートリアルをGitHubからcloneしてそのまま実行してみます。
実行でmkl*6のバージョン違いによるエラーが出たのでWindows\System32の中から mkl_*を削除(他へ退避)しました。anacondaのビルド/内包版と違っているとエラーになるようです。(mklのエラーはOSやanacondaのインストールの度に出している気がします)今回はOS版のほうが新しくてエラーになったみたいでした。
Windows\System32側のmkl_*の退避移動(削除)でエラーはなくなりました。必要であればまた戻します。(または最新版をインストールします)
まずはCPUで
CPU 計算で918秒でした。まぁ、遅いマシンなので。。。
GPU計算では
197秒でした。約4.66倍です。実験がはかどりそうです。
フーリエ変換してみます
cupyの fft はボクのPCでは
で、約89倍です。どんどんフーリエ変換できそうです。
参考URL
備忘
Overview — CuPy 5.0.0 documentation
*1:くーだ:GPUを使ったシンプルな並列処理を実現できるしくみ:nVIDIA社のグラフィックカードを使って汎用的な演算が可能になります。CUDAを使ったGPUプログラミング超入門 - Qiita
*2:nVIDIA社が公開しているDeep Learning用のライブラリです。
*3:くーぱい:pythonのNumpy互換のライブラリで、CUDAを使用して高速に処理できます。今をときめくPreferred Networks社製です。
*4:ちぇいなぁ:同じくPreferred Networks社製の深層学習向けPythonライブラリリです。
*5:これ(C++V14)を最初に選択し忘れる人がかなりいる模様です。オプションの下のほうにあり、スクロールしないとでてこないので、ボクも最初選択漏れして、cupyのpip(というかビルド)に失敗しました。
*6:いんてる・まぁす・かーねる・らいぶらり:科学・工学系の各種計算を行うためのライブラリです。さいきんはanaconda環境関連でmklのバージョン不整合がおきるケースが結構あるようです。ボクも何回も遭遇しているので、世の中でもあたりまえのように起きる現象でしょう。最新版を入れれば解決するケースもありますが、anacondaのmklと合っていないのが問題です。パスを最初にanaconda側に通しておいてもsystem32の方をみにくことがありますので、system側を潔く消すか、それが不都合ならなんとか(依存関係をふくめて)mklのバージョンを合わせる必要があります。