docker stack使用GPU部署,但可以';找不到nvidia设备 docker stack使用GPU部署,但找不到nvidia设备 说明:

docker stack使用GPU部署,但可以';找不到nvidia设备 docker stack使用GPU部署,但找不到nvidia设备 说明:,docker,deployment,stack,gpu,Docker,Deployment,Stack,Gpu,当我使用docker compose up启动程序时,代码运行良好!但是当我使用docker-stack deploy-c docker-compose.yml test启动程序时,它找不到可见的nvidia设备。我的docker-compose.yml和错误日志如下所示 我很困惑为什么我有相同的配置,使用不同的lanching方式,如docker compose up和docker stack deploy-c docker-compose.yml test,第一个运行良好,但第二个运行不正常

当我使用
docker compose up
启动程序时,代码运行良好!但是当我使用
docker-stack deploy-c docker-compose.yml test
启动程序时,它找不到可见的nvidia设备。我的docker-compose.yml和错误日志如下所示

我很困惑为什么我有相同的配置,使用不同的lanching方式,如
docker compose up
docker stack deploy-c docker-compose.yml test
,第一个运行良好,但第二个运行不正常。它目前是否不适合docker swarm支持GPU,或者我还没有找到其他方法

环境配置 /etc/docker/daemon.json 当然,我修改了文件/etc/docker/daemon.json,更改了运行时类型。然后重新启动它

{
  "default-runtime": "nvidia",
  "runtimes": {
    "nvidia": {
      "path": "/usr/bin/nvidia-container-runtime",
      "runtimeArgs": []
    }
  }
}
docker-compose.yml配置文件 程序的错误日志
2019-07-02 07:50:24.805114:I tensorflow/core/platform/profile_utils/cpu_utils.cc:94]cpu频率:2499885000 Hz
2019-0702 07:50: 24.808418:I TysFrace/编译器/ XLA/Service / Service .CC:150)XLA服务0x4112870在平台主机上执行计算。设备:
2019-07-02 07:50:24.808457:I tensorflow/compiler/xla/service/service.cc:158]流执行器设备(0):,
2019-07-02 07:50:24.811640:E tensorflow/stream\u executor/cuda/cuda\u driver.cc:300]调用cuInit失败:cuda\u错误\u无设备:未检测到支持cuda的设备
2019-07-02 07:50:24.811684:I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:155]不存在NVIDIA GPU设备:/dev/nvidia0不存在
E0702 07:50:24.811846 1解码器。cc:80]用于创建会话的文件:无效参数:“visible_device_list”列出了无效的GPU id“0”,但可见设备计数为-1
这个问题困扰了我很长时间,非常感谢。

根据问题

docker compose版本3中还没有对--GPU和nvidia设备的运行时参考的官方支持

但是您可以安装nvidia docker版本2,并在/etc/docker/daemon.json中进行以下配置 为了使可用的nvidia设备在您的swarm服务中可见

/etc/docker/daemon.json

{
   "default-runtime":"nvidia",
   "runtimes":{
      "nvidia":{
         "path":"nvidia-container-runtime",
         "runtimeArgs":[

         ]
      }
   }   
}
docker-compose.yaml

以以下格式在compose文件中添加环境密钥

...
environment:
    - NVIDIA_VISIBLE_DEVICES=0
...
NVIDIA_VISIBLE_设备的允许值可以是

NVIDIA_可见_设备=全部

参考:

上面提到的配置对我来说似乎很好

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 -1
{
   "default-runtime":"nvidia",
   "runtimes":{
      "nvidia":{
         "path":"nvidia-container-runtime",
         "runtimeArgs":[

         ]
      }
   }   
}
...
environment:
    - NVIDIA_VISIBLE_DEVICES=0
...