Windows環境へのTensorFlow環境セットアップ - graspPlugin/wiki GitHub Wiki
はじめに
Windows上で深層学習開発を行うための環境構築を行います. 今回はフレームワークにTensorFlowを導入しますが,PyTorchなどの他のフレームワークであっても大まかな手順は同様です.
ここではNvidia社製のGPUが搭載されているパソコンを前提として,GPUのドライバやCUDA,GPU版TensorFlowの導入について説明します.
環境・バージョン
ハードウェア構成
- CPU : Intel Core i9-9900K
- GPU : Nvidia GeForce RTX 2080Ti
OS
Windows11 22H2
ドライバ
- NVIDIA Driver : 460.90
- CUDA Toolkit : 11.2
- cuDNN : 8.1
ソフトウェア
- Anaconda3 : 2022.10
- Python : 3.8
- TensorFlow : 2.5.0 GPU
既にNVIDIAのドライバが入っている方向け
NVIDIA Driverが既にパソコンに導入されている方は,CUDA Toolkitをインストールする際に失敗する場合があります.そのため予めDDU(Display Driver Uninstaller)といったツールを用いてGPU関連のドライバを完全削除することをおすすめします.msiのこちらのページが参考になります.
導入
バージョンの決定
深層学習の開発環境構築で重要なのが各ドライバやソフトウェア間のバージョン互換性を確保することです.
NVIDIA Driver
, CUDA
, cuDNN
, TensorFlow
の4つのバージョンを適切に決定する必要があります.
バージョンを決定していく順番ですが,まずはTensorFlowのバージョンを決めることをお勧めします.
こちらのページの後半に,テスト済みのビルド構成
という項目があり,そこにTensorFlowとそれに対応するツールのバージョンが表で示されています.Linux
とマックOS
という2つの項目に分かれていますがLinux
のほうを参照していただいて問題ありません.そこから更にCPU
とGPU
に分かれていますが,今回はGPUを使用するのでGPU
の表を参照します.
表には様々な項目がありますが,今回注目するのはPython バージョン
,cuDNN
およびクーダ
の3点です.
今回はTensorFlowのバージョンを2.5.0とし,そこから各ツールのバージョンを確認し以下のように決定しました.Pythonは表を見ればわかるようにバージョン3.6から3.9の範囲で使用できますが,今回は安定性を考慮し3.8としました.
- Python : 3.8
- cuDNN : 8.1
- CUDA : 11.2
次にNVIDIA Driverのバージョンを決定します.これはCUDAのバージョンに依存します.こちらのページのTable 2にDriverとCUDAのバージョンの互換表が記載されています.今回はCUDA 11.2を使用するので,表のCUDA 11.2.x
に注目します.そしてWindows x86_64 Driver Version
を参照すると>=452.39
と記載されています.つまりDriverはバージョン452.39以上を導入すれば問題ないことが分かります.今回はまた後ほど説明しますが,以下のバージョンに決定しました.
- NVIDIA Driver : 460.89
ここまでで4つのツールのバージョンを決定することができましたので,次の手順からは実際にそのバージョンのツールを導入していきます.
CUDAおよびNVIDIA Driverの導入
インストーラのダウンロード
Googleでcuda XX.X
(XX.Xはバージョン)と検索していただけると多くの場合CUDA Toolkit XX.X Downloads - NVIDIA Developer
というページが先頭にあらわれます.こちらをクリックしていただけるとダウンロードが可能となります.今回はバージョン11.2ですのでこちらのページになります.
Select Target Platform
で導入するOSなどを選択していきます.
Operating System
->Windows
Architecture
->x86_64
Version
->10
最後にInstaller Type
ですが,これはファイルを予めすべてダウンロードした状態でインストールを開始するexe(local)
か,インストール途中にファイルをダウンロードするexe(network)
を選択します.個人的にはexe(local)
のほうをおすすめします.選択しますとDownload(2.9GB)
というボタンが出現するのでそれをクリックしインストーラをダウンロードします.
システムへのインストール
ダウンロードしたインストーラをダブルクリックで起動します.
最初にシステムの互換性チェックに入り,その後使用許諾契約書に同意し次に進みます.
インストールオプションですが,ここで下のカスタム(詳細)
を選択します.するとインストールするコンポーネントをチェックで選択する画面に移ります.
CUDA
は必須として,NVIDIA GeForce Experience co...
とOther components
は今回は必要ありませんので自分の好みで導入するか決めましょう.今回は両方ともチェックを外しました.最後のDriver componentsですが,これはNVIDIA Driverのことです.今回ダウンロードしてきたインストーラではバージョン460.89のDriverをCUDAと一緒に導入することができます.今回はここにチェックを入れることとします.もし予めより最新のNVIDIA Driverが導入されている場合はここのチェックは外す必要があります.チェックを終えたら次へ
をクリックします.
インストール場所の選択画面に移ります.こちらはデフォルトの状態で構いません.
あとはインストール画面まで進むだけです.これによりCUDAとそれに対応するDriverのシステムへのインストールが完了します.
環境変数の設定
TensorFlowからGPUの機能を使用するためには適切に環境変数が設定されている必要があります.Windowsのスタート画面でシステム環境変数の編集
と検索しクリックします.
表示された画面の下のほうに環境変数(N)...
というボタンがあるのでクリックします.
下半分のシステム環境変数(S)
に注目します.
今回のCUDAの導入でCUDA_PATH
とCUDA_PATH_V11_2
という変数が新たに作成されていることを確認します.もし存在しない場合は,下の新規(W)...
のボタンから作成します.変数名はCUDA_PATH
およびCUDA_PATH_V11_2
であり,それぞれの変数値はデフォルトのインストール場所ですと以下のようになります.
CUDA_PATH
->C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2
CUDA_PATH_V11_2
->C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2
次にシステム環境変数(S)
のPath
変数を選択した状態で編集(I)...
ボタンをクリックし,以下の2つのディレクトリが記載されていることを確認する.存在しない場合は追記します.
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\bin
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\libnvvp
動作確認
コマンドプロンプトを開きnvcc --version
と入力します.以下のように出力されたら導入成功です.
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2020 NVIDIA Corporation
Built on Mon_Nov_30_19:15:10_Pacific_Standard_Time_2020
Cuda compilation tools, release 11.2, V11.2.67
Build cuda_11.2.r11.2/compiler.29373293_0
cuDNNの導入
Nvidiaアカウントの作成
cuDNNのダウンロードページを閲覧するためにはNvidiaのアカウントが必要となるので,予め作成します.以降はログインを行った状態で説明を進めます.
ファイルのダウンロード
こちらからcuDNNのダウンロードページに飛びます.今回はバージョン8.1を導入するので,Download cuDNN v8.1.0 (January 26th, 2021), for CUDA 11.0,11.1 and 11.2
をクリックし開きます.上のLibrary for Windows and Linux, Ubuntu(x86_64, armsbsa, PPC architecture)
の項目にあるcuDNN Library for Windows (x86)
をクリックしファイルをダウンロードします.(リンクにx86と記載されているがx64システムでも問題なく動作するので気にしなくて大丈夫です).
ファイルのコピー
ダウンロードしたzipファイルを展開するとcuda
ファイルの中にbin
,include
およびlib
の3つのフォルダがあるので,これらを以下のフォルダにコピーします.
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2
動作確認
コマンドプロンプトを開きwhere cudnn64_8.dll
と入力します.以下のように出力されたら導入成功です.
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\bin\cudnn64_8.dll
Anacondaの導入
Anacondaのダウンロードページに飛び,Download
のボタンからWindows用のインストーラをダウンロードします.インストーラを起動し導入を行いますが,すべて設定などはすべてデフォルトで問題ありません.Next >
ボタンを押していきシステムへのインストールを行います.
TensorFlowの導入
TensorFlow用仮想環境の作成
Pythonは複数の仮想環境を作り,用途ごとにPythonのバージョンやインストールするライブラリなどを個別に管理することができます.今回はAnacondaを用いて仮想環境を作成します.
スタートメニューでAnaconda Prompt (anaconda3)
と検索しクリックします.このプロンプトで仮想環境の管理やライブラリのインストールなどを行います.
プロンプトには次のように表示されています(xxxxはユーザ名です).
(base) C:\Users\xxxx>
ここでパスの前に表記されているbase
が現在使用している仮想環境の名前になります.
存在する仮想環境の一覧を出力するには以下のコマンドを実行します.
conda info -e
例として次のように出力されます.
# conda environments:
#
base * C:\Users\xxxx\anaconda3
それではTensorFlow用の仮想環境を作ってみましょう.バージョン2.5.0を使用するので仮想環境の名前はtf250
とします.
プロンプトで以下のコマンドを実行します.python=
で仮想環境において使用するPythonのバージョンを決めることができます.今回は3.8を使用すると決めましたのでpython=3.8
とします.
conda create -n tf250 python=3.8
実行するとログが表示され最後に
Proceed ([y]/n)?
と表示されるのでy
を入力しEnter
を押します.
TensorFlow用仮想環境への切り替えとSpyderの導入
仮想環境を作っただけではまだその環境には入れていません.以下のコマンドで作成したtf250
環境に切り替えましょう.
conda activate tf250
そうするとプロンプトに表示される文字列が以下のようになります.
(tf250) C:\Users\xxxx>
一番最初の現在入っている仮想環境を示す文字列がTensorFlow用に作成したものに変化しています.
ちなみに今は実行しませんが,仮想環境を抜けたい(baseに戻る)場合は次のコマンドを実行します.
conda deactivate
tf250環境に入った状態でPython用の統合開発環境であるSpyderを導入したいと思います. 以下のコマンドを入力しSpyderライブラリを導入します.
conda install spyder
完了したら,スタートメニューでSpyder
と検索すると次に示す2つが出てくると思います.
- Spyder (tf250)
- Spyder (anaconda3)
仮想環境ごとにSpyderの起動アプリが生成されています.anaconda3はbase環境での起動用です.
tf250環境のSpyderを立ち上げたい場合は
Spyder (tf250)
をクリックします.
pipによるTensorFlowの導入
tf250環境において以下のコマンドを実行します.
pip install tensorflow-gpu==2.5.0
途中pylint
,black
,astroid
パッケージのバージョン競合でエラーが出現しますが問題ありません.
動作確認
プロンプトでpython
と入力しPythonを起動します.TensorFlow側でGPUを認識できているかを確認します.
次の2行をPythonで実行します.
from tensorflow.python.client import device_lib
device_lib.list_local_devices()
今回は次のように出力されました.
2023-03-03 09:13:16.149078: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1733] Found device 0 with properties:
pciBusID: 0000:01:00.0 name: GeForce RTX 2080 Ti computeCapability: 7.5
coreClock: 1.545GHz coreCount: 68 deviceMemorySize: 11.00GiB deviceMemoryBandwidth: 573.69GiB/s
2023-03-03 09:13:16.149271: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1871] Adding visible gpu devices: 0
2023-03-03 09:13:16.149429: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1258] Device interconnect StreamExecutor with strength 1 edge matrix:
2023-03-03 09:13:16.149557: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1264] 0
2023-03-03 09:13:16.149700: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1277] 0: N
2023-03-03 09:13:16.149925: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1418] Created TensorFlow device (/device:GPU:0 with 8958 MB memory) -> physical GPU (device: 0, name: GeForce RTX 2080 Ti, pci bus id: 0000:01:00.0, compute capability: 7.5)
[name: "/device:CPU:0"
device_type: "CPU"
memory_limit: 268435456
locality {
}
incarnation: 13901624437085838620
, name: "/device:GPU:0"
device_type: "GPU"
memory_limit: 9393471488
locality {
bus_id: 1
links {
}
}
incarnation: 8361509201531213874
physical_device_desc: "device: 0, name: GeForce RTX 2080 Ti, pci bus id: 0000:01:00.0, compute capability: 7.5"
]
deviceでCPUのほかにGPUが出力されていたら,TensorFlowからGPUが正常に認識されているということです.