次のコマンドを使用して、コマンドラインからGPUにアクセスして、テンソルフローコンテナーを実行できます。
$ Sudo docker run --runtime=nvidia --rm gcr.io/tensorflow/tensorflow:latest-gpu
このコンテナをdocker-composeから実行できるようにしたいと思います。 --runtime
からdocker-compose.yml
フラグを指定することは可能ですか?
/etc/docker/daemon.json
を編集し、最初のレベルのキー"default-runtime": "nvidia"
を追加し、Dockerデーモン(例:"Sudo service docker restart"
)を再起動すると、そのホスト上のすべてのコンテナーがnvidiaランタイムで実行されます。
daemon.json
に関する詳細情報 こちら
現在(2018年8月)、Docker用のNVIDIAコンテナーランタイム( nvidia-docker2 ) Docker Composeをサポート .
はい、Composeフォーマット2.3を使用し、GPUサービスにランタイム:nvidiaを追加します。 Docker Composeはバージョン1.19.0以降である必要があります。
例docker-compose.yml
:
version: '2.3'
services:
nvsmi:
image: ubuntu:16.04
runtime: nvidia
environment:
- NVIDIA_VISIBLE_DEVICES=all
command: nvidia-smi
詳細 NVIDIAブログの例ではDocker Composeを使用しています NVIDIA Container Runtimeで複数のGPUコンテナーを起動する方法を示しています。
またはそれ以上:systemd
を使用し、パスが/usr/libexec/oci/hooks.d/nvidia
であると仮定します
mkdir -p /etc/systemd/system/docker.service.d/
cat > /etc/systemd/system/docker.service.d/nvidia-containers.conf <<EOF
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -D --add-runtime nvidia=/usr/libexec/oci/hooks.d/nvidia --default-runtime=nvidia
EOF
systemctl daemon-reload
systemctl restart docker
構成ステップで--runtime=nvidia
を設定したため、default-runtime=nvidia
を指定する必要はありません。
docker run --rm gcr.io/tensorflow/tensorflow:latest-gpu
私の KATAランタイムに関するチュートリアル から着想を得たソリューション。