LoginSignup
1
0

WindowsゲーミングPCでGPUを使ったコンテナを実行する方法

Last updated at Posted at 2024-01-09

はじめに

NVIDIA GPU が乗っている Windows ゲーミング PC にて、GPU を使ったコンテナを実行するための手順をざっと紹介します。

前提条件

  • NVIDIA GPU を搭載したゲーミング PC
  • Windows 環境にて適切なドライバーが適用されていること (*1)
  • Windows 管理者権限を持つアカウントを利用可能なこと

*1 NVIDIA 公式ドライバに CUDA ドライバは含まれているはずです。私が試した環境は、工場出荷時の環境となります。DCH デバイスドライバのみをインストールした状態です。NVIDIA GeForce Experience はインストールしていません。

手順

手順は次のようになります。

  • WSL のインストール
  • docker engine のインストール
  • NVIDIA Container Toolkit のインストール (詳細はこちらをの英語ページをご確認下さい。Host OS に CUDA ドライバをインストールすることなどがビジュアルで分かります)
  • GPU を使うコンテナの動作確認

WSL のインストール

PowerShell または Windows コマンド プロンプトを管理者モードで開き、次のコマンドを実行します。詳しい手順は、Microsoft のドキュメントをご参照下さい。

wsl --install

docker engine のインストール

この作業は、ubuntu にて実行して下さい。docker 公式サイトにある最新バージョンのdocker engine の ubuntu へのインストールステップを参照しながら作業します。具体的な手順は次のようになります。

sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

ここまでで docker engine が動作する状態になります。sudo docker ps -a もしくは docker ps -a (post-installation steps を実行した場合)などで docker engine が正常に動作していることをご確認下さい。

NVIDIA Container Toolkit のインストール

NVIDIA Container Toolkit を WSL 環境にインストールします。インストール先がWindows ではないことをご注意下さい。公式ページの Installing the NVIDIA Container Toolkitに詳しい説明があります。WSL の ubuntu へのコピペは注意して作業を行って下さい。コピペの失敗で適切に動作しない、ということが起きるかと思います。

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-get update

コピペのミスがあったりすると、次のコマンドで失敗することがあります。

sudo apt-get install -y nvidia-container-toolkit

私は docker を再起動しないと正常に動作しませんでした。

sudo systemctl restart docker

GPU を使うコンテナの動作確認

まず ubuntu にて nvidia-smi を実行し CUDA バージョンを確認して下さい。

$ nvidia-smi
Fri Dec 29 17:44:52 2023
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 530.52                 Driver Version: 531.88       CUDA Version: 12.1     |
|-----------------------------------------+----------------------+----------------------+
| 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 RTX 4060 L...    On | 00000000:01:00.0 Off |                  N/A |
| N/A   35C    P3               15W /  N/A|      0MiB /  8188MiB |      0%      Default |
|                                         |                      |                  N/A |
+-----------------------------------------+----------------------+----------------------+

+---------------------------------------------------------------------------------------+
| Processes:                                                                            |
|  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
|        ID   ID                                                             Usage      |
|=======================================================================================|
|  No running processes found                                                           |
+---------------------------------------------------------------------------------------+

docker hub/nvidia/cuda にアクセスし、ホストのバージョンと同じものを見つけて下さい。私の環境の場合、CUDA 12.1 だったので 12.1.0-base-ubuntu22.04 をコンテナとして起動し動作を確認しました。

$ docker run --rm --gpus all nvidia/cuda:12.1.0-base-ubuntu22.04 nvidia-smi
Fri Dec 29 08:50:11 2023                                   +---------------------------------------------------------------------------------------+
| NVIDIA-SMI 530.52                 Driver Version: 531.88       CUDA Version: 12.1     |
|-----------------------------------------+----------------------+----------------------+
| 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 RTX 4060 L...    On | 00000000:01:00.0 Off |                  N/A |
| N/A   35C    P3               14W /  N/A|      0MiB /  8188MiB |      0%      Default |
|                                         |                      |                  N/A |
+-----------------------------------------+----------------------+----------------------+

+---------------------------------------------------------------------------------------+
| Processes:                                                                            |
|  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
|        ID   ID                                                             Usage      |
|=======================================================================================|
|  No running processes found                                                           |
+---------------------------------------------------------------------------------------+

これで作業は完了となります。あとは目的の GPU を使ったアプリケーションを起動してお楽しみ下さい。

インストールが失敗していた場合

NVIDIA Container Toolkit のインストールに失敗した場合、もしくは再起動しなかった場合、次のようなエラーが出力されることがあります。インストールの結果を確認したり、docker daemon の再起動を行うなど対応してみて下さい。

docker: Error response from daemon: could not select device driver "" with capabilities: [[gpu]].

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0