end0tknr's kipple - web写経開発

太宰府天満宮の狛犬って、妙にカワイイ

類似画像検索に向けた cuda11.8, cudnn8.5.0 再installや、pip install onnxruntime-gpu 等

win11 pcには以前、cuda 11.2, cuDNN 8.9.2 をinstallしていますが、 onnxruntime が必要とするversionと異なるようですので、 cuda11.8, cudnn8.5.0 を再installしています。

ついでに、GeForce Game Ready driver も再installしています。

目次

0. 環境 win11 + miniconda24.5 + GeForce RTX 4090

PS> systeminfo
  :
OS 名:                  Microsoft Windows 11 Pro
OS バージョン:          10.0.22621 N/A ビルド 22621
システム製造元:         LENOVO
システム モデル:        21HMCTO1WW
システムの種類:         x64-based PC
                        [01]: Intel64 Family 6 Model 186 Stepping 2
                  GenuineIntel ~1900 Mhz
Windows ディレクトリ:   C:\Windows
システム ディレクトリ:  C:\Windows\system32
物理メモリの合計:       65,193 MB
  :
PS C:\Users\end0t> conda --version
conda 24.5.0
PS C:\Users\end0t> python --version
Python 3.12.4
PS C:\Users\end0t> Get-WmiObject -Class Win32_VideoController
  :
AdapterCompatibility         : NVIDIA
AdapterDACType               : Integrated RAMDAC
AdapterRAM                   : 4293918720
Availability                 : 8
Caption                      : NVIDIA GeForce RTX 4090
DriverDate                   : 20240730000000.000000-000
DriverVersion                : 32.0.15.6081
  :

1. GeForce Game Ready driver, CUDA, cuDNN の再install

参考url 1.1にあるように、 win11 pcには以前、cuda 11.2, cuDNN 8.9.2 をinstallしていますが、 onnxruntime を使用する為、参考url 1.3 & 4 を参照し、 cuda11.8, cudnn8.5.0 を再installしています。

ついでに、GeForce Game Ready driver も再installしています。

参考url

GeForce Game Ready driver 560.81 win11

https://www.nvidia.com/ja-jp/drivers/details/230597/ より 560.81-desktop-win10-win11-64bit-international-dch-whql.exe を ダウンロードし、実行するだけです。

CUDA Toolkit 11.8

https://developer.nvidia.com/cuda-toolkit-archive より cuda_11.8.0_522.06_windows.exe をダウンロードし、実行します。

cuda_11.8.0_522.06_windows.exe のインストーラが、 多く環境変数も設定してくれますが、 「CUDA_PATH = %CUDA_PATH_V11_8%」だけは、手動編集しています。

以下は環境変数 PATH

また、参考url 1.2 を見ると、cuda11.2 のinstall時、 レジストリを編集しているようですので、以下の内容を追加しています。

項目 内容
レジストリキー HKEY_LOCAL_MACHINE\SOFTWARE\NVIDIA Corporation\GPU Computing Toolkit\CUDA\v11.8
名前 InstallDir
種類 REG_SZ (文字列)
データ C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8

cuDNN 8.5.0.96

https://developer.nvidia.com/rdp/cudnn-archive より cudnn-windows-x86_64-8.5.0.96_cuda11-archive.zip をダウンロード & 解凍し C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8 へ、コピーします。

GeForce RTX 4090 が認識されていることを確認

ここまでのinstallで nvidia-smi というコマンドが、 C:\Windows\System32 にinstallされていますので、以下のように実行することで GeForce RTX 4090 が認識されていることを確認できます。

PS C:\Users\end0t> nvidia-smi -L
GPU 0: NVIDIA GeForce RTX 4090 (UUID: GPU-e87ef9c0-2654-6223-9868-ecc2973f1789)

2. conda create や pip install onnxruntime-gpu

参考url

miniconda base>python --version Python 3.12.4

conda create や pip install onnxruntime-gpu

miniconda base> conda create -n cuda python=3.10
miniconda base> conda activate cuda

miniconda cuda> python -m pip install --upgrade pip setuptools
miniconda cuda> pip install onnxruntime-gpu

