機械学習とかでdockerで環境を作成して、GPU使って学習回したいことはあるあるですよね

ちょっと前までは
docker-compose.ymlで

runtime: nvidia

で設定ができてたんですけど、これがレガシーな非推奨になっているらしいので新しい書き方をメモしておく。

シンプルさに欠けるから絶対覚えられる気がしない

version: '3'

services:
  name:
    build: ./docker
    shm_size: '16gb'
    volumes:
      - [host mount path]:/opt/program/
    ports:
      - 8080:8080
    working_dir: /opt/program/
    command: tail -f /dev/null

	# ここがGPU使うときの新しい書き方
    deploy:
      resources:
        reservations:
          devices:
          - driver: nvidia
            capabilities: [gpu]

この書き方でもエラーが出ることはある
こんなやつ

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

そんな時は、https://github.com/NVIDIA/nvidia-docker/issues/1243

ここにもあるけど、toolkitのインストールだったり、dockerの再インストールだったりをすると治るらしい。

僕の場合はdockerの再インストールで動くようになった

この書き方の方が任意の量のGPUを認識させたりできるらしくて自由度が高いとかなんとか。
貧乏MLエンジニアの僕は1080 tiを1枚しか使わないからあんま関係ないんだけどねw

機械学習で環境構築ってマジ大変だよねw