本サイトでは、アフィリエイト広告およびGoogleアドセンスを利用しています。

コンテナ内で GPU を使う (Windows 環境)

気付いたら最新の環境を構築すると、コンテナ内でも GPU (CUDA) を利用可能になっていました。

必要なもの

  • Windows 版の Docker Desktop 4.4.4
  • Windows 10 21H2 (64bit)
  • NVIDIA グラフィックボードと最新ドライバ
    • GeForce 3060Ti
    • ドライババージョン 511.23, 511.79

これらの環境を用意すると、コンテナの中でも GPU が使用可能となり、ディープラーニングの学習用として環境構築の手間が減らせそうです。

手順

まずは、Docker Desktop をインストールして、このときに WSL2 Integration を有効化します。
さらに、 WSL2 環境で動作する Ubuntu 20.04 をインストールします。
このとき、Ubuntu が WSL2 で動作しているかを確認しておきます。

このときの確認コマンドは以下の通りです。結果、VERSION 2 となっていることを確認します。

wsl -l -v

また Windows 環境の NVIDIA ドライバも新しいものをインストールします。対応バージョンの境目までは確認できていませんが、迷ったら上記で挙げたバージョン以降を使って下さい。

WSL2 の Ubuntu 環境に NVIDIA ドライバをインストールしたり、cuda 関連のソフトウェアをインストールなどは不要です。

動作確認

NVIDIA が提供しているコンテナを使用して、コンテナ内で NVIDIA GPU を認識しているかの確認をしてみます。まずはコンテナを起動して、その中のシェルに入ってみるため、以下のコマンドを実行します。

docker run --gpus all -it --rm  nvcr.io/nvidia/pytorch:21.12-py3  /bin/bash

シェルに入った後、 nvidia-smi コマンドを実行してみると、うまく GPU を認識できていることが分かります。

docker コマンドで、 “–gpus all” の項目を消すと、 nvidia-smi コマンドが実行出来ませんので、その差を比べてみると確かに GPU が認識しているなと感じられます。

このままだとメモリ割当部分で警告が出るので、実使用の際には –ipc=host や –shm-size=1g などのオプションを使って別途割当指示が必要です。

試しにディープラーニングのタスクを走らせてみると、Windows のタスクマネージャーからも GPU CUDA の使用率が上がることを確認出来ます。

まとめ

コンテナで簡単に CUDA, GPU を有効にした学習タスクを実行できるようになるので、とても便利になります。最初の環境構築が今までは大変だったので、これでかなり楽になる印象があるので、とてもよいなと感じています。

余談ですが、すこし昔の NVIDIA コンテナを使うとコンテナ内で 「WARNING: The NVIDIA Driver was not detected.」の警告が出てしまいました。しかしながら、 nvidia-smi コマンドが実行可能であったり、CUDA のタスクも問題なく実行出来たので、まぁ大丈夫かなと思っています。

Docker DesktopでGPUを使う
Windows 10 の普通環境でも Docker Desktop を使って、コンテナ内で GPU (CUDA) を利用できるようになっていました。これまでは Insider Preview を使用する必要があったり、ベータ対応だったりと一
プログラミング
すらりんをフォローする
すらりん日記
タイトルとURLをコピーしました