wake-up-neo.com

Wie gebe ich die nvidia-Laufzeit in docker-compose.yml an?

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?

25
rissem

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.jsonhier

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.

25
cedrickchee

Oder besser: Verwenden Sie systemd und gehen Sie davon aus, dass der Pfad /usr/libexec/oci/hooks.d/nvidia Lautet.

Konfigurieren

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

Neustart

systemctl daemon-reload
systemctl restart docker

Demo

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 .

3
Abdennour TOUMI