Ubuntu 18.04 の Docker on GPU 環境をアップグレードする
以前、Ubuntu 18.04 に Docker on GPU 環境をインストールした記事を書きました。
あれからだいぶ時がたち、最新の PyTorch on Docker などを動かすためには、NVIDIA Driver をアップグレードしないとダメになってきました。
そこで久々にアップグレードしようとしたのですが、いろいろはまったのでメモ的に残しておきます。
現在のドライバーのアンインストール
まず今のドライバーをアンインストールしないといけないんですね。
不要という記事も見かけるのですが、自分の環境では必要でした。
$ sudo apt remove --purge '^nvidia-.*' $ sudo reboot
新しい NVIDIA Driver のインストール
これには 2 つ方法があるようです。
1. 公式サイトから run ファイルをダウンロードして sudo sh **.run とする
2. パッケージマネージャーからインストールする
1 をやろうとしたのですが、インストール中に「2 のほうがシステムと親和性があるかもよ」的なエラーメッセージが出たので、あらためて 2 でやることにしました。
以下の公式サイトの手順 (Ubuntu) に従いました。
$ sudo apt-get install linux-headers-$(uname -r) $ distribution=$(. /etc/os-release;echo $ID$VERSION_ID | sed -e 's/\.//g') $ wget https://developer.download.nvidia.com/compute/cuda/repos/$distribution/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-drivers
インストール中に、リブートして結果を確かめろよという文字が出たので、最後にリブート。
$ sudo reboot
リブート後に nvidia-smi でドライバーのバージョンを確認しました。
$ nvidia-smi Wed Jun 8 13:59:03 2022 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 515.48.07 Driver Version: 515.48.07 CUDA Version: 11.7 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |===============================+======================+======================| | 0 NVIDIA GeForce ... On | 00000000:01:00.0 Off | N/A | | 17% 35C P8 1W / 250W | 143MiB / 11264MiB | 0% Default | | | | N/A | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=============================================================================| | 0 N/A N/A 1180 G /usr/lib/xorg/Xorg 57MiB | | 0 N/A N/A 1284 G /usr/bin/gnome-shell 83MiB | +-----------------------------------------------------------------------------+
NVIDIA Container Toolkit のインストール
最初に NVIDIA 関連のドライバーを全部消しているので、こちらも改めてインストールします。
やることは公式サイトの手順に従うだけです。
$ 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
動作確認
最後に Docker をリスタートして、PyTorch の新しめのタグを起動してみました。
$ sudo systemctl restart docker $ docker run --gpus all -it --rm nvcr.io/nvidia/pytorch:21.10-py3
無事に起動したので、PyTorch から GPU が見えているかを確かめました。
# python3 Python 3.8.12 | packaged by conda-forge | (default, Sep 29 2021, 19:52:28) [GCC 9.4.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import torch >>> print(torch.cuda.is_available()) True
無事、アップグレードできました。