LoginSignup
15
11

More than 1 year has passed since last update.

nvidia-dockerをdocker-composeで動かす(ver3系)

Last updated at Posted at 2021-03-15

はじめに

docker-composeでGPUコンテナを動かしたいが、
公式の通りに書くときちんと読み込んでくれず、、
現状ググるとver2系の書き方ばかりでver3系は全く無く、、
と割と詰まったので、他の人が詰まらないようここに共有。

docker-compose.yamlの書き方例(ver3系)

docker-compose.yaml
version: '3.8'
services:
  sample:
    image: nvidia/cuda:11.2.1-base
    command: nvidia-smi
    deploy:
      resources:
        reservations:
          devices:
           - driver: nvidia
             capabilities: [utility, compute, video]

各パラメータの詳細は公式を参考に.

動作確認

$ docker-compose version
docker-compose version 1.28.5, build unknown
:
$ docker-compose up
Starting sample_sample_1 ... done
Attaching to sample_sample_1
sample_1  | Mon Mar 15 10:05:43 2021       
sample_1  | +-----------------------------------------------------------------------------+
sample_1  | | NVIDIA-SMI 460.39       Driver Version: 460.39       CUDA Version: 11.2     |
sample_1  | |-------------------------------+----------------------+----------------------+
sample_1  | | GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
sample_1  | | Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
sample_1  | |                               |                      |               MIG M. |
sample_1  | |===============================+======================+======================|
sample_1  | |   0  GeForce GTX 960     Off  | 00000000:0E:00.0 Off |                  N/A |
sample_1  | | 30%   53C    P2    38W / 130W |    652MiB /  4042MiB |     46%      Default |
sample_1  | |                               |                      |                  N/A |
sample_1  | +-------------------------------+----------------------+----------------------+
sample_1  |                                                                                
sample_1  | +-----------------------------------------------------------------------------+
sample_1  | | Processes:                                                                  |
sample_1  | |  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
sample_1  | |        ID   ID                                                   Usage      |
sample_1  | |=============================================================================|
sample_1  | +-----------------------------------------------------------------------------+
sample_sample_1 exited with code 0

docker-composeのバージョンに注意

docker-composeのバージョンが古い場合、以下のようなエラーが出る.

$ docker-compose version
docker-compose version 1.25.0, build unknown
:
$ docker-compose up
ERROR: The Compose file './docker-compose.yaml' is invalid because:
services.sample.deploy.resources.reservations value Additional properties are not allowed ('devices' was unexpected)

docker-composeのGitHub によると、1.28から上の書き方に対応した模様.

(作者はaptで入れたら1.25だったので、とりあえずpipで入れなおしました)

ver2系(おまけ)

ちなみに、ver2系では以下のように書く.

docker-compose.yaml
version: '2.4'
services:
  sample:
    image: nvidia/cuda:11.2.1-base
    command: nvidia-smi
    runtime: nvidia
    environment:
      NVIDIA_VISIBLE_DEVICES: all
      NVIDIA_DRIVER_CAPABILITIES: utility,compute,video

ただし、ver2系ではreplicas等がサポートされていない.
あと、コンテナのために環境変数 NVIDIA_* を入れるのも気持ち悪い(個人の感想です).
なので、どんどんver3形式で書いていきましょう.

15
11
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
15
11