画像系のディープラーニングにおいて必要不可欠なGPU環境の構築方法を説明します。1からやり方を紹介していきますので、引用記事を含めて本記事のみで構築できるかと思います。
基本的に以下の記事を基に構築しました。非常に分かりやすい記事で度々参考にさせていただきましたが、やり方によっては詰まってしまう箇所がいくつかあったので、その点を踏まえた上で記事を書きました。
参考記事:Anaconda + Keras でGPUを使用する環境を構築する
実行環境
Windows 10 Home
NVIDIA GeForce GTX 1050
構築の流れ
- インストールするソフトのバージョン対応確認
- Anacondaの仮想環境構築
- Microsoft Visual Studio C++のインストール
- CUDAのインストール
- cuDNNのインストール
- TensorFlow-GPU・Kerasのインストール
- GPU動作確認
**順番には意味があるので、必ず順番通りに行いましょう。**インストールが終わる前に次のインストールを始めないようにしてください。
#構築作業
インストールするソフトのバージョン対応確認
ソフト間でバージョンの合う合わないがあるので、まず対応するバージョンを調べます。インストールするソフトは以下の通りです。(括弧内は私が構築したバージョン)
・Python(3.6)
・TensorFlow-GPU(2.0.0)
・Keras
・Microsoft Visual Studio C++(MVSC)(2017)
・CUDA(10.0)
・cuDNN(7.4)
TensorFlowが公表しているGPU環境構築のためのテスト済みバージョン対応表(※)を参考にします。表のBuild tools
以外をインストールする形になります。例えば、tensorflow-gpu-2.2.0
を使う必要がある場合、3行目のPython3.5~3.8
のどれか、MSVC2019
、cuDNN7.6
、CUDA10.1
をインストールします。
※日本語ドキュメントの対応表だと古いバージョンが出てくるので注意!また、対応表も変わっている可能性があるので、ドキュメントを必ず確認してください。
####・英語版テスト済みバージョン対応表
しかし、**どの組み合わせを選んでもよいというわけではありません。**選ぶ上での条件が2点あります。下記2点を踏まえた上で、対応表から選択してください。
① Kerasに対応するPythonバージョンを調べる
KerasのInstallation & compatibility
に対応するPythonバージョンが書いてあります。2021/02/12現在はPython 3.5–3.8
となっているので、その中から選択します。
※こちらも日本語ドキュメントだと古い対応バージョンが出てくるので注意!
####・kerasとPythonのバージョン対応
② CUDAに対応するcuDNNのバージョン存在確認
cuDNNをインストールするサイトからインストールしたいcuDNNのバージョンが存在するか確認します。入るためにはユーザー登録が必要です。手順は次で説明します。
CUDAは、GPUを使用するためのプラットフォームです。cuDNNは、CUDAのディープラーニング用ライブラリという位置づけになります。CUDAのバージョンを選択してcuDNNをインストールするのですが、**私が構築した際、対応表にある組み合わせが存在しなかったことがあります。**念のため、インストールしたいcuDNNが存在するか確認しましょう。登録が地味に面倒くさいですが、インストールするときには結局必要になります。
####・手順
ユーザー登録後、下のような画面でArchived cuDNN Releases
を選択します。
cuDNNの一覧が出てきます。CUDAに対応するcuDNNが存在するかどうかをここで確認できます。
Anacondaの仮想環境構築
Anaconda + Keras でGPUを使用する環境を構築する - 仮想環境の構築(本章と次章はこのサイトを参照)
余談:Jupyter LabやJupyter Notebookを私は使いましたが、このサイトのようにVScodeで開発できるようにしたかったですね。(続き→注2:オススメのエディター)
Microsoft Visual Studio C++のインストール
Anaconda + Keras でGPUを使用する環境を構築する - MSVC(Microsoft Visual Studio C++)のインストール
・補足
既に他のバージョンが入っている場合は、追加する形でインストールして問題ありません。
CUDAのインストール
[初心者がGPU搭載Windows10にPython + Anaconda + TensorFlow + Kerasの環境を構築してみた[2018/4/28]]
(https://qiita.com/jonpili/items/e5444c31fbd16f30725a#cuda%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB)
####・インストール確認方法
コマンドプロンプトにてnvcc -V
と入力し、以下のように出てくれば成功です。
もし出てこない場合は、**CUDAへのパスが通っていない可能性があります。**その場合は次のサイトの回答を参考にしてパスを調べてみてください。
https://teratail.com/questions/308928
cuDNNのインストール
【Keras/TensorFlow】GPUを使うまでの手順と注意点などを解説します
####・インストール手順の補足
解凍したフォルダの中にbin,include,libと3つのフォルダがあります。binの中のファイルはbinのフォルダの中に、includeの中のファイルはincludeフォルダの中に、libの中のファイルはlibフォルダの中に上書き保存してください。
という文がありますが、解凍したフォルダの中の3つのフォルダ内のファイルと同名のファイルがNVIDIA GPU Computing Toolkit/CUDA/v.○○/lib
等の下にあるので、それに上書き保存するという意味です。私が意味をはき違えてフォルダごと置き換えてしまったので補足します。
TensorFlow-GPU・Kerasのインストール~GPU動作確認
Anaconda + Keras でGPUを使用する環境を構築する - TensorFlow-GPU、Kerasのインストール~確認
####・GPU動作確認の補足
mnist学習によるGPU動作確認のコードがありますが、tensorflow-gpu 2.0.0
でないバージョンで行うと対応してない関数が出てきてエラーになります。GPUデバイスの認識さえされていればGPUは基本的に動くので、該当コードは動かなくても問題ないです。
トラブルシューティング
私が躓いたポイントを基に、よくあるトラブルへの対処方法を書きます。経験則で書いていますのでご了承ください。環境構築だけでなく、Anacondaを使用している中での話も混ぜてます。
####・構築したがプログラムを動かしてもGPUが動かない。
原因①:バージョンを間違えている。
原因②:インストールしたカーネルで実行していない。
→解決策:conda activate (仮想環境名)
(注3)
でkerasをインストールした環境に切り替える。それでできない場合は、Jupyter上での切り替えをする。
####・GPUが突然動作しなくなった。
原因:GPU自体のエラーの可能性
解決策:https://teratail.com/questions/309146
####・色々試しても原因不明でGPUが動かない。
解決策:緊急回避策としてGoogle Colabを使う。Google Colabとは、グーグルが提供するブラウザからPythonを実行できるサービスです。GPUが無料で使えてめちゃくちゃ便利です。一方、無料版だとメモリや容量の制限があり、大量の画像を使用する場合は厳しいです。他にも、一定時間経過すると初期化されるなど様々な問題があるので、GPUが回復するまでの一時的な回避策としてのオススメになります。
(参考:Google Colabの使い方まとめ https://qiita.com/shoji9x9/items/0ff0f6f603df18d631ab)
####・(Jupyter Notebook・Labの場合)セルの実行をするとブラウザが固まる。
原因:Jupyter Notebook・Labの実行処理が重い。
解決策:再起動する。または、Spyderなどの他のエディターを使う。
便利なカスタマイズ(Jupyter用)
・コード補間設定
https://www.soudegesu.com/post/python/jupyter-autocomplete/
・複数カーネル表示設定(Jupyterで複数カーネルを簡単に選択するための設定)
https://qiita.com/tomochiii/items/8b937f15c79a0c3eae0e
最後に
大学の研究で必要となり自力で構築しましたが、研究よりも大変だったと思うくらいきつかったです。この記事が少しでもお役に立てればと思います。
もし何か不明点等がありましたら、コメントいただけると幸いです。
脚注
注1:TensorFlowがテスト済みというだけなので、別のバージョンでも動くことはあります。実際、間違えて対応表と違うバージョンをインストールしていたときも動きました。
注2:オススメのエディター:Pythonに慣れていない人はJupyter NotebookかJupyter Lab、慣れている人はVScodeがいいと思います。前者は逐次的に実行しやすく、少しずつ進められます。後者は、使い慣れているエディターだったり、ファイルを分割して進められたりします。個人的には、ネットに転がっているコードは.py
形式が多く、.pynb
形式のJupyterNotebookではそのまま使えないので、VScodeでやりたかったですね。
注3:condaかpipのどちらかに統一してインストールすることが推奨されていますので、適宜変更してください。https://www.python.jp/install/anaconda/pip_and_conda.html