Python CUDAとcuDNNのインストール、アップデート方法

作業環境

概要

CUDAを11.3から12.3にアップデートします。

深層学習開発に必要なCUDAとcuDNNは、インストール手順に環境変数の設定などが含まれており、ちょっと面倒です。

ものぐさな筆者は、アップデート作業を年1回、気が向いたら実施する程度です。

年1回の作業手順なんて、大体は忘却しています。

毎回調べ直すのも、それはそれで面倒なので、手順を纏めました。

インストールするCUDAのバージョンを調べる

NVIDIA公式のNVIDIAドライバダウンロードから、対応しているCUDAのバージョンを調べます。


[探す]を押下すると[GeForce Game Ready ドライバー]が表示されます。その中の[バージョン]を元に対応しているCUDAバージョンを探していきます。


NVIDIA公式のCUDAのドキュメントから、対応しているバージョンを確認できます。執筆時の2023年11月末時点で最新のCUDA 12.3 Update 1には、546.12以上が必要らしいです。先ほど確認したバージョンには[546.17]と表記されていたので、最新が使えそうなことが分かりました。


前提としてグラフィックドライバーは、GeForce Experienceから取得可能な最新バージョンがインストールされているものとします。


CUDAのインストール

NVIDIA DeveloperからCUDA Tooklitをダウンロードします。NVIDIA Developerはユーザー登録が必要です。登録項目が全部英語で混乱した記憶しか残っていないため、登録方法について触れるのは諦めます。


[Download now]を押下すると最新バージョンのCUDA Toolkitのダウンロードページに飛びます。任意のバージョンを取得したい場合は、こちらからアーカイブが取得できます。

上から順に以下の項目を選択していきます。

  • OS
  • x86(32bit) or x64(64bit)
  • OSのバージョン
  • インストーラーの種類(サイズ的にローカル一択じゃないかな)


全ての選択が完了するとインストーラーのダウンロード方法と、その後のインストール方法が案内されます。[Download (3.1 GB)]を押下するとインストーラーがダウンロードされます。


CUDAのインストーラーは実行ファイル形式なため右クリック実行 or ダブルクリックで実行します。


インストールに必要な一時ファイルの展開場所もご親切に選択できます。(この項目いる?)


[OK]を押下したら暫し待ちます。


読んだ気分になってから[同意して続行する(A)]を押下します。


[高速 (推奨)(E)]が選択されていることを確認して[次へ(N)]を押下します。


既にCUDAがインストールされている場合は環境変数まわりについて助言されます。英語で助言されても筆者には理解できないので無視します。


暫し待ちます。(2回目)


失敗しました。(なんでや)
どうせ開発環境依存のエラーでしょう。この程度のこと、Pythonさんとpipさんで慣れっこです。


唯一の情報であるステータスを確認するとNsight Visual Studio Editionが失敗していることが分かります。とりあえず、この子を除外してインストールが進行するか試してみます。それでダメならグーグル先生に訊いてみます。


再度インストーラーを実行して、インストールオプションを変更します。[カスタム (詳細)(C)]を選択してから[次へ(N)]を押下します。


Nsight Visual Studio Editionの名称が入ったコンポーネントを除外します。察するにC++版に必要な感じでしょうか。筆者はPythonさんと戯れたいだけなので、要らないわ、知らんけど。

以下4つのコンポーネントのチェックを外しました。


暫し待ちます。(3回目)


はい、勝ちました。対あり。

インストールが完了したら再起動をしましょう。Windowsさんは環境変数の適用タイミングが大体、再起動後です。NVIDIA インストーラーによって環境変数が設定、更新されているかは把握していませんが、安牌を取るなら再起動をしましょう。


再起動後に環境変数が変更されているのか否か、確認してみます。


CUDAパスのデフォルト値が先ほどインストールしたバージョンに変更されていますね。てか、10.1インストールしていたのですね、過去の筆者さん。記憶にないけど。


インストールするcuDNNのバージョンを調べる

ドキュメントから先ほどインストールしたCUDAに対応したcuDNNのバージョンを調べます。CUDA 12系は、527.41以上であれば、cuDNN 8.9.6が使用可能なようです。というか12未満でも、8.9.6なのですね。


cuDNNのインストール

NVIDIA DeveloperからcuDNNをダウンロードします。CUDA Toolkitと同様にユーザー登録必要です。


[Download cuDNN Library]を押下するとダウンロードページに飛びます。規約に同意後、[Local Installer for Windows (Zip)]を押下するとダウンロードされます。


Zipを解凍したのですが、ダウンロード内でかくれんぼが開始されました。(マジでどこいった)


ダウンロードの検索から探します。

[C]で検索したらCIRCUSの解除キー出てきた。草。
詳しくは知らんけど、やらかして MyCIRCUS ID ないなったらしいですからね。


D.C.の思い出に浸っていたら見つかりました。


解凍した中身を一式、Cドライブに作成してあるtoolsフォルダに移動します。toolsフォルダがない場合は、新規作成してください。


環境変数の設定

環境変数の設定をしないといけないのですが、なにも覚えていません。仕様変更が発生していないことを祈って11.3と同様の設定値を入力します。

1~4がCUDAの設定、5がcuDNNの設定です。

  1. C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.3\bin
  2. C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.3\libnvvp
  3. C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.3\extras\CUPTI\lib64
  4. C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.3\include
  5. C:\tools\cuda\bin


入力が終わったら11.3の設定を削除して、同じ位置に変更します。[OK]を押下したら、再起動しておきましょう。

念のため触れておきますが、筆者は11.3から12.3にアップデートしているので、11.3の設定値があります。初めてCUDAをインストールした環境には設定値は当然ありません。


掲載順序を間違えましたが、環境変数の設定は[Path]を選択した後に[編集(E)…]を押下するだけです。


動作確認

pipでGPU版のpytorchが無事に取得できました。

おー、2.1.1+cu121ですって。
今まで1.12.1+cu113だったので、めっちゃ新しく感じます。

嬉し楽しい反面、なにかしらの関数が非推奨になってそうで、若干怠いなぁという気持ちも。


cu113+cp39環境で動作させていたモデルと学習環境をコピペして動作テストをしてみます。

お、正常にトレーニングが開始されました。バージョンアップ成功ですね。

なんかPythonさんが文句垂れていますが、トレーニングは進行しているので良しとしましょう。