今まで気づけていませんでしたが、どうやらRootless-Dockerを使っている場合はdocker-composeでGPUを簡単には使用できないようです。
新しいDockerでは、オプション--gpus
をつけることでGPU(正確にはNVIDIAのGPU)を使用することができるようになっています。
medium.com
ですが、docker-composeはまだその仕様を取り込んでいないようで、docker-compose.yml
にgpus
の項目をつけてもエラーになってしまいます。
github.com
そこで、普通のDockerを使っている場合は、/etc/docker/daemon.json
に以下を追加して
{ "runtimes": { "nvidia": { "path": "/usr/bin/nvidia-container-runtime", "runtimeArgs": [] } } }
Dockerデーモンの古いオプションruntime
を復活させることでdocker-compose.yml
にruntime: nvidia
をつけていました。
一方、Rootless-Dockerはユーザーモードで動作するデーモンなので、daemon.json
を配置する場所が異なります。
当てずっぽうで~/.config/docker/daemon.json
に上にある内容を追加したところ、無事runtime
オプションを復活させることができました。
これでRootless-Dockerでdocker-composeを使っている人も一安心ですね。
ただし、docker-compose.yml
のversion
は2.3や2.4である必要があり、3以降のdocker-compose.yml
にはruntime
がありません。
必要な場合はdocker-compose.yml
のversion
を2.4にしておくことをおすすめします。
本音を言えばdocker-compose早くgpus
対応してくれという気持ちです。
上に貼ったGitHubのissueをしばらく追跡してればわかると思うので、もし気づいたら記事にしたいと思います。
ちなみに、Issueの一番最新のコメントにある「docker-pyのマージ待ち」ですがすでにマージ済みなのでdocker-composeへの反映はおそらく今月か来月になるんじゃないかと思ってます。
IssueとPRを見てきましたがまだdocker-compose.ymlの構文について議論がかわされているようなのでもう少しかかりそうです。
github.com