😎

WindowsでGPUを使った機械学習をするためにCUDA、Pytorch、TensorFlow環境を整える

に公開

この記事はなにか

せっかく強いPCがあるならGPU使ってこうぜ!ってことでWindowsでPythonのCUDA機械学習環境を整えたので、私自身の備忘録がてら、まとめておきます。

いろいろ試したけど、つまづいた方、これならうまくいってほしい!! (私自身もめちゃめちゃつまづいたので...)

こちらと同じものになります: https://qiita.com/haruotsu/items/274aecc84a7c42b1efb2

構築するもの

  • 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による仮想環境の構築

venvでPython環境の管理を行います。

mkdirで適当な名前のフォルダを作って、

mkdir python-cuda-test
cd python-cuda-test

その中で以下を実行して、envファイルを作成してください。

python3 -m venv <env名 (project_env)>

次に、作成した仮想環境に入るには、以下を実行して下さい。(一応、macの場合はScript → binらしい)

この中でpip installなどを行います。

source <project_env>/Scripts/activate

抜けるときたい時は以下を実行してください。

CUDAのインストール

CUDAのバージョンがめんどくさくてですね、最新版をいれるとTensorFlowとの互換性がなくて動かないことがほとんどです。現状、11.8が互換性の情報もあり、良さそうとのことで、このバージョンをインストールします。

以下のサイトから、11.8を選択してください。

https://developer.nvidia.com/cuda-toolkit-archive

image.png

このようにして、無事インストールできたら成功です。

cuDNNのインストール

CUDAと連携して動作するディープラーニング向けのライブラリである、cuDNNをインストールします。

以下のサイトからCUDA11.X系にあうcuDNNをインストールしてください。

https://developer.nvidia.com/rdp/cudnn-archive

zipを解凍すると、bin, include, libの3つのフォルダがある。

今回、CUDAの起動と同時にそれらを読み込んでほしいので、その中身を先ほどインストールした

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8 のbin, include, lib中にコピペをします。

これらを踏まえたうえで、以下を実行して問題なく表示されればOK。

where cudnn64_8.dll

TensorFlowのインストール

先ほどPython3.10を入れた理由はここにある。今回、CUDAが安定動作するTensorFlowのバージョンは2.10系である。このTensorFlowはPython3.11以上ではインストールできない。

https://www.tensorflow.org/install?hl=ja&_gl=1u5d167_upMQ.._gaMzU2Nzg2ODg4LjE3MzE1MTQwMzE._ga_W0YLR4190T*MTczMTUxNDAzMS4xLjAuMTczMTUxNDAzMS4wLjAuMA..

仮想環境の中に入ってTensorFlowをインストールします。

source <project_env>/Scripts/activate

https://developer.nvidia.com/rdp/cudnn-archive

大体必要なものをインストールしておきます。

python -m pip install tensorflow==2.10.1
python -m pip install tf_slim
python -m pip install tensorflow_datasets
python -m pip install tensorflow-hub
python -m pip install keras
python -m pip install keras-tuner
python -m pip install keras-visualizer
python -m pip install git+https://github.com/tensorflow/docs
python -m pip install git+https://github.com/tensorflow/examples.git
python -m pip install git+https://www.github.com/keras-team/keras-contrib.git

また、numpyも2系だと、うまく動作しないため、以下のように、バージョンを指定してインストールしてください。

pip install numpy==1.24.4

PytorchについてもCUDAのバージョンに沿ったものを入れなければならないため、以下をベースにインストールをしてください。

https://pytorch.org/
image (1).png

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

動作確認

以下のようにPythonを起動して、GPUが認識されていれば俺たちの勝利です。

$ 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\")"
GMOペパボ株式会社

Discussion