2020/04/11

DockerでGPUを使用する

背景


仕事で、複数のエッジコンピュータにデプロイを行うにあたり、Dockerイメージを利用する必要があった


記事の目的


DockerでGPUを使用する


DockerでGPU


ここでは、DockerでGPUを使用する方法について記載する。


DockerでGPUを使用する手順

DockerでGPUを使用する手順は、下記の通りである。
  1. CUDAイメージをpull
    1. $ sudo docker pull nvidia/cuda:10.0-cudnn7-devel-ubuntu16.04
  2. GPUオプション(--gpus all)付きで実行
    1. $ sudo docker run --gpus all nvidia/cuda:10.0-cudnn7-devel-ubuntu16.04 nvidia-smi
    2. +-----------------------------------------------------------------------------+
    3. | NVIDIA-SMI 430.26 Driver Version: 430.26 CUDA Version: 10.2 |
    4. |-------------------------------+----------------------+----------------------+
    5. | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
    6. | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
    7. |===============================+======================+======================|
    8. | 0 GeForce GTX 108... Off | 00000000:17:00.0 Off | N/A |
    9. | 23% 30C P8 9W / 250W | 2MiB / 8192MiB | 0% Default |
    10. +-------------------------------+----------------------+----------------------+


備考

  • エラーが出る場合
  • 実行時に下記のようなエラーが出る場合がある。
    1. $ sudo docker run --gpus all nvidia/cuda:10.0-cudnn7-devel-ubuntu16.04 nvidia-smi
    2. docker: Error response from daemon: linux runtime spec devices: could not select device driver "" with capabilities: [[gpu]].
    3. ERROR[0000] error waiting for container: context canceled
    対処法
    1. 対策スクリプトの作成
      1. $ nano ./nvidia-container-runtime-script.sh
      nvidia-container-runtime-script.sh
      1. curl -s -L https://nvidia.github.io/nvidia-container-runtime/gpgkey | \
      2. sudo apt-key add -
      3. distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
      4. curl -s -L https://nvidia.github.io/nvidia-container-runtime/$distribution/nvidia-container-runtime.list | \
      5. sudo tee /etc/apt/sources.list.d/nvidia-container-runtime.list
      6. sudo apt-get update
      7. sudo apt-get install nvidia-container-runtime
    2. 対策スクリプトの実行
      1. $ chmod 777 ./nvidia-container-runtime-script.sh
      2. $ sudo ../nvidia-container-runtime-script.sh
    3. dockerサービスの再起動
      1. $ sudo systemctl restart docker
    4. 動作テスト
      1. $ sudo docker run --gpus all nvidia/cuda:10.0-cudnn7-devel-ubuntu16.04 nvidia-smi


まとめ


  • DockerでGPUを使用する方法について調査、記載した


参考文献




変更履歴


  1. 2020/04/11: 新規作成

0 件のコメント:

コメントを投稿

MQTTの導入

背景 IoTデバイスの接続環境構築のため、MQTT(mosquitto)の導入を行った。 記事の目的 MQTT(mosquitto)をUbuntuに導入する mosquitto ここではmosquittoについて記載する。 MQTT MQTT(Message Qu...