miniconda cuda> pip list
Package         Version
--------------- -------
coloredlogs     15.0.1
flatbuffers     24.3.25
humanfriendly   10.0
mpmath          1.3.0
numpy           1.26.4
onnxruntime-gpu 1.18.1
packaging       24.1
pip             24.2
protobuf        5.27.3
pyreadline3     3.4.1
setuptools      72.2.0
sympy           1.13.2
wheel           0.43.0

onnxruntimeがgpuを認識していることを確認

import onnxruntime
 
print( onnxruntime.get_available_providers() )

↑こう書いて、↓こう表示されれば、OKです

miniconda cuda> python foo.py
['TensorrtExecutionProvider', 'CUDAExecutionProvider', 'CPUExecutionProvider']

3. pip install tensorflow[and-cuda] tf2onnx 等

この先のentryで onnx 書式のモデルを使用し、類似画像検索を行いますが、 これに備え、tensorflow[and-cuda] tf2onnx の install 等を行います。

参考url

pip install tensorflow[and-cuda] tf2onnx 等

miniconda cuda> pip install tensorflow[and-cuda]
miniconda cuda> pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
miniconda cuda> pip install tf2onnx

miniconda cuda> pip list

Package                      Version
---------------------------- ------------
absl-py                      2.1.0
astunparse                   1.6.3
cachetools                   5.4.0
certifi                      2024.7.4
charset-normalizer           3.3.2
coloredlogs                  15.0.1
filelock                     3.13.1
flatbuffers                  24.3.25
fsspec                       2024.2.0
gast                         0.4.0
google-auth                  2.33.0
google-auth-oauthlib         1.0.0
google-pasta                 0.2.0
grpcio                       1.65.4
h5py                         3.11.0
humanfriendly                10.0
idna                         3.7
Jinja2                       3.1.3
keras                        2.13.1
libclang                     18.1.1
Markdown                     3.6
MarkupSafe                   2.1.5
mpmath                       1.3.0
networkx                     3.2.1
numpy                        1.24.3
oauthlib                     3.2.2
onnx                         1.16.2
onnxruntime-gpu              1.18.1
opt-einsum                   3.3.0
packaging                    24.1
pillow                       10.2.0
pip                          24.2
protobuf                     3.20.3
pyasn1                       0.6.0
pyasn1_modules               0.4.0
pyreadline3                  3.4.1
requests                     2.32.3
requests-oauthlib            2.0.0
rsa                          4.9
setuptools                   72.2.0
six                          1.16.0
sympy                        1.13.2
tensorboard                  2.13.0
tensorboard-data-server      0.7.2
tensorflow                   2.13.1
tensorflow-estimator         2.13.0
tensorflow-intel             2.13.1
tensorflow-io-gcs-filesystem 0.31.0
termcolor                    2.4.0
tf2onnx                      1.16.1
torch                        2.4.0+cu118
torchaudio                   2.4.0+cu118
torchvision                  0.19.0+cu118
typing_extensions            4.9.0
urllib3                      2.2.2
Werkzeug                     3.0.3
wheel                        0.43.0
wrapt                        1.16.0

pytorch から gpu が認識されていることを確認

# -*- coding: utf-8 -*-
import torch
from tensorflow.python.client import device_lib;

print( torch.cuda.is_available() )
print( torch.version.cuda )
print( torch.cuda.device_count() )
print( torch.cuda.get_device_name() )
print( "" )

print( device_lib.list_local_devices() )

↑こう書いて↓こう表示されればOK

True
11.8
1
NVIDIA GeForce RTX 4090

2024-08-14 15:41:58.819659: I tensorflow/core/platform/cpu_feature_guard.cc:182] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.
To enable the following instructions: SSE SSE2 SSE3 SSE4.1 SSE4.2 AVX AVX2 AVX_VNNI FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags.
[name: "/device:CPU:0"
device_type: "CPU"
memory_limit: 268435456
locality {
}
incarnation: 1347897820107021385
xla_global_id: -1
]

zlibwapi.dll のコピー

この先のentryの操作で zlibwapi.dll に関するエラーとなりましたので、

C:\Users\end0t\miniconda3\envs\cuda\Lib\site-packages\torch\lib にある zlibwapi.dll を copy to C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\bin へ、 コピーしています。