Windows上にTensorflow-gpu 2.2.* をインストール

· 更新 2021.03.22

NVIDIAのGeForce搭載のWindows上にTensorflow-gpuの環境を構築する方法をメモ

CUDA周りをインストール

最初にドライバを最新版にアップデートしておいてください。 ドライバはhttps://www.nvidia.co.jp/Download/index.aspx?lang=jpからダウンロードできます。 次にCUDAをインストールします。 今回はTensorflow-gpu 2.2.* をインストールするのでCUDA 10.1をインストールします。
https://www.tensorflow.org/install/source_windows?hl=ja

CUDAのバージョンは重要なので上の表に必ず合わせてください。 https://developer.nvidia.com/cuda-10.1-download-archive-baseからインストーラをダウンロードしてインストールしてください。 インストール時の質問はすべてデフォルトのままで問題ありません。 PowerShellかコマンドプロンプトで

nvcc

を実行して

nvcc fatal   : No input files specified; use option --help for more information

と表示されることを確認してください。 次にcuDNNのインストールです。 cuDNNは上の表から7.6をインストールします。 https://developer.nvidia.com/cudnnにアクセスして"Download cuDNN"をクリックしてください。 ここで、NVIDIA Developer Program Membershipが必要になります。 まだ登録していない方は"Join now"からアカウントを作成してください。 ログインしたらチェックボックスにチェックを入れて"Archived cuDNN Releases “をクリック、 cuDNN v7.6.* for CUDA 10.1 をダウンロードしてください。 zipを展開したら、cudaの中身をどこか好きな場所においてください。 僕はCドライブの直下にcuDNNフォルダを作ってC:\cuDNNに入れました。 どこにおいてもいいですがあまり深いところには置かないでください。 次にPathを通します。 Win + R で"ファイル名を指定して実行"を起動し、“sysdm.cpl"と入力、詳細設定タブの環境変数をクリックしてください。 システム環境変数のPathを開いて以下を追加します。

C:\cuDNN\bin
これでPathが通っているはずです。

Visual Studioのインストール

Visual Studio をインストールします。 バージョンは上の対応表を見てください。 Tensorflow-gpu 2.2.*の場合はVisual Studio 2019です。 https://visualstudio.microsoft.com/ja/downloads/からダウンロードできます。コミュニティ版を選んでください。 インストール時に [C++ によるデスクトップ開発]にチェックを入れてください。

Tensorflowのインストール

まだ、poetryをインストールしていない方はhttps://tomiylab.com/2021/03/win-python/を読んでpoetryをインストールしてください。 Pythonが入っていればインストールできますが、ここではpoetryで環境構築する方法を紹介します。 Pythonは3.6を使います。 pyenvを使っている方は
pyenv install 3.6.x
pyenv global 3.6.x
でpythonの3.6を用意してください。

プロジェクトの作成

PowerShell かコマンドプロンプトで
poetry new HOGE
を実行してください。(HOGEはプロジェクト名です。) %USERPROFILE%/HOGEが生成されるはずです。

インストール

生成されたHOGEを開いて、適当なテキストエディタでpyproject.tomlを開いてください。
[tool.poetry.dependencies]
python = "^3.6"
の部分を以下のように書き換えてください。
[tool.poetry.dependencies]
python = "3.6.*"
tensorflow-gpu = "~2.2"
tensorflow-gpu以外にも必要なライブラリがあればここに追加します。 =よりあとの部分はバージョンの指定です。 バージョンに制約を付けずに最新版が欲しい場合は = "^0.0.1"とすればいいです。 バージョンの指定方法についてはhttps://python-poetry.org/docs/versions/を見るといいと思います。 pyproject.toml の変更を保存したら、
poetry install
を実行してください。pyproject.toml に書いたライブラリとその依存関係がインストールされます。

確認

先程poetryでインストールしたライブラリは仮想環境にインストールされます。 その仮想環境を使うには、プロジェクトのディレクトリで
poetry run foo
のようにコマンドを実行します。 Pythonの対話モードでgpuが使えている確認します。
poetry run python
>>> import tensorflow
2021-03-21 23:14:04.669411: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cudart64_101.dll
>>> print(tensorflow.test.is_built_with_cuda())
True
のようになっていれば成功です。 実際にプログラムを走らせたときにcudnn64_7.dllが見つからないと出た場合、cuDNNのPathが通っていません。cuDNNのPathを通してください。 cuDNNのpathが通ってなくてもTrueになるようです。