NVIDIAのGPUを使った並列計算のための環境であるCUDA Toolkitや関連するディープラーニングライブラリのcuDNNをインストールする方法について解説します。
Contents
CUDAとcuDNN
CUDA(Compute Unified Device Architecture)とは、米NVIDIA社が自社グラフィックスプロセッサ(GPU)向けに開発提供している並列計算のためのソフトウェア開発・実行環境のことで、CUDA Toolkitをインストールすることで使用することができます。
また、cuDNN(CUDA Deep Neural Network liberary)は、CUDA Toolkit上で動作するディープラーニングライブラリのことです。
TensorFlowやPyTorchといったディープラーニングライブラリを用いたプログラミングを行いたいときにNVIDIAのGPUを使っている場合には、CUDA ToolkitとcuDNNをインストールする必要があります。
本記事では、CUDA ToolkitとcuDNNのインストール方法について紹介します。
CUDA Toolkitのインストール
ここからはCUDA Toolkitのインストール方法を紹介します。CUDA ToolkitはどのバージョンをインストールするかをNVIDIAのドライバなどをもとに決める必要があるので、バージョンの確認方法なども含めて説明していきます。
バージョンの確認
CUDA Toolkitをインストールする場合には、使用しているPCのNVIDIA GPUによってインストールするCUDA Toolkitのバージョンを選ばないといけません。具体的には、NVIDIA DriverとCUDA Toolkitのバージョンの対応があっているものを選びます。
CUDAリリースノートのCUDA Toolkit and Corresponding Driver VersionsにCUDA ToolkitとDriverのバージョンに関する対応表があります。この表を参考にして、どのCUDA Toolkitバージョンが必要か確認します。
「>=」という表現はその数値以上のドライババージョンが必要ということになります。例えば、CUDA12.2 GAを使う場合には、Windowsでは536.25以上のDriverバージョンが必要ということです。
今回、CUDAをインストールしようとしている環境については以下の通りです。
OS:Windows 10 Pro
CPU:Intel(R) Core(TM) i9-9900K CPU
メモリ:32GB
GPU:NVIDIA GeForce RTX 2080 Ti (専用GPUメモリ11GB)
NVIDIA Driverのバージョンを確認するには、Windowsの[設定]-[アプリ]からアプリと機能を”NVIDIA”で検索し、「NVIDIA グラフィックドライバー」の数字を確認します。このバージョンの数値をCUDA Toolkit and Corresponding Driver Versionsと照らし合わせてCUDA Toolkitを選択してください。
使用するディープラーニングライブラリ(PyTorchやTensorFlow等)の対応状況も確認が必要です。
例えば、今回はPyTorch 2.0.1を使用することを前提としてPyTorchのページを調べてみます。最新バージョンはこちらを、過去バージョンはこちらのページを参考にしてください。以下は記事執筆時点で最新のページを確認した際のキャプチャです。
上記の表を見ればわかるようにCUDA 11.7やCUDA11.8に対応しているようです。今回の環境のドライバでは11.7、11.8いずれも要件を満たしていましたので、今回はCUDA11.8をインストールしてみることにしてみたいと思います。
CUDAのダウンロードとインストール
CUDAについては、CUDA Toolkit Archiveのページから指定のバージョンのダウンロードページへ遷移してダウンロードします。インストールしたいバージョンをクリックしてください。本記事では11.8.0をクリックした場合で説明していきます。
ダウンロードページでは、Windows等の条件のボタンを押していくとダウンロードボタンが表示されます。localを選択すると数GBのインストーラーをダウンロードすることになりますが、networkを選択するとインストーラ自体は数MBの小さなファイルとなり、実行時にダウンロードしつつ、インストールすることができます。
インストールしたインストーラをダブルクリックしてインストールを実行します。インストール用の一時フォルダの指定がありますが特にこだわりがなければそのまま「OK」をクリックしてください。
まずは、システムの互換性チェックが実行されます。
NVIDIAのソフトウェア使用許諾が表示されるので確認して「同意して続行する」をクリックしてください。
インストールオプションについては特に細かな設定が必要でなければ、「高速(推奨)」を選択すれば問題ありません。次へをクリックします。
Visual Studioがインストールされていない場合、以下の画面が表示されるかと思います。Visual Studioで開発しない場合は不要ですので、チェックを入れてNEXTをクリックします。
インストールの準備が始まります。
インストールパッケージのダウンロードと処理が始まります。
インストールが開始されます。
以下のページが出たら、次へをクリックします。
インストールは完了です。チェックは任意で選択して閉じるをクリックしてください。
CUDAのインストールの確認をするために、コマンドプロンプトで以下を動作させてみてください。以下のようにバージョン情報が表示されればインストール完了です。
>nvcc -V nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2022 NVIDIA Corporation Built on Wed_Sep_21_10:41:10_Pacific_Daylight_Time_2022 Cuda compilation tools, release 11.8, V11.8.89 Build cuda_11.8.r11.8/compiler.31833905_0
cuDNNのインストール
ここからはディープラーニングライブラリであるcuDNNのインストール方法を紹介します。cuDNNは、CUDAとの対応をよく確認してインストールする必要があるので、バージョンの確認方法なども含めて説明していきます。
バージョンの確認
cuDNNとCUDAとの対応はGPU, CUDA Toolkit, and CUDA Driver Requirementsの対応表を確認します。
今回インストールしたCUDA 11.8の場合は「cuDNN 8.9.3 for CUDA 11.x」が適切であることが分かります。
cuDNNのダウンロードとインストール
cuDNNはこちらのページから「Download cuDNN」をクリックしてダウンロードします。
cuDNNはダウンロードするためにNVIDIAのアカウント登録が必要なので、持っていない人はアカウント登録してください。以下のページでWindows用のZIPファイルをダウンロードします。
ダウンロードしたzipを展開するとbin等のフォルダがあるので、CUDAフォルダの配下に配置します。私の場合は以下のようにフォルダを作ってファイルを配置しました。
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\cudnn
次にcuDNNのライブラリフォルダに環境変数のパスを通します。システムのプロパティから環境変数を開き、Pathに以下のようなCUDA関連のパスを設定します。
(機械学習のプログラミングをしていてCUDAやcuDNN関連でうまくプログラムが実行できない場合は、環境変数を確認してみると解決する可能性があります)
以下コマンドで場所が確認できれば問題ないかと思います。
※dllのファイル名はcuDNNのバージョンにより異なるかもしれませんので、正確にはbinフォルダ配下のdllファイル名を確認してから実行してください。
where cudnn64_8.dll
以上でcuDNNのインストールは完了です。
GPUの認識を確認(PyTorch)
今回はPytorch2.0.1を想定しつつCUDAのインストールを試したのでPyTorchでのGPUの認識を確認してみようと思います。任意のPythonプロジェクトを作成して以下のコマンドでPytorchをインストールします。
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
上記は、本記事の前半で確認したこちらのバージョンページから「Run this Command:」で指定されているインストールのコマンドです。
インストール後にpip listで確認してみるとPytorch(=torch)としては「2.0.1+cu118」がインストールできていることが確認できます。
>pip list Package Version ------------------ ------------ certifi 2022.12.7 charset-normalizer 2.1.1 filelock 3.9.0 idna 3.4 Jinja2 3.1.2 MarkupSafe 2.1.2 mpmath 1.2.1 networkx 3.0 numpy 1.24.1 Pillow 9.3.0 pip 23.2.1 requests 2.28.1 setuptools 68.0.0 sympy 1.11.1 torch 2.0.1+cu118 torchaudio 2.0.2+cu118 torchvision 0.15.2+cu118 typing_extensions 4.4.0 urllib3 1.26.13
Pytorch環境をインストールできたら以下の簡単なプログラムを作成して実行することでGPUの認識を確認します。
import torch # GPUの認識を確認する print(torch.cuda.is_available(), "\n") # PyTorchで使用できるGPU(デバイス)の数やデフォルトのGPU番号を確認 print(torch.cuda.device_count()) print(torch.cuda.current_device(), "\n") # GPUデバイス名を確認する print(torch.cuda.get_device_name())
【実行結果】 True 1 0 NVIDIA GeForce RTX 2080 Ti
is_availableの実行結果として「True」が返ってきているのでPytorchがGPUを認識できています。また、各種メソッドを使うことでデバイスの情報が取得できていることが分かります。
is_availableの結果がFalseの場合はうまくGPUを認識できていませんので、GPUドライバーやCUDAのバージョンなどを再度確認してみてください。
まとめ
NVIDIAのGPUを使った並列計算のための環境であるCUDAや関連するライブラリのcuDNNをインストールする方法について解説しました。
CUDAとcuDNNは、どのバージョンをインストールするかで悩むと思いますし、プログラミングしようと思うとうまく動かないということがよくあります。私も最初の頃よく動かなくてはまりましたが、だんだんと関係性について理解できるようになってきました。
参考にしていただいて使用しているGPUやライブラリにあったディープラーニング実行環境を構築してもらえるといいかなと思います。