CUDAやらCUDNN,GPU周りのインストールです.
インストール後のベンチマークテストはこちら:
VSCodeのインストール,PythonのインストールはCPUの場合と同じ.
venvの作成時に,CPU版とは異なる名前を付ける.
用意するもの(必ず下記のバージョンで! この組み合わせ重要!)
NVIDIA グラフィクスドライバー 535.98 を使用. 新しめのものであればたぶんOK.
(日本語ユーザ名を使用していない場合は以下のtemp設定は不要)
日本語ユーザー名だといろいろトラブルのもとなので,TEMPフォルダを作成して環境変数に登録しておく.
コマンドプロンプトを起動し,
mkdir C:\TEMP call powershell -command "[System.Environment]::SetEnvironmentVariable(\"TEMP\", \"C:\TEMP\", \"User\")"
を実行しておく.できれば再起動したほうが良い.
cudaのバージョンは 11.8.0 ,ファイル名は cuda_11.8.0_522.06_windows.exe を使用.
NVIDIAのCUDA Toolkit Archiveサイトからダウンロード.
試行錯誤するかもしれないので,network版ではなく,ローカルのインストール版(3GB)を持っておいたほうが良い.
ここでは最低限のToolKitのみインストールしていますが,必要であればフルインストールで構いません. また,DisplayDriverも同時にインストールできるようですが,この動画のように既存のドライバのほうが新しい場合はチェックを外す.
確認:インストーラが終了したら,コマンドプロンプトを開いて
> where nvcc
で,パスを確認.
インストールとパス設定が正しければ nvcc.exes のフルパスが表示される.
cuDNNは,version 8.8 を使用する.
CUDNNのアーカイブページからユーザー登録をしたうえでログインし,
cuDNN8.8.0 をダウンロードする.
(すでにNVIDIAのアカウントを持っている場合は,それでログイン)
ここでインストールしたファイル名は cudnn-windows-x86_64-8.8.0.121_cuda11-archive.zip とする.
(8.8.1でも良いかもしれない.)
ダウンロードした.zip を展開,展開したフォルダーの中身のbin, include, libなどを全てを cuda をインストールしたフォルダ
(通常は C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8)に上書きコピー(移動でもOK)する.
コマンドプロンプトを管理者として開き, 次のコマンドを実行することにより設定ができる.
> call powershell -command "[System.Environment]::SetEnvironmentVariable(\"CUDNN_PATH\", \"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\", \"Machine\")"
または,コントロールパネルから CUDNN_PATH という名前の環境変数を,システム環境変数として設定する.
確認:パスが通っていることを確認
> where cudnn64_8.dll
cudaのbin (C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\bin) に, zlibwapi.dll をダウンロードして置く.
コマンドプロンプトを管理者として実行,次のコマンドを順に実行.
> cd "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\bin" > curl -O http://www.winimage.com/zLibDll/zlib123dllx64.zip > call powershell -command "Expand-Archive -Path zlib123dllx64.zip" > copy zlib123dllx64\dll_x64\zlibwapi.dll .
http://www.winimage.com/zLibDll/zlib123dllx64.zip
から .zip ファイルをダウンロード,展開.
この中の zlib123dllx64\dll_x64\zlibwapi.dll を, C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\bin にコピー.
Python 3.10 系を使用.(まだ 3.11 系ではうまくインストールできないかも)
方法はPythonのインストール(CPU版)を参照
スタートメニューの[Windows System][Command Prompt]を起動し, 以下のようにvenv用のディレクトリを作成して,そこに移動する.
すでにvenvフォルダが作成済の場合は,以下の mkdir はスキップ.
> cd c:\users\tatsuya <-ディレクトリを作成する場所へ移動 > mkdir venv > cd venv
名前は任意に決めてよい.ここでは cpu ではなく gpu とした.
> py -3.10 -m venv py310-gpu
Windows native環境(つまり,WSLではなく普通のWindows上)では,GPUサポートは Tensorflow 2.10 まで.
それ以降はCPUのみ.
より新しい Tensorflow を使用したければ,wsl(Windows subsystem for Linux)を使用する必要がある.
スタートメニューの[Windows System][Command Prompt]を起動し, さきほど作成した Python venv ディレクトリに移動.
> cd c:\users\tatsuya\venv
GPU用に作成したvenv環境をactivateする.
コマンドプロンプトの先頭に環境名が表示される.
以下,このようにvenvをactivateした状態でパッケージをインストールする.
c:\Users\tatsuya\venv\> py310-gpu\Scripts\activate (py310-gpu) c:\Users\tatsuya\venv\>
安全のため,一旦,関連しそうなパッケージ類を全削除しておく.
初回のインストールであれば不要.
python -m pip uninstall -y tensorflow tensorflow-cpu tensorflow-gpu tensorflow-intel tensorflow-text tensorflow-estimator tf-models-official tf_slim tensorflow_datasets tensorflow-hub keras keras-tuner keras-visualizer
TensorFlow GPU 版 2.10, 関連ソフトウェアのインストール バージョン指定が重要!
> python -m pip install -U tensorflow==2.10.1
最初から色々入れておきたければ,以下のようにまとめてインストール
> python -m pip install -U tensorflow==2.10.1 tf_slim tensorflow_datasets tensorflow-hub keras keras-tuner keras-visualizer
してもよい.
以下,いろいろinstall.(CPU版と同じ) >
> pip install -U pip > pip install numpy scipy matplotlib pandas imageio scikit-learn opencv-python python-dateutil jupyter notebook cmake pyyaml h5py pydot-ng keras pillow
以下はgitのインストールとログインが必要.
> 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
venvがactivateされている状態で,
(py310-gpu) > python -c "import tensorflow as tf; print( tf.__version__ )" (py310-gpu) > python -c "import keras; print( keras.__version__ )"
2.10.1 などのversionが表示されればOK.
(py310-gpu) > python -c "from tensorflow.python.client import device_lib; print(device_lib.list_local_devices())"
device_type: "GPU" が表示されていればOK
一通りインストールが終わったら,実行テストへ
WSL と Ubuntu22.04 のインストールまではCPU版と同じ.
https://docs.nvidia.com/cuda/wsl-user-guide/index.html#cuda-support-for-wsl2 を参考に,Suuport on wsl2 をインストール
$ sudo apt-key del 7fa2af80 (WARNING:...deprecatedが出るかもしれない) $ wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin $ sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600 $ wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda-repo-wsl-ubuntu-11-8-local_11.8.0-1_amd64.deb $ sudo dpkg -i cuda-repo-wsl-ubuntu-11-8-local_11.8.0-1_amd64.deb $ sudo cp /var/cuda-repo-wsl-ubuntu-11-8-local/cuda-*-keyring.gpg /usr/share/keyrings/ $ sudo apt-get update $ sudo apt-get -y install cuda
nvccが起動できるか,そのバージョンを確認
$ /usr/local/cuda/bin/nvcc --version
https://developer.nvidia.com/rdp/cudnn-downloadから
Download cuDNN v8.8.1 (March 8th, 2023) for CUDA 11.x内の
Local Installer for Ubuntu22.04 x86_64 (Deb)
をダウンロード(要ログイン).
Windows上の自分の「ダウンロード」フォルダに保存されたとする.
$ sudo dpkg -i /mnt/c/Users/(ここに自分のユーザ名)/Downloads/cudnn-local-repo-ubuntu2204-8.8.1.3_1.0-1_amd64.deb $ sudo cp /var/cudnn-local-repo-*/cudnn-local-*-keyring.gpg /usr/share/keyrings/ $ sudo apt update $ sudo apt -y install libcudnn8 libcudnn8-dev libcudnn8-samples
ちょっと動作テスト
$ sudo apt install libfreeimage3 libfreeimage-dev $ cp -r /usr/src/cudnn_samples_v8/ ~/ $ cd ~/cudnn_samples_v8/mnistCUDNN/ $ make clean $ make $ ./mnistCUDNN
$ sudo apt install -y python3-pip $ sudo apt install -y python3.10-venv $ sudo apt install -y python3.11 python3.11-venv
$ mkdir ~/venv $ cd ~/venv $ python3.11 -m venv py311 $ python3.10 -m venv py310
$ source ~/venv/py311/bin/activate (py311) $ pip install tensorflow
デバイスの確認
$ python -c "from tensorflow.python.client import device_lib; print(device_lib.list_local_devices())"
拡張機能でWSLをインストール.
WSL ターゲットに設定してUbuntu-22.04に接続
WSL環境に pythonパッケージをインストール.
python.venvPath に ~/venv を設定
VSCodeを再起動.
ソースファイルなどは,フォルダーを開く際に「Ubuntu-22.04 /home/username」の場所に保存すればよい.
コマンドパレットでInterpreterをvenv上のPythonに設定し,何かサンプルを実行.
kerasのimport前に
import os os.environ["CUDA_VISIBLE_DEVICES"] = "-1" # -1 でGPUなしで実行 os.environ["TF_ENABLE_ONEDNN_OPTS"] = "1" # CPUIでoneDNN を有効化する
import tensorflow as tf gpus = tf.config.list_physical_devices('GPU') print("# GPUs :", len(gpus)) if gpus: try: tf.config.set_visible_devices(gpus[0], 'GPU') # Use the first GPU logical_gpus = tf.config.list_logical_devices('GPU') print(len(gpus), "Physical GPUs,", len(logical_gpus), "Logical GPU") except RuntimeError as e: print(e)
Windows で,コマンドプロンプトを管理者として実行(Run As Administrator),次のコマンドを実行
call powershell -command "[System.Environment]::SetEnvironmentVariable(\"TF_FORCE_GPU_ALLOW_GROWTH\", \"true\", \"Machine\")"