機械学習環境構築 Windows GPUgtx1080設定メモ vol.3(最終章)(CUDA〜tensorflow-gpuセットアップ編)
NVIDIA GEFORCE GTX エンブレムシール 17.5mm x 17.5mm
- メディア: エレクトロニクス
- この商品を含むブログを見る
はじめに
これは、Win10にGPUを利用して、tensorflow-gpuを扱えるようにするまでのセッティングの手順記録です。手順にそって紹介します。
これは前回の続きで 3回目(最終)です
最後はCUDAなどの機械学習を支えるソフトウェアのセッティングです。この記事の終わりまで行けばWin10でGPUを使ってtensorflow-gpuが動かせます。一番大変に感じましたが、あと一息です^^
手順
今回が一番心が折れやすいです。が、ひとつひとつやっていけば大丈夫です。多分去年はもっと大変だったっぽいです・・・
1-1:下準備1:何をインストールするか明確にしておく
- VisualStudio2013
- VisualStudio2015
- CUDA8.0
- cuDNN 6
- anaconda
- tensorflow-gpu
上記パッケージの各バージョンはミスったらやり直しになるのでくれぐれもお気をつけて・・・CUDA(執筆時点でCUDA9.0)やcuDNN(執筆時点でcuDNN7)は最新バージョンではないです。最新バージョンだとうまく動かない(動かす方法もあるのかもしれませんが・・・)ので注意ください
VisualStudioが2個あって「?」かもしれません。併存できますので大丈夫です。(VisualStudio2013は不要っぽい記事も見つかるのですが、必要というツイートもあったりしたので、安牌切るために両方いれました。動いたのでまあOKです。)
1-2:下準備2:色々なパターンでGPUでtensorflow動いた記事があり、試行錯誤記事があることを認識しておく
色々なチュートリアル記事がありますが、書いた日付や、保有PC特有の事情で上手く行ったパターン、同じパターンでうまくいかないやり方がありました。それを認識しておけば心が折れにくいです。
自分もいくつか参考記事を見ましたが、そのとおりにやってうまくいかないものもいくつか有りました。
2:Anacondaをダウンロード
こんな感じのページです
Win向けのPython3.6verのほうをダウンロードください。
ダウンロード終わったら、インストーラーをいじってセットアップしてください。
※完了したら、すぐにはtensorflowなど入れないでください。これでtennsorflowを入れようとすると、
エラー==>no wheel platform
とでます。アナコンダがpython3.6だからの模様です。なので仮想環境を作ってpython3.5の環境にしましょうAnacondaの場合は次のコードです。virtualenvではなくcondaを使います。
anacondaプロンプトを開きます(一般のコマンドプロントではないので注意)
>conda create -n tensor python=3.5 >activate tensor 仮想環境内でpythonバージョン確認すると、 下記のようにでます (tensor)>python -V Python 3.5.4 :: Anaconda custom (64-bit)
3:VisualStudio2013を入れる
VS2013、2015の取得は、アカウント登録(無料)が必要です
自分が入れたバージョンは、以下です。
Visual Studio Community 2013 with Update 5 をダウンロード
インストールください。(時間かかります。1時間〜2時間くらい?)
下記が出ればインストール完了です。
ちゃんと入ったか、LAUNCHしてみました。ちゃんと動いてます。
[NOTE]VS2013は、CUDAのconfigulation中でコンソールに現れたのでCUDAのセッティングの何かで使われている模様です。
こんな感じ(CUDA8.0インストール時)
4:VisualStudio2015を入れる
自分が入れたバージョンは、以下です。
- Visual Studio Community 2015 with Update 3
VS2015にあるC++のパッケージがビルドに必要らしいので、C++がつくものはとりあえず全部入れてください。
インストールを"Custom"を選択肢、"SelectALL"を選べばOKでした。(C++がつくモジュールが4〜5個くらいありました)
ダウンロードして、インストールください。(これも時間かかります。1時間〜2時間くらい?)
完了したらこんな感じででます。
何個か入ってないパッケージがありますが、C++に関連するものはなかったので無視で結果OKでした。
5:CUDA8.0を入れる
CUDAは単にグラフィックボードとしてgtxを使うだけでなく、機械学習などのGPUコンピューティングを実現するためのツールと思われます。
自分が入れたバージョンは、以下です。
- CUDA Toolkit 8.0 GA1 (Sept 2016)
これをダウンロード ダウンロードしてインストーラーを起動して進めてください。 (これも結構時間かかります 30分〜1時間?)
昔のバージョンのCUDAはトップページにはないのでご注意を。 developer.nvidia.com
これバージョン絶対に間違えないようにしたほうがいいです。
ドライバー設定時に画面が暗くなったりします(そのまま回復しないことがありました。そのときは残念ながらやり直しです。(やり直しの仕方後述します))
6:cuDNN v6.0を入れる
自分が入れたバージョンは、以下です。
- cuDNN v6.0 Library for Windows 10
昔のバージョンのcuDNNはここにあります。(無料会員登録必要) https://developer.nvidia.com/rdp/cudnn-download
ここの
これです。
[NOTE]cuDNN v5.1 が必要という記事もあったのですが、自分の場合は5.1で初めやると、エラーになりました。cuDNN6.0で通りました。
これもバージョンを絶対に間違えないようにしたほうがいいです。
これはただのコードファイル群なので、zipをダウンロードして展開したら、パスを次の段階のように通すだけでOKです。時間かかりません。
7:cuDNNのパスを通す
path環境変数にcuDNNのパスが通っていればどこに配置しても良いはずですが、なんかうまく行かなかったので色々検索したところ
NVIDIA GPU Computing Toolkit/ に NVIDIA GPU Computing Toolkit/CUDA/bin・・・となるように配置する意見もあり、
私の場合、試行錯誤中に、path環境変数に独自ディレクトリを設定し、cuDNNのパスが通したものと、NVIDIA GPU Computing Toolkit/CUDA/bin・・・となるようにコピーして配置したもの、どっちかが有効になってる状態です。(検証は後日。とりあえず動いているのでそのままにしました。)
8:tensorflow-gpuを入手
これは公式マニュアル(Githubのもの。下記掲載。github以外の公式マニュアルもあるので注意!)
anacondaプロンプトを開きます(一般のコマンドプロントではないので注意)
(仮想環境(tensor←仮の名称)に移動してから) >activate tensor (tensor)>pip install --ignore-installed --upgrade tensorflow-gpu
[NOTE]ちょっと前は
pip install --upgrade https://storage.googleapis.com/tensorflow/windows/gpu/tensorflow_gpu-1.0.0-cp35-cp35m-win_amd64.whl
がインストール最新版になったようですが、今現在は上記のpipコマンドが公式マニュアルでも最新版のようです。(実際動きました。)
9:tensorflow起動時のcudnn64_5.dllエラー解決
上記の手続きを経て、tensorflow-gpuを動かしてもエラーが出ます。これがちょっとやっかいでした。
cudnn64_5.dllがないというエラーが出る。
cudnn64_6.dllはあるので、同じディレクトリ内でコピペして名前を"cudnn64_5.dll"に変えると動くという記事(下記参考記事)があったので、そのとおりにしたら動いた・・・荒技〜(計算速度は速いので問題はなし)
これで直りました(ということはpath環境変数に独自ディレクトリを設定したほうのcuDNNを読み取ってるっぽいですね・・・)
10:テストコードを打ってみる
まずは公式マニュアルにあるhello worldから
>>> import tensorflow as tf >>> hello = tf.constant('Hello, TensorFlow!') >>> sess = tf.Session() >>> print(sess.run(hello))
問題がある場合は謎のエラーがでます。(最新版じゃないtensorflow-gpuだと、print時にOpKernelなんとかが大量に出た後標準出力とか、CUDAが開けませんでした とか)
あと一度再起動するとよかったという人もいたので、再起動一度僕もかけました。
kerasで同じモデルでMNISTをやると差がでました。
tensorflow@CPU@mac mini MNISTテスト
tensorflow@GPU(NVIDAIAgtx1080)@win10 MNISTテスト(同じコード)
3倍程度なので、これだけだとあんまり恩恵少ないですが、CNNとかになるとパワー発揮しそうですね^^
11:chainerはうまくいかない
このようにtensorfloe-gpuはうまくいきましたが、chainerは上手く行きませんでした・・・chainerはWindowsサポートしてない?(検索途中で読んだ噂です。)
import cupyは行けましたが、import cupy.cudnnがエラーになってしまいました・・・まあkerasを今までよく使ってきたので、当面tensorflow-gpuとkerasで実装していこうと思います。
12:参考にした記事
公式マニュアル(GitHub) https://github.com/tensorflow/tensorflow/blob/master/tensorflow/docs_src/install/install_windows.mdgithub.com
お気軽に押していただければ励みになります^^