Windows 10上のAnacondaに、TensorFlowのバージョン2.3.0, 2.4.1, 2.5.0のGPUサポート付きのものを、仮想環境ごとに併用可能な状態でインストールする。
概要
TensorFlowを導入しようとしてめんどくせ~って思ったのでインストール方法をメモしておく。
ディープラーニングライブラリごとに、またバージョンごとに、GPUサポートに必要とするCUDAのバージョンが異なっている。しかし、環境変数に同時に複数のバージョンのCUDAをPathに設定することはできない(複数設定しても一つしか参照されないので意味がない)。
そのため、仮想環境ごとにPathを変更したコマンドプロンプトを起動できるようにしたらいいのでは?と思った。これをすることで、違うバージョンを併用できる。
以下では、TensorFlowのバージョン2.3.0, 2.4.1, 2.5.0のGPUサポート付きのものを、仮想環境ごとに併用可能な状態でインストールする方法を書く。
目次
CUDAに必要なものをインストール
- Visual Studio Community 2019 (https://visualstudio.microsoft.com/ja/downloads/)
- NVIDIA Driver (とりあえず最新のやつ入れときゃいいだろ、という気持ちで入れた)
CUDA, cuDNNバージョンの確認
TensorFlowは、そのバージョンごとに、動作が確認されているPython, CUDAとcuDNNのバージョンがある。これに従うことで、CUDA等のバージョンに関連する問題を防ぐことができる。
テストされたPython, CUDA, cuDNNのバージョンは次のページで確認できる。
TensorFlowのバージョンごとにPython, cuDNN, CUDAのバージョンが書かれているので、それを使うようにする。
TensorFlow 2.3.0のインストール(condaコマンド使用)
仮想環境の作成
ここではtf230gpu
という名前の仮想環境を作成する。TensorFlow 2.3.0はPython 3.5-3.8に対応しているようなので3.8を使うことにする。
Anaconda Promptを起動し、次のコマンドを実行する。
conda create -n tf230gpu python=3.8
TensorFlow 2.3.0(GPU版)のインストール
Anaconda Promptから、仮想環境をtf230gpu
に切り替える。
activate tf230gpu
その後、tensorflow-gpu
のインストールを行う。
conda install tensorflow-gpu=2.3 tensorflow=2.3=mkl_py38h1fcfbd6_0
tensorflow=2.3=mkl_py38h1fcfbd6_0
は本来要らないはずだが、これについてWindows 10ではビルドの自動選択にバグがあるっぽくて、ビルドを指定してインストールしないとGPUが使えない。
CUDA, cuDNNも一緒にインストールしてくれるので楽。
インストールが終わったら、
python
を実行し、
from tensorflow.python.client import device_lib print(device_lib.list_local_devices())
とか入力して、GPUが認識されているか試してみる。device_type
がGPU
やXLA_GPU
などになっているデバイスがリストアップされていればOK。
仮想環境を起動するショートカットの作成(任意)
仮想環境が、Anacondaのインストールディレクトリの下のenvs\tf230gpu
にあるので、Scripts\activate.dat
にこれを指定して起動すると、仮想環境に切り替わった状態になるらしい。
Windowsのスタートメニューの「Anaconda Prompt (anaconda3)」を右クリック→「ファイルの場所を開く」を選択し、開いたフォルダのAnaconda Prompt (anaconda3)
のショートカットをコピーし、デスクトップとかに貼り付ける。
貼り付けたショートカットの名前をAnaconda tf230gpu
とかの分かりやすい名前に変えておく。
貼り付けたショートカットの右クリックメニューから「プロパティ」を開き、「リンク先」の最後を
C:\Users\USERNAME\anaconda3
→C:\Users\USERNAME\anaconda3\envs\tf230gpu
のように変更し、
%windir%\System32\cmd.exe "/K" C:\Users\USERNAME\anaconda3\Scripts\activate.bat C:\Users\USERNAME\anaconda3\envs\tf230gpu
のようにする。ここで、USERNAME
はWindowsのユーザー名で、環境により異なる。
これで、このショートカットをダブルクリックして起動すると、TensorFlow 2.3.0をインストールした仮想環境に切り替わるようになる。
TensorFlow 2.4.1のインストール(pipコマンド使用)
CUDA, cuDNNのインストール
tensorflow-2.4.0
のテスト済みバージョンは
- Python 3.6-3.8
- cuDNN 8.0
- CUDA 11.0
なので、CUDA Toolkit 11.0 Update1とcuDNN v8.0.5 (November 9th, 2020), for CUDA 11.0を入れるといいと思う。
CUDAは、CUDA Toolkitをダウンロードしてきて、実行ファイルを実行し、指示に従えばインストールされる。
cuDNNは、ダウンロードしてきた圧縮ファイルのcuda
フォルダの中身を、CUDAのインストール先C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0\
以下に突っ込むとよい(手抜き)
その後、環境変数のPathからCUDAのパスを削除する(しなくても問題ないが、他で使わないので…)。
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0\bin
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0\libnvvp
仮想環境の作成
仮想環境tf241gpu
を作成する。
conda create -n tf241gpu python=3.8
PathにCUDAを追加した仮想環境を起動するショートカットの作成
Windowsのスタートメニューの「Anaconda Prompt (anaconda3)」を右クリック→「ファイルの場所を開く」を選択し、開いたフォルダのAnaconda Prompt (anaconda3)
をコピーしてデスクトップかどこかに貼り付ける。
ショートカットを右クリック→「プロパティ」を開き、から開いたプロパティから「リンク先」をメモする。
デフォルトでインストールすると「リンク先」は次のようになっていると思う。ユーザー名の部分USERNAME
はそれぞれの環境で異なるので、以下適切に読み替える。
%windir%\System32\cmd.exe "/K" C:\Users\USERNAME\anaconda3\Scripts\activate.bat C:\Users\USERNAME\anaconda3
ここでは、C:\Users\USERNAME\anaconda3\Scripts\activate.bat
がコマンドプロンプト起動時に実行されるバッチファイル、C:\Users\USERNAME\anaconda3
がAnacondaのインストールディレクトリとなっている。
ここで、Anacondaのインストールディレクトリ以下のところに、
C:\Users\USERNAME\anaconda3\Scripts\activate_tf241gpu.bat
を次の内容で作成する。USERNAMEは(というか、仮想環境のパスは)適切なものに置き換える。
@set PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0\bin;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0\extras\CUPTI\lib64;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0\include;%PATH% @set CUDA_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0 @CALL "%~dp0activate.bat" C:\Users\USERNAME\anaconda3\envs\tf241gpu
@は、コマンドの最初につけるとechoを抑制する。Pathを設定した後、仮想環境を指定してアクティベート用のバッチファイルを呼び出している。
先ほど貼り付けたショートカットを右クリック→「プロパティ」から、リンク先を
%windir%\System32\cmd.exe "/K" C:\Users\USERNAME\anaconda3\Scripts\activate_tf241gpu.bat
のように変更し、OKを押して閉じる。ショートカットの名前をAnaconda tf241gpu
とかの分かりやすい名前に変えておくとよい。
これで、このショートカットをダブルクリックして起動すると、CUDAをPathに設定した上で、さっき作成した仮想環境に切り替わるようになる。
TensorFlow 2.5.0のインストール(pipコマンド使用)
CUDA, cuDNNのインストール
tensorflow-2.5.0
のテスト済みバージョンは
- Python 3.6-3.9
- cuDNN 8.1
- CUDA 11.2
なので、CUDA Toolkit 11.2.2とcuDNN v8.1.1 (Feburary 26th, 2021), for CUDA 11.0,11.1 and 11.2を入れるといいと思う。
CUDAは、CUDA Toolkitをダウンロードしてきて、実行ファイルを実行し、指示に従えばインストールされる。
cuDNNは、ダウンロードしてきた圧縮ファイルのcuda
フォルダの中身を、CUDAのインストール先C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\
以下に突っ込むとよい(手抜き)
その後、環境変数のPathからCUDAのパスを削除する(しなくても問題ないが、他で使わないので…)。
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\bin
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\libnvvp
PathにCUDAを追加した仮想環境を起動するショートカットの作成
Windowsのスタートメニューの「Anaconda Prompt (anaconda3)」を右クリック→「ファイルの場所を開く」を選択し、開いたフォルダのAnaconda Prompt (anaconda3)
をコピーしてデスクトップかどこかに貼り付ける。
ショートカットを右クリック→「プロパティ」を開き、から開いたプロパティから「リンク先」をメモする。
デフォルトでインストールすると「リンク先」は次のようになっていると思う。ユーザー名の部分USERNAME
はそれぞれの環境で異なるので、以下適切に読み替える。
%windir%\System32\cmd.exe "/K" C:\Users\USERNAME\anaconda3\Scripts\activate.bat C:\Users\USERNAME\anaconda3
ここでは、C:\Users\USERNAME\anaconda3\Scripts\activate.bat
がコマンドプロンプト起動時に実行されるバッチファイル、C:\Users\USERNAME\anaconda3
がAnacondaのインストールディレクトリとなっている。
ここで、Anacondaのインストールディレクトリ以下のところに、
C:\Users\USERNAME\anaconda3\Scripts\activate_tf250gpu.bat
を次の内容で作成する。USERNAMEは(というか、仮想環境のパスは)適切なものに置き換える。
@set PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\bin;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\extras\CUPTI\lib64;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\include;%PATH% @set CUDA_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2 @CALL "%~dp0activate.bat" C:\Users\USERNAME\anaconda3\envs\tf250gpu
@は、コマンドの最初につけるとechoを抑制する。Pathを設定した後、仮想環境を指定してアクティベート用のバッチファイルを呼び出している。
先ほど貼り付けたショートカットを右クリック→「プロパティ」から、リンク先を
%windir%\System32\cmd.exe "/K" C:\Users\USERNAME\anaconda3\Scripts\activate_tf250gpu.bat
のように変更し、OKを押して閉じる。ショートカットの名前をAnaconda tf250gpu
とかの分かりやすい名前に変えておくとよい。
これで、このショートカットをダブルクリックして起動すると、CUDAのディレクトリをPathに追加した上で、さっき作成した仮想環境に切り替わるようになる。
参考
- GPU サポート | TensorFlow
- Build from source | TensorFlow
- TensorFlowとKerasのインストール|TensorFlow・Keras・Python・Flaskで作る機械学習アプリ開発入門|Techpit
- python - Why is Tensorflow not recognizing my GPU after conda install? - Stack Overflow
- 仮想環境用のコマンドプロンプトをスタートメニューに登録 : Python勉強ノート
- コマンドプロンプトの起動時にバッチファイルを自動的に実行させる:Tech TIPS - @IT