にせねこメモ

はてなダイアリーがUTF-8じゃないので移ってきました。

Windows 10+AnacondaでGPU版TensorFlow 2.3, 2.4, 2.5のインストール

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に必要なものをインストール

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

すると、Anacondaのインストールディレクトリの中にenvs\tf230gpuディレクトリができているはず。

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_typeGPUXLA_GPUなどになっているデバイスがリストアップされていればOK。

仮想環境を起動するショートカットの作成(任意)

仮想環境が、Anacondaのインストールディレクトリの下のenvs\tf230gpuにあるので、Scripts\activate.datにこれを指定して起動すると、仮想環境に切り替わった状態になるらしい。


Windowsのスタートメニューの「Anaconda Prompt (anaconda3)」を右クリック→「ファイルの場所を開く」を選択し、開いたフォルダのAnaconda Prompt (anaconda3)のショートカットをコピーし、デスクトップとかに貼り付ける。
貼り付けたショートカットの名前をAnaconda tf230gpuとかの分かりやすい名前に変えておく。

貼り付けたショートカットの右クリックメニューから「プロパティ」を開き、「リンク先」の最後を
C:\Users\USERNAME\anaconda3C:\Users\USERNAME\anaconda3\envs\tf230gpu
のように変更し、

%windir%\System32\cmd.exe "/K" C:\Users\USERNAME\anaconda3\Scripts\activate.bat C:\Users\USERNAME\anaconda3\envs\tf230gpu

のようにする。ここで、USERNAMEWindowsのユーザー名で、環境により異なる。

これで、このショートカットをダブルクリックして起動すると、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

すると、Anacondaのインストールディレクトリの中にenvs\tf241gpuディレクトリができているはず。

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.4.1をpipでインストール

先ほど用意したショートカットをダブルクリックしてコマンドプロンプトを起動し、次のコマンドを実行する。

pip install tensorflow==2.4.1

インストールが終わったら、Python

from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())

を実行してみて、device_nameGPUになっているものがあればGPUが認識されていることがわかる。

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

仮想環境の作成

仮想環境tf250gpuを作成する。なんとなく他と揃えてPython 3.8にしたが、3.9を使ってもいい。

conda create -n tf250gpu python=3.8

すると、Anacondaのインストールディレクトリの中にenvs\tf250gpuディレクトリができているはず。

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に追加した上で、さっき作成した仮想環境に切り替わるようになる。

TensorFlow 2.5.0をpipでインストール

先ほど用意したショートカットをダブルクリックしてコマンドプロンプトを起動し、次のコマンドを実行する。

pip install tensorflow==2.5.0

インストールが終わったら、Python

from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())

を実行してみて、device_nameGPUになっているものがあればGPUが認識されていることがわかる。