チラシの裏からうっすら見える外枠の外のメモ書き

新聞に挟まってる硬い紙のチラシの裏からうっすら見える外枠の外に走り書きされたようなものです。思いついたときにふらふらと。

Rootless-Dockerのdocker-composeでGPUを使おう

今まで気づけていませんでしたが、どうやらRootless-Dockerを使っている場合はdocker-composeでGPUを簡単には使用できないようです。

新しいDockerでは、オプション--gpusをつけることでGPU(正確にはNVIDIAGPU)を使用することができるようになっています。 medium.com

ですが、docker-composeはまだその仕様を取り込んでいないようで、docker-compose.ymlgpusの項目をつけてもエラーになってしまいます。 github.com そこで、普通のDockerを使っている場合は、/etc/docker/daemon.jsonに以下を追加して

{
    "runtimes": {
        "nvidia": {
            "path": "/usr/bin/nvidia-container-runtime",
            "runtimeArgs": []
        }
    }
}

Dockerデーモンの古いオプションruntimeを復活させることでdocker-compose.ymlruntime: nvidiaをつけていました。

一方、Rootless-Dockerはユーザーモードで動作するデーモンなので、daemon.jsonを配置する場所が異なります。 当てずっぽうで~/.config/docker/daemon.jsonに上にある内容を追加したところ、無事runtimeオプションを復活させることができました。 これでRootless-Dockerでdocker-composeを使っている人も一安心ですね。

ただし、docker-compose.ymlversionは2.3や2.4である必要があり、3以降のdocker-compose.ymlにはruntimeがありません。 必要な場合はdocker-compose.ymlversionを2.4にしておくことをおすすめします。

本音を言えばdocker-compose早くgpus対応してくれという気持ちです。 上に貼ったGitHubのissueをしばらく追跡してればわかると思うので、もし気づいたら記事にしたいと思います。

ちなみに、Issueの一番最新のコメントにある「docker-pyのマージ待ち」ですがすでにマージ済みなのでdocker-composeへの反映はおそらく今月か来月になるんじゃないかと思ってます。 IssueとPRを見てきましたがまだdocker-compose.ymlの構文について議論がかわされているようなのでもう少しかかりそうです。 github.com