CUDA が動作しなくなった時
頻繁なアップデートのため、システムのアップデート時に気をつけないと CUDA が動作しなくなってしまうことがあります。
そのような時の解決手順について記載します。
dlibがCUDAを利用できない場合はdlib.DLIB_USE_CUDA が Falseになる場合の対処法をご参照ください。
目次
関連するライブラリ削除
sudo apt purge cuda*
sudo apt purge libcuda*
sudo apt purge cudnn*
sudo apt purge libcudnn*
sudo apt-get purge *nvidia*
sudo apt autoremove
sudo apt autoclean
nvidiaリポジトリのチェックを外す
該当する場合はチェックを外して下さい。
アップデートを行います。
sudo apt update
CUDA 関連ファイルを削除
「関連するライブラリを削除」ですでに削除されているはずですが、念の為確認してみます。ディレクトリが存在する場合は削除して下さい。
sudo rm -rf /usr/local/cuda*
sudo apt update && sudo apt upgrade -y
driverがNouveauディスプレイドライバになっていることを確認してください。「追加のドライバー」から確認することが出来ます。
スクリーンショットではnvidia-diver-525になっていますが、リスト最後のX.org ~ Nouveauディスプレイドライバーにチェックが入っていることを確認して下さい。
Docker image を削除
現在のdocker image を確認します。`docker images`で表示されない場合はスキップして下さい。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> 7015867e0ff7 2 weeks ago 18.2GB
tokaikaoninsho/face01_no_gpu 1.4.12 dd34d05422c5 2 weeks ago 2.53GB
tokaikaoninsho/face01_gpu 1.4.12 61d32d36b9ab 2 weeks ago 19.2GB
tokaikaoninsho/face01_no_gpu 1.4.11 6ad4ba3cbe88 3 weeks ago 3.65GB
tokaikaoninsho/face01_gpu 1.4.11 682da444845a 3 weeks ago 20.3GB
face01_no_gpu 1.4.11 efc3845d390a 3 weeks ago 2.5GB
face01_gpu 1.4.11 7398d955d905 3 weeks ago 19.2GB
<none> <none> 6c61d0364450 3 weeks ago 1.66GB
<none> <none> b2e38e65b233 3 weeks ago 18.2GB
ubuntu 20.04 d5447fc01ae6 2 months ago 72.8MB
tensorflow/tensorflow latest-gpu-jupyter cf6cb74c9ec4 5 months ago 6.19GB
nvidia/cuda 11.0.3-base-ubuntu20.04 8017f5c31b74 6 months ago 122MB
Docker images を削除します。
$ docker rmi 7015867e0ff7 dd34d05422c5 61d32d36b9ab 6ad4ba3cbe88 682da444845a efc3845d390a 7398d955d905 6c61d0364450 b2e38e65b233 d5447fc01ae6 cf6cb74c9ec4 8017f5c31b74
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> 7015867e0ff7 2 weeks ago 18.2GB
tensorflow/tensorflow latest-gpu-jupyter cf6cb74c9ec4 5 months ago 6.19GB
nvidia/cuda 11.0.3-base-ubuntu20.04 8017f5c31b74 6 months ago 122MB
$ docker rmi -f nvidia/cuda:11.0.3-base-ubuntu20.04
Untagged: nvidia/cuda:11.0.3-base-ubuntu20.04
Untagged: nvidia/cuda@sha256:57455121f3393b7ed9e5a0bc2b046f57ee7187ea9ec562a7d17bf8c97174040d
削除できないdocker image は-f
オプションをつけて削除します。
$ docker rmi -f tensorflow/tensorflow:latest-gpu-jupyter
Untagged: tensorflow/tensorflow:latest-gpu-jupyter
Untagged: tensorflow/tensorflow@sha256:a72deb34d32e26cf4253608b0e86ebb4e5079633380c279418afb5a131c499d6
Deleted: sha256:cf6cb74c9ec4ff92634514468a6dd2323dead73720b58e1700b9478557668b3d
$ docker rmi -f 7015867e0ff7
Deleted: sha256:7015867e0ff7461e1776bfa43f7383f1a6ec748817e8afb60b04fce9f2b40cd8
Deleted: sha256:ae77d65add3126995cbfb38f7e8b36e12fa5f23de0ab7a9723b2a752cca3c281
Deleted: sha256:82eb8ba78e6c6d7f349188ba006b3e9f35b003e1682f3820355ab839bd5acd04
Deleted: sha256:f946ae5db3ab83a4da53d8791d7c57e7f6ad39bda37527e0338f82524791578f
Deleted: sha256:43707fb49b26719b6c92faf6af9fb2e160efa3ea9151cdc43c7fb903e61e7
Dockerの公開鍵をダウンロードした後セットします。
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-keyring_1.0-1_all.deb
sudo dpkg -i cuda-keyring_1.0-1_all.deb
ライブラリの再インストール
CUDA環境を再構築する方法は2通りあります。
- CLIを使う
- GUIで一つづつ行う
それぞれについて紹介します。
CLIを使う
通常はこちらを選んで下さい。
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-keyring_1.0-1_all.deb
sudo dpkg -i cuda-keyring_1.0-1_all.deb
sudo apt-get update
sudo apt-get -y install cuda-12-0
## cuda-12-0をインストールすることにより、以下のパッケージもインストールされる
# cuda-toolkit-12-0
# nvidia-driver-525
# libcublas-12-0
## cuda-12-0をインストール指定してもlibcudnn8はインストールされない
apt-get install -y libcudnn8
apt-get install -y libcudnn8-dev
## バージョン固定
sudo apt-mark hold cuda-12-0
sudo apt-mark hold cuda-cccl-12-0
sudo apt-mark hold cuda-command-line-tools-12-0
sudo apt-mark hold cuda-compiler-12-0
sudo apt-mark hold cuda-cudart-12-0
sudo apt-mark hold cuda-cudart-dev-12-0
sudo apt-mark hold cuda-cuobjdump-12-0
sudo apt-mark hold cuda-cupti-12-0
sudo apt-mark hold cuda-cupti-dev-12-0
sudo apt-mark hold cuda-cuxxfilt-12-0
sudo apt-mark hold cuda-demo-suite-12-0
sudo apt-mark hold cuda-documentation-12-0
sudo apt-mark hold cuda-driver-dev-12-0
sudo apt-mark hold cuda-drivers
sudo apt-mark hold cuda-drivers-525
sudo apt-mark hold cuda-gdb-12-0
sudo apt-mark hold cuda-libraries-12-0
sudo apt-mark hold cuda-libraries-dev-12-0
sudo apt-mark hold cuda-nsight-12-0
sudo apt-mark hold cuda-nsight-compute-12-0
sudo apt-mark hold cuda-nsight-systems-12-0
sudo apt-mark hold cuda-nvcc-12-0
sudo apt-mark hold cuda-nvdisasm-12-0
sudo apt-mark hold cuda-nvml-dev-12-0
sudo apt-mark hold cuda-nvprof-12-0
sudo apt-mark hold cuda-nvprune-12-0
sudo apt-mark hold cuda-nvrtc-12-0
sudo apt-mark hold cuda-nvrtc-dev-12-0
sudo apt-mark hold cuda-nvtx-12-0
sudo apt-mark hold cuda-nvvp-12-0
sudo apt-mark hold cuda-opencl-12-0
sudo apt-mark hold cuda-opencl-dev-12-0
sudo apt-mark hold cuda-profiler-api-12-0
sudo apt-mark hold cuda-runtime-12-0
sudo apt-mark hold cuda-sanitizer-12-0
sudo apt-mark hold cuda-toolkit-12-0
sudo apt-mark hold cuda-toolkit-12-0-config-common
sudo apt-mark hold cuda-toolkit-12-config-common
sudo apt-mark hold cuda-toolkit-config-common
sudo apt-mark hold cuda-tools-12-0
sudo apt-mark hold cuda-visual-tools-12-0
sudo apt-mark hold dctrl-tools
sudo apt-mark hold default-jre
sudo apt-mark hold default-jre-headless
sudo apt-mark hold dkms
sudo apt-mark hold gds-tools-12-0
sudo apt-mark hold libcublas-12-0
sudo apt-mark hold libcublas-dev-12-0
sudo apt-mark hold libcufft-12-0
sudo apt-mark hold libcufft-dev-12-0
sudo apt-mark hold libcufile-12-0
sudo apt-mark hold libcufile-dev-12-0
sudo apt-mark hold libcurand-12-0
sudo apt-mark hold libcurand-dev-12-0
sudo apt-mark hold libcusolver-12-0
sudo apt-mark hold libcusolver-dev-12-0
sudo apt-mark hold libcusparse-12-0
sudo apt-mark hold libcusparse-dev-12-0
sudo apt-mark hold libegl-mesa0:i386
sudo apt-mark hold libegl1:i386
sudo apt-mark hold libgbm1:i386
sudo apt-mark hold libgles2:i386
sudo apt-mark hold libnpp-12-0
sudo apt-mark hold libnpp-dev-12-0
sudo apt-mark hold libnvidia-cfg1-525
sudo apt-mark hold libnvidia-common-525
sudo apt-mark hold libnvidia-compute-525
sudo apt-mark hold libnvidia-compute-525:i386
sudo apt-mark hold libnvidia-decode-525
sudo apt-mark hold libnvidia-decode-525:i386
sudo apt-mark hold libnvidia-encode-525
sudo apt-mark hold libnvidia-encode-525:i386
sudo apt-mark hold libnvidia-extra-525
sudo apt-mark hold libnvidia-fbc1-525
sudo apt-mark hold libnvidia-fbc1-525:i386
sudo apt-mark hold libnvidia-gl-525
sudo apt-mark hold libnvidia-gl-525:i386
sudo apt-mark hold libnvjitlink-12-0
sudo apt-mark hold libnvjitlink-dev-12-0
sudo apt-mark hold libnvjpeg-12-0
sudo apt-mark hold libnvjpeg-dev-12-0
sudo apt-mark hold libnvvm-samples-12-0
sudo apt-mark hold libopengl0:i386
sudo apt-mark hold libtinfo5
sudo apt-mark hold libwayland-server0:i386
sudo apt-mark hold nsight-compute-2022.4.1
sudo apt-mark hold nsight-systems-2022.4.2
sudo apt-mark hold nvidia-compute-utils-525
sudo apt-mark hold nvidia-dkms-525
sudo apt-mark hold nvidia-driver-525
sudo apt-mark hold nvidia-kernel-common-525
sudo apt-mark hold nvidia-kernel-source-525
sudo apt-mark hold nvidia-modprobe
sudo apt-mark hold nvidia-prime
sudo apt-mark hold nvidia-settings
sudo apt-mark hold nvidia-utils-525
sudo apt-mark hold openjdk-11-jre
sudo apt-mark hold openjdk-11-jre-headless
sudo apt-mark hold screen-resolution-extra
sudo apt-mark hold xserver-xorg-video-nvidia-525
sudo apt-mark hold libcudnn8-dev
sudo apt-mark hold libcudnn8
apt-get install -y g++-8
sudo apt-get update
sudo apt-get upgrade -y
GUIで確認しながら行う
冒頭で該当した方はここでnvidiaリポジトリにチェックを入れて下さい。
sudo apt update
<!-- sudo apt install -y cuda -->
sudo apt install -y nvidia-cuda-toolkit
sudo apt install -y libcudnn8
sudo apt install -y libcudnn8-dev
<!-- sudo apt install -y libcublas -->
Driver の再インストール
利用できるディスプレイドライバーを確認。
sudo ubuntu-drivers devices
== /sys/devices/pci0000:00/0000:00:03.1/0000:08:00.0 ==
modalias : pci:v000010DEd00002182sv00001462sd00008D90bc03sc00i00
vendor : NVIDIA Corporation
model : TU116 [GeForce GTX 1660 Ti]
driver : nvidia-driver-450 - third-party non-free
driver : nvidia-driver-525-open - distro non-free recommended
driver : nvidia-driver-460 - third-party non-free
driver : nvidia-driver-515 - third-party non-free
driver : nvidia-driver-418-server - distro non-free
driver : nvidia-driver-455 - third-party non-free
driver : nvidia-driver-470 - third-party non-free
driver : nvidia-driver-450-server - distro non-free
driver : nvidia-driver-515-open - distro non-free
driver : nvidia-driver-520 - third-party non-free
driver : nvidia-driver-495 - third-party non-free
driver : nvidia-driver-515-server - distro non-free
driver : nvidia-driver-470-server - distro non-free
driver : nvidia-driver-510 - third-party non-free
driver : nvidia-driver-465 - third-party non-free
driver : nvidia-driver-525 - third-party non-free
driver : nvidia-driver-525-server - distro non-free
driver : xserver-xorg-video-nouveau - distro free builtin
ディスプレイドライバーの再インストール。
sudo apt install nvidia-driver-515
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
dctrl-tools dkms libegl-mesa0:i386 libegl1:i386 libgbm1:i386 libgles2:i386 libnvidia-cfg1-515
libnvidia-common-515 libnvidia-compute-515 libnvidia-compute-515:i386 libnvidia-decode-515
libnvidia-decode-515:i386 libnvidia-encode-515 libnvidia-encode-515:i386 libnvidia-extra-515
libnvidia-fbc1-515 libnvidia-fbc1-515:i386 libnvidia-gl-515 libnvidia-gl-515:i386 libopengl0:i386
libwayland-server0:i386 nvidia-compute-utils-515 nvidia-dkms-515 nvidia-kernel-common-515
nvidia-kernel-source-515 nvidia-prime nvidia-settings nvidia-utils-515 screen-resolution-extra
xserver-xorg-video-nvidia-515
提案パッケージ:
debtags menu
以下のパッケージは「削除」されます:
libnvidia-compute-418-server
以下のパッケージが新たにインストールされます:
dctrl-tools dkms libegl-mesa0:i386 libegl1:i386 libgbm1:i386 libgles2:i386 libnvidia-cfg1-515
libnvidia-common-515 libnvidia-compute-515 libnvidia-compute-515:i386 libnvidia-decode-515
libnvidia-decode-515:i386 libnvidia-encode-515 libnvidia-encode-515:i386 libnvidia-extra-515
libnvidia-fbc1-515 libnvidia-fbc1-515:i386 libnvidia-gl-515 libnvidia-gl-515:i386 libopengl0:i386
libwayland-server0:i386 nvidia-compute-utils-515 nvidia-dkms-515 nvidia-driver-515 nvidia-kernel-common-515
nvidia-kernel-source-515 nvidia-prime nvidia-settings nvidia-utils-515 screen-resolution-extra
xserver-xorg-video-nvidia-515
アップグレード: 0 個、新規インストール: 31 個、削除: 1 個、保留: 0 個。
334 MB のアーカイブを取得する必要があります。
この操作後に追加で 778 MB のディスク容量が消費されます。
続行しますか? [Y/n] Y
.bashrc を再読込み
~/.bashrc
.. .bashrc
Docker 再インストール
sudo apt-get update && sudo apt-get upgrade -y \
&& curl https://get.docker.com | sh \
&& sudo systemctl --now enable docker
sudo usermod -aG docker <user_name>
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 update
sudo apt-get update --fix-missing
sudo apt install -y nvidia-docker2
sudo systemctl restart docker
`nvidia-smi` commandで動作確認
最後に…
必要に応じてGPUに関係するPythonライブラリを再インストール用してください。
動作チェックをして作業終了となります。お疲れ様でした。