計算科学系オープンソースの環境構築において仮想化のシステムは非常に重宝されています。
本記事では、環境の提供手段としてよく利用されているDockerのインストール方法と、Docker環境でGPUを利用できるようにするまでの方法を紹介します。
実行環境
- OS: Ubuntu 22.04.3 LTS
- CPU: AMD Ryzen 7 5700X 8-Core Processor
- GPU: NVIDIA GeForce RTX 3060 Ti (8G)
- メモリ: 32GB
Dockerのインストール方法
Linuxのパッケージ管理システムであるAPT(Advanced Package Tool)を利用してインストールを行います。
APTでdockerをインストールするためには、aptリポジトリへDockerの情報を登録する必要があります。
ターミナルで以下のコマンドを実行しましょう。
sudo apt update
sudo apt install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings・docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo chmod a+r /etc/apt/keyrings/docker.asc
sudo apt update
次に、Docker関連のパッケージをインストールします。コマンドは以下の通りです。
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
以上でDockerのインストールは完了です。
Dockerのコマンドは管理者権限での実行が求められますが、dockerグループを作成することで所属するユーザーは管理者権限なしで実行できるようになります。
dockerグループの作成と(ログイン)ユーザーの追加は以下のコマンドでできます。
sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker
以上でDockerのインストールは完了です。
NVIDIA Container Toolkit のインストール
Dockerの仮想環境(コンテナ)でGPUを利用するためには、「NVIDIAドライバ」と「NVIDIA Container Toolkit」をインストール必要があります。
NVIDIAドライバのインストール方法は今回の記事では触れません。インストールがまだの方はこちらのサイトなどをご参考ください。
NVIDIA Container Toolkitは、Docker同様にAPTを利用してインストールを行います。aptリポジトリへの情報追加とインストールは以下の手順です。
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/stable/deb/nvidia-container-toolkit.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 install nvidia-container-toolkit -y
Dockerを再起動してNVIDIA Container Toolkitを反映させます。コマンドは以下の通りです。
systemctl restart docker.service
これでDockerコンテナにおいてGPUを利用する準備ができました。最後に、実際にコンテナ内でGPUを認識しているか確認してみましょう。
まずは、以下のコマンドでDocker Hubに登録されているDockerイメージをローカル環境にプルします。
docker pull nvidia/cuda:12.6.1-cudnn-runtime-ubuntu22.04
今回は、NVIDIAが提供しているcuda環境構築済みのUbuntuイメージを選びました。インストール済みのNVIDIAドライバーによってはcudaの12.6.1は利用できない可能性があります。その場合は、シェルで nvidia-smi を実行し、表示されるCUDA Version以下のイメージに変更しましょう。
プルが完了したらイメージをもとにコンテナを作成します。以下のコマンドを実行してみましょう。
docker run --gpus all --rm nvidia/cuda:12.6.1-cudnn-runtime-ubuntu22.04 nvidia-smi
上記は、Ubuntuのコンテナを作成→コンテナ内でnvidia-smiを実行/結果の取得→コンテナの終了/削除、を行っています。コンテナがGPUを認識していれば、nvidia-smi の結果が返ってくるはずです。
最後に
DockerのインストールおよびDocker環境でGPUを利用できるようにするまでの方法を紹介しました。環境構築の際の参考になれば幸いです。
コメント