Cuando uso docker-compose up , inicio el programa, ¡el código funciona bien! Pero cuando uso docker stack deploy -c docker-compose.yml test para iniciar el programa, no puede encontrar dispositivos nvidia visibles. Mi docker-compose.yml y los registros de errores se muestran a continuación.
Estoy muy confundido acerca de por qué tengo las mismas configuraciones, usando diferentes formas de lanzamiento de docker-compose up y docker stack deploy -c docker-compose.yml test , la primera funciona bien, pero la segunda no. ¿Actualmente no es perfecto para la compatibilidad con Docker Swarm para GPU, o hay otras formas que no he encontrado?
docker version: 18.06.0-ce NVIDIA Docker: 1.0.1 Ubuntu: 16:04Por supuesto, modifiqué el archivo /etc/docker/daemon.json, cambié el tipo de tiempo de ejecución. Y reiniciarlo.
{ "default-runtime": "nvidia", "runtimes": { "nvidia": { "path": "/usr/bin/nvidia-container-runtime", "runtimeArgs": [] } } } sudo systemctl daemon-reload sudo systemctl start docker version: "3" volumes: nvidia_driver_430.14: external: true services: tts-server: build: context: ./ dockerfile: ./docker/tts_server/Dockerfile deploy: replicas: 1 image: tts-system/tts-server-gpu environment: NVIDIA_VISIBLE_DEVICES: 0 devices: - /dev/nvidia0 - /dev/nvidiactl - /dev/nvidia-uvm volumes: - ./models:/tts_system/models:ro - ./config:/tts_system/config:ro - nvidia_driver_430.14:/usr/local/nvidia:ro networks: - overlay ports: - "9091:9090" 2019-07-02 07:50:24.805114: I tensorflow/core/platform/profile_utils/cpu_utils.cc:94] CPU Frequency: 2499885000 Hz 2019-07-02 07:50:24.808418: I tensorflow/compiler/xla/service/service.cc:150] XLA service 0x4112870 executing computations on platform Host. Devices: 2019-07-02 07:50:24.808457: I tensorflow/compiler/xla/service/service.cc:158] StreamExecutor device (0): <undefined>, <undefined> 2019-07-02 07:50:24.811640: E tensorflow/stream_executor/cuda/cuda_driver.cc:300] failed call to cuInit: CUDA_ERROR_NO_DEVICE: no CUDA-capable device is detected 2019-07-02 07:50:24.811684: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:155] no NVIDIA GPU device is present: /dev/nvidia0 does not exist E0702 07:50:24.811846 1 decoder.cc:80] Filed to create session: Invalid argument: 'visible_device_list' listed an invalid GPU id '0' but visible device count is -1Este problema me ha estado molestando durante mucho tiempo, muchas gracias.
Según el tema,
https://github.com/docker/compose/issues/6691
Todavía no hay soporte oficial para --gpus y la referencia de tiempo de ejecución de los dispositivos nvidia en la versión 3 de docker-compose.
Pero puede instalar la versión 2 de nvidia-docker y tener la siguiente configuración en /etc/docker/daemon.json para que los dispositivos visibles de nvidia estén disponibles dentro de su servicio de enjambre.
/etc/docker/daemon.json
{ "default-runtime":"nvidia", "runtimes":{ "nvidia":{ "path":"nvidia-container-runtime", "runtimeArgs":[ ] } } }docker-compose.yaml
Agregue la clave de entorno en el archivo de redacción en el siguiente formato.
... environment: - NVIDIA_VISIBLE_DEVICES=0 ...Los valores permitidos para NVIDIA_VISIBLE_DEVICES pueden ser
NVIDIA_VISIBLE_DEVICES=todos
Consulte: https://github.com/NVIDIA/nvidia-container-runtime#nvidia_visible_devices
Las configuraciones mencionadas anteriormente parecen estar funcionando bien para mí.