この記事はなにか
せっかく強いPCがあるならGPU使ってこうぜ!ってことでWindowsでPythonのCUDA機械学習環境を整えたので、私自身の備忘録がてら、まとめておきます。
構築するもの
- scoop: Windows向けのパッケージマネージャーで、コマンドラインを通じてソフトウェアを簡単にインストール・管理できるツール
- Python: 俺たちのPython
- CUDA: NVIDIA製GPU向けの並列計算プラットフォームおよびAPI
- cuDNN: NVIDIAが提供するディープラーニング向けのGPUアクセラレーションライブラリで、CUDAと連携して動作
- Pytorch: 機械学習と深層学習のフレームワーク
- TensorFlow: Googleが開発したオープンソースの機械学習と深層学習のフレームワーク
前提
ターミナルやコマンドプロンプトが動作する。
scoopのインストール
Windows向けのパッケージマネージャーで、コマンドラインを通じてソフトウェアを簡単にインストール・管理できるツールである、scoopをインストールします。
Windowsキーでpowershell
と入力してEnterをしてpowershellを起動してください。
その後以下のコマンドを実行してscoopをインストールします。
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force
iwr -useb get.scoop.sh | iex
使い方や、何が便利かはちゃちゃっと調べるといっぱい出てきます。
Pythonのインストール
今回、Pythonのインストールからはじめますが、単に、scoop install pythonとやると、最新版がインストールされてしまいます。 (全然インストールしてもよいです。)
しかし、CUDAを用いたTensorFlowは特定のバージョンのPythonでしか安定して動作するものがないので、今回はバージョンを3.10でインストールを進めます。
scoop install python310
また、グローバルに用いるpythonのバージョンを指定するために、以下のコマンドを実行してください。
scoop reset python310
これにて、Pythonのインストールは終了です。(簡単すぎ・・・)
venvでPython環境の管理を行います。
mkdirで適当な名前のフォルダを作って、その中で以下をする。
mkdir python-cuda-test
cd python-cuda-test
その中で以下を実行して、envファイルを作成してください。
python3 -m venv <env名 (project_env)>
一般的には
この中でpip installなどを行います。
source project_env/Scripts/activate
抜けるときは
deactivate
これが参考になった
以下のサイトから、11.8を選択してください。
このようにして、無事インストールできたら成功です。
CUDAと連携して動作するディープラーニング向けのライブラリである、cuDNNをインストールします。
以下のサイトからCUDA11.X系にあうcuDNNをインストールしてください。
zipを解凍して、bin, include, libの3つのファイルを先ほどインストールしたNVIDIA GPU Computing Toolkit\CUDA\v11.8の中に一つずつコピペする
今回、CUDAの起動と同時にそれらを読み込んでほしいので、その中身を先ほどインストールした
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8
のbin, include, lib中にコピペをします。
以下を実行して問題なく表示されれば問題ない
where cudnn64_8.dll
先ほどPython3.10を入れた理由はここにある。今回、CUDAが安定動作するTensorFlowのバージョンは2.10系である。このTensorFlowはPython3.11以上ではインストールできない。
仮想環境の中に入ってTensorFlowをインストールします。
(gpu310)> python -m pip install -U tensorflow==2.10.1 tf_slim tensorflow_datasets tensorflow-hub keras keras-tuner keras-visualizer
(gpu310)> python -m pip install git+https://github.com/tensorflow/docs
(gpu310)> python -m pip install git+https://github.com/tensorflow/examples.git
(gpu310)> python -m pip install git+https://www.github.com/keras-team/keras-contrib.git
pip install numpy==1.24.4
PytorchについてもCUDAのバージョンに沿ったものを入れなければならないため、以下をベースにインストールをしてください。
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
動作確認
こうなれば勝ち
$ python
Python 3.10.11 (tags/v3.10.11:7d4cc5a, Apr 5 2023, 00:38:17) [MSC v.1929 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow as tf
>>> tf.config.list_physical_devices('GPU')
[PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]
>>> for gpu in tf.config.list_physical_devices('GPU'):
... details = tf.config.experimental.get_device_details(gpu)
... print(details)
...
{'device_name': 'NVIDIA GeForce RTX 4090', 'compute_capability': (8, 9)}
その他
管理者権限でコマンドプロンプトを起動して、TensorflowがGPUメモリの割り当てを動的に拡張できるように設定しておくとよいことがあるかもしれません。
powershell -command "[System.Environment]::SetEnvironmentVariable(\"TF_FORCE_GPU_ALLOW_GROWTH\", \"true\", \"Machine\")"