vz-shark:Dive2Deep

低予算を念頭にした「AI勉強/開発」「サービス開発/運用」。また記事に関連する「DIY」「備忘録」など。

Docker環境準備 〜 nvidia-docker

nvidea-docker


インストール

github.com

のReadme.mdに従ってインストール&動作確認。以下のようにnvidia-smiが動けば大丈夫。

$ docker run --runtime=nvidia --rm nvidia/cuda:9.0-base nvidia-smi
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 390.48                 Driver Version: 390.48                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 750 Ti  Off  | 00000000:65:00.0  On |                  N/A |
| 40%   30C    P8     1W /  38W |    340MiB /  2000MiB |      2%      Default |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
+-----------------------------------------------------------------------------+


使い方

上記のように --runtime=nvidia オプションを指定します。nvidia-dockerコマンド(スクリプト)は、dockerのラッパーで、コンテナ生成時( run / create )時にdockerに対して以下のオプションを付与してくれます。

  • ランタイムオプション を付与
    --runtime=nvidia

  • ホスト側$NV_GPUを、コンテナ側$NVIDIA_VISIBLE_DEVICESに反映
    ホスト側がNV_GPU="gpu1 gpu2 gpu3"の時、以下の環境変数オプションを付与
    -e NVIDIA_VISIBLE_DEVICES=gpu1,gpu2,gpu3


コンテナ生成時はnvidia-dockerを使い(nvidia-docker run / nvidia-docker create)、それ以外はどっちでも大丈夫('docker psでもnvidia-docker ps`でも一緒)。


ー以上ー