Ich kann einen Tensorflow-Container mit Zugriff auf die GPU über die Befehlszeile mit dem folgenden Befehl ausführen
$ Sudo docker run --runtime=nvidia --rm gcr.io/tensorflow/tensorflow:latest-gpu
Ich möchte diesen Container von Docker-Compose ausführen können. Ist es möglich das --runtime
Flagge von docker-compose.yml
?
Sie sollten /etc/docker/daemon.json
Bearbeiten, den ersten Ebenenschlüssel "default-runtime": "nvidia"
Hinzufügen, den Docker-Daemon neu starten (z. B. "Sudo service docker restart"
), Und dann werden alle Container auf diesem Host mit nvidia-Laufzeit ausgeführt.
Weitere Informationen zu daemon.json
hier
Derzeit (August 2018) ist die NVIDIA-Container-Laufzeit für Docker ( nvidia-docker2 ) nterstützt Docker Compose .
Ja, verwenden Sie das Compose-Format 2.3 und fügen Sie Ihrem GPU-Dienst Runtime: nvidia hinzu. Docker Compose muss Version 1.19.0 oder höher sein.
Beispiel docker-compose.yml
:
version: '2.3'
services:
nvsmi:
image: ubuntu:16.04
runtime: nvidia
environment:
- NVIDIA_VISIBLE_DEVICES=all
command: nvidia-smi
More Beispiel aus dem NVIDIA-Blog verwendet Docker Compose um zu zeigen, wie mehrere GPU-Container mit der NVIDIA Container Runtime gestartet werden.
Oder besser: Verwenden Sie systemd
und gehen Sie davon aus, dass der Pfad /usr/libexec/oci/hooks.d/nvidia
Lautet.
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
Sie müssen --runtime=nvidia
Nicht angeben, da wir default-runtime=nvidia
Im Konfigurationsschritt festgelegt haben.
docker run --rm gcr.io/tensorflow/tensorflow:latest-gpu
Lösung Inspiriert von meinem Tutorial zur KATA-Laufzeit .