LoginSignup
33
28

More than 3 years have passed since last update.

docker-composeでgpuを使う方法

Last updated at Posted at 2019-09-07

準備

公式のDocker導入方法

docker、docker-composeがインストールされており、カレントディレクトリにdocker-compose.ymlがあるとする。

docker-compoose.yml
version: '2.4'
services:
  nvsmi:
    image: ubuntu:16.04
    runtime: nvidia
    environment:
      - NVIDIA_VISIBLE_DEVICES=all
    command: nvidia-smi

NVIDIA_VISIBLE_DEVICESについては
nvidia-container-runtime

qiitaでは
NVIDIA GPU が使える Docker イメージの作り方

DockerでのGPU使用方法

コンテナ内でgpuを使うには

$docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi

のように--runtime=nvidiaでオプション設定する

Docker19.03以降では

$ docker run --gpus all --rm nvidia/cuda nvidia-smi

のように--gpus allでオプション設定する
nvidia-docker wiki

Docker-composeでのGPU使用方法

複数のコンテナを立ち上げるdocker-composeでgpuを使う方法がわからなかったので調べた。

docker-composeでもgpuを使うにはruntimeで設定するとのこと
How do I specify nvidia runtime from docker-compose.yml?

そこで上記のようにdocker-compose.ymlを作成

では、実行

$ docker-compose up                    
 ERROR: The Compose file './docker-compose.yml' is invalid  because:
 Unsupported config option for services.nvidia: 'runtime'

あれ、gpuが使えない

docker-composeにruntimeが追加されたのは1.19以降
Added support for the runtime option in service definitions
とのことなので、$ sudo apt install docker-composeでインストールしたdocker-composeのversionを調べると

$ docker-compose -v
  docker-compose version 1.17.1, build unknown

バージョンが2.3より古い!!!

$ sudo apt remove docker-compose 

で削除

公式のdocker compose releasesからver1.24.1をダウンロードして実行権限を与える

$ curl -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
$ chmod +x /usr/local/bin/docker-compose

docker-compose version確認

$ docker-compose -v
  docker-compose version 1.24.1, build 4667896b

実行してみると

$ docker-compose up

image.png


参考
nvidia-dockerでGPUコンテナの作成

33
28
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
33
28