前回は、GPU版tensorflowのセットアップでCuda ToolkitとcuDNNのインストールを行いました。今回は、tensorflowのインストールと、動作確認をします。
実際、私はCuda Toolkit11.2.0とcuDNNの8.0をインストール動作確認をしたのですが、どうしてもGPUの認識がしなかったのでその辺りの解決法も記載します。
今回の流れ
今回の作業の流れを紹介します。
- 仮想環境の構築
- tensorflowのインストール
- 動作確認
- GPUが認識しないときの対応
tensorflowインストール前の仮想環境構築
まずは、仮想環境の構築を行います。
tensorflowは様々なライブラリーと依存関係がありそのバージョンも変わってきます。また、Cuda ToolkitのバージョンによってPythonのバージョンが違います。前回調べたCuda Toolkitの、cuDNNの適応表にPythonの対応バージョンも載っているので確認してください。ここのリンク先ページ中央
Pythonのバージョンは3.6~3.8で対応しているのが確認できます。
仮想環境の構築は以前こちらのページで紹介しています。
それでは、仮想環境の構築をしていきます。
画面左下の検索ボックスに「cmd」と打ち込むことでコマンドプロンプトを起動します。
今回は、Pythonのバージョン3.6、tensorflow2.4.0で構築したいと思います。
環境名はわかりやすいようにtf240としました。
コマンドプロンプトに
conda create -n tf240 python=3.6
と入力すると
パッケージとなるライブラリーが表示されて、これでいいですか?と聞かれますので「y」でインストールを開始します。
インストールが完了すると仮想環境のアクティべートと、デアクティベートのコマンドの説明があります。
これで仮想環境の第1段階が終了です。
それでは、いよいよtensorflowのインストールに入ります。
tensorflowのインストール
いよいよ、tensorflowのインストールです。
仮想環境構築の時と同様、検索ボックスに「cmd」と入力してコマンドプロンプトを起動します。
まずは、先ほど作成した仮想環境をアクティベートします。
conda activate tf240
アクティベートされると行の初めにカッコで環境名が表示されます。
その状態で
pip install tensorflow==2.4.0
と入力することでインストールが始まります。ここで気を付けてもらいたいのがバージョンを指定する場合、イコールを2つ繋げることです。
私は繋げることを忘れて怒られてしまいました。コマンドプロンプトでフォントに色がつくなんてそうそうありません。相当怒らせてしまったのかもしれません・・・・
tensorflowはバージョン1の代ではCPU版とGPU版が別々にありましたが、バージョンが2代になってからは、ライブラリーが共通になっています。
インストールは無事に終わりましたか?
続いて、動作確認に入ります。
動作確認
それでは動作確認をしていきます。
一度コマンドプロンプトを閉じて、再度立ち上げ環境をアクティベートします。
その後、pythonと打ち込んでPythonを起動します。
起動したら以下のコマンドを打ち込みenterキーを押します。
1 |
from tensorflow.python.client import device_lib |
その後に
1 |
device_lib.list_local_devices() |
と打ち込み、enterキーを押することでデバイスの状態を確認することができます。
デバイスのタイプが「CPU」しか認識されていません。GPUの文字がどこにも見当たりません。認識していません。
GPUが認識しないときの対応
GPUが認識されていないときは、まずGPUのドライバーのバージョン確認、続いてドライバーに対応したCUDA Toolkit、cuDNNのバージョンの互換性をチェックしましょう。
そこに問題がない場合は以下を試してみてください。
CUDA Toolkitのフォルダ内、デフォルトでインストールしている場合は以下のパスとなります。
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2
ちなみに、「v11.2」はご自身のインストールしたバージョンとなります。
その中の「bin」フォルダ中「cusolver64_11.dll」というファイルがあります。
その名称を「cusolver64_10.dll」に変更します。
変更が完了したら再度先ほどのコードを実行してみましょう。
1 |
device_lib.list_local_devices() |
結果はどうでしたか?
先ほどは「CPU」のみの表示でしたが、今回はきちんとGPUの名称もきちんと認識されています。
「GPU」が認識されました。
これでセットアップが完了です。
おつかれさまでした。