it-swarm-es.tech

¿Cómo especifico nvidia runtime de docker-compose.yml?

Puedo ejecutar un contenedor de tensorflow con acceso a la GPU desde la línea de comandos con el siguiente comando

$ Sudo docker run --runtime=nvidia --rm gcr.io/tensorflow/tensorflow:latest-gpu

Me gustaría poder ejecutar este contenedor desde docker-compose. ¿Es posible especificar la bandera --runtime de docker-compose.yml?

25
rissem

Debería editar /etc/docker/daemon.json, agregando la clave de primer nivel "default-runtime": "nvidia", reiniciar docker daemon (ej. "Sudo service docker restart") y luego todos los contenedores en ese Host se ejecutarán con nvidia runtime.

Más información sobre daemon.jsonaquí

Actualmente (agosto de 2018), el tiempo de ejecución del contenedor NVIDIA para Docker ( nvidia-docker2 ) admite Docker Compose .

Sí, use el formato Compose 2.3 y agregue runtime: nvidia a su servicio de GPU. Docker Compose debe ser la versión 1.19.0 o superior.

Ejemplo docker-compose.yml:

version: '2.3'

services:
  nvsmi:
    image: ubuntu:16.04
    runtime: nvidia
    environment:
      - NVIDIA_VISIBLE_DEVICES=all
    command: nvidia-smi

Más por ejemplo, el blog de NVIDIA usa Docker Compose para mostrar cómo iniciar múltiples contenedores de GPU con NVIDIA Container Runtime.

25
cedrickchee

O mejor: usando systemd y suponiendo que la ruta es /usr/libexec/oci/hooks.d/nvidia

Configurar

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

Reiniciar

systemctl daemon-reload
systemctl restart docker

Manifestación

No es necesario especificar --runtime=nvidia ya que configuramos default-runtime=nvidia en el paso de configuración.

docker run --rm gcr.io/tensorflow/tensorflow:latest-gpu

Solución inspirada en mi tutorial sobre el tiempo de ejecución de KATA .

3
Abdennour TOUMI