はじめに
Google Colaboratory (以下、 Colab) は Google が提供する機械学習実行環境です
Colab には予め機械学習用ライブラリ等がインストールされていて、 GPU を使った機械学習もすぐに無料から始められます
ただし、インストールされているソフトウェアのバージョンによって、やろうとしていることができない場合があります
TensorFlow や PyTorch 、Nx などの機械学習フレームワークから GPU を使う場合、 CUDA や cuDNN のバージョンとフレームワークのバージョンで整合性が取れていないと動きません
CUDA Toolkit = NVIDIA の GPU を使って高速演算処理するための開発・実行環境
cuDNN = CUDA で Deep Neural Network を開発・実行するためのライブラリ
本記事では Colab 上で cuDNN のバージョンを指定バージョンに更新する方法を紹介します
CUDA と cuDNN のバージョンも整合性が取れていないといけないので、どんなバージョンでも良いわけではありません
インストール済バージョンの更新
まずは Colab の初期状態を確認してみましょう
ランタイムタイプに T4 や L4 の GPU を選択してランタイムに接続します
OS の情報は以下のコマンドで確認可能です
!cat /etc/os-release
実行結果(2024年10月4日現在)
PRETTY_NAME="Ubuntu 22.04.3 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.3 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy
追加で色々なソフトウェアをインストールしたい場合、 OS の情報を元に検索してみましょう
CUDA のバージョンは以下のコマンドで確認できます
!nvcc --version
実行結果(2024年10月4日現在)
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2023 NVIDIA Corporation
Built on Tue_Aug_15_22:02:13_PDT_2023
Cuda compilation tools, release 12.2, V12.2.140
Build cuda_12.2.r12.2/compiler.33191640_0
release 12.2
とあるので、 CUDA のバージョンは 12.2 です
cuDNN のバージョン確認は以下のコマンドです
!cat /usr/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
実行結果(2024年10月4日現在)
#define CUDNN_MAJOR 8
#define CUDNN_MINOR 9
#define CUDNN_PATCHLEVEL 6
--
#define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)
/* cannot use constexpr here since this is a C-only file */
上から3行がメジャーバージョン、マイナーバージョン、パッチバージョンを示します
つまり、上記の記載はバージョン 8.9.6 を示しています
cuDNN のバージョン更新
以下のコマンドで CUDA 12 用の cuDNN 9 をインストールできます
!apt-get -y install cudnn9-cuda-12
実行後、 cuDNN のバージョンを確認すると、実行結果が以下のように変わります
#define CUDNN_MAJOR 9
#define CUDNN_MINOR 4
#define CUDNN_PATCHLEVEL 0
--
#define CUDNN_VERSION (CUDNN_MAJOR * 10000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)
/* cannot use constexpr here since this is a C-only file */
9.4.0 になりました
まとめ
これで、 cuDNN のバージョンが合わずに困る、ということが少なくなりますね