MJUN Tech Note

Ubuntu22.04にCUDA, cuDNN,Docker,NVIDIA-Docker2を入れる

Ubuntu22.04 に CUDA11.7 と cuDNN8,nvidia-docker2 をインストールする手順.
Ubuntu は最小インストールで,サードパーティのパッケージをインストールするで インストールしたものを用意.

CUDA 11.7

サードパーティインストールをすると,CUDA が勝手に入ってくるので全部削除する.
(本当はサードパーティインストールしなければよいが,Wifi ドライバとか入ってこないとめんどいので)

sudo apt purge *nvidia*
sudo apt autopurge
sudo apt purge nvidia-*
sudo apt purge nvidia-compute-*
sudo apt purge libnvidia*
sudo apt purge linux-objects-nvidia*

NVIDIA 公式から CUDA をインストールする.

CUDA Toolkit 12.1 Downloads
Get the latest feature updates to NVIDIA's proprietary compute stack.
CUDA Toolkit 12.1 Downloads favicon https://developer.nvidia.com/cuda-downloads
CUDA Toolkit 12.1 Downloads
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin
sudo mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/3bf863cc.pub
sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/ /"
sudo apt-get update
sudo apt-get -y install cuda
sudo apt-get -y install cuda-drivers

ここで一度再起動する.

GPU が見えるようになったか確認するために,CUDA へ PATH を通す.

# CUDA
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

nvidia-sminvcc -Vを試す.

cuDNN をインストールする

cuDNN を入れるには NVIDIA への会員登録が必要.
ダウンロードは以下から行う.
Local Installer Ubuntu2*.04 x86_64 を入れる.22.04 では 20.04 を入れても大丈夫だった.

CUDA Deep Neural Network
cuDNN provides researchers and developers with high-performance GPU acceleration.
CUDA Deep Neural Network favicon https://developer.nvidia.com/cudnn
CUDA Deep Neural Network
Overview — NVIDIA cuDNN
Overview — NVIDIA cuDNN favicon https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html

上記のインストールガイドの通り,インストールする.
今回は dpkg を選択

sudo dpkg -i cudnn-local-repo-${OS}-8.x.x.x_1.0-1_amd64.deb
sudo apt-key add /var/cudnn-local-repo-*/7fa2af80.pub
sudo apt-get install libcudnn8
sudo apt-get install libcudnn8-dev

Docker を入れる

Docker は公式サイトの手順通り入れる.
GUI 版の Docker-Desktop for Linux を推されるが,CLI 運用なら Docker Engine だけで十分.
Desktop は商用とか人数とかで制限があるので注意.

Ubuntu
Jumpstart your client-side server applications with Docker Engine on Ubuntu. This guide details prerequisites and multiple methods to install Docker Engine on Ubuntu.
Ubuntu favicon https://docs.docker.com/engine/install/ubuntu/
Ubuntu

docker コマンドを sudo なしで打てるようにするために,ユーザーを Docker グループに追加する.

sudo groupadd docker
sudo gpasswd -a $USER docker
sudo systemctl restart docker

このあとログアウトして再ログインする.

NVIDIA-Docker-2 を入れる

docs.nvidia.com
docs.nvidia.com favicon https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#setting-up-nvidia-container-toolkit

上記のサイトに従って入れる.

distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
      && curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
      && curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \
            sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
            sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update
sudo apt-get install -y nvidia-docker2
sudo systemctl restart docker

コンテナから GPU が見えるかテストする.

sudo docker run --rm --gpus all nvidia/cuda:11.0.3-base-ubuntu20.04 nvidia-smi

注意

CUDA に PATH を通していない状態で,nvcc を打つと,cuda-toolkitを入れろと言われるが入れてはいけない. 入れると,最新の CUDA である 11.7 が削除されて,インストール直後に入っていた 11.5 にフォールバックさせられてしまう.