docker-compose,nvidia和tensorflow - 找不到GPU

时间:2018-03-20 08:13:42

标签: docker tensorflow cuda nvidia-docker

问题

我正在尝试在docker容器中运行tensorflow应用程序。应用程序设置为根据卡号使用GPU - 此编号使用环境变量分配,例如:

if 'GPU_DEVICE' in os.environ:
    gpu_device = int(os.environ['GPU_DEVICE'])
    logging.info('gpu device is %s\n' % gpu_device)
with tf.device("/gpu:"+str(gpu_device)):

然而,应用程序没有看到任何GPU,并且失败并出现以下错误:

  

img_fnd | InvalidArgumentError(参见上面的回溯):不能   为操作'img_base / Adam_1'分配设备:操作是   显式分配给/ device:GPU:4但可用的设备是[   / job:localhost / replica:0 / task:0 / device:CPU:0]。确保设备   规范是指有效的设备。 img_fnd | [[节点:   img_base / Adam_1 = VariableV2_class = [“loc:@img_base”],container =“”,   dtype = DT_FLOAT,shape = [1,1],shared_name =“”,   _device = “/设备:GPU:4”]]

Nvidia和Docker

我可以运行docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi并查看所有可用GPU的列表。

设置

我已将/etc/docker/daemon.json修改为:

{
"default-runtime": "nvidia",
    "runtimes":  {
        "nvidia": {
            "path": "/usr/bin/nvidia-container-runtime",
            "runtimeArgs": []
        }
    }
}

然后使用sudo service docker restart重新启动Docker。

多克尔-撰写 我的docker-compose文件是

version: '3'
services:
  imgfnd:
    devices:
    - /dev/nvidia0
    - /dev/nvidia1
    - /dev/nvidia2
    - /dev/nvidia3
    - /dev/nvidia4
    - /dev/nvidiactl
    - /dev/nvidia-uvm
    image: "my/tf:imgfnd"
    ports:
     - "5000:5000"
    environment:
     - GPU_DEVICE=4
     - NVIDIA_VISIBLE_DEVICES all
     - NVIDIA_DRIVER_CAPABILITIES compute,utility
    tty: true

版本

  • Docker版本17.12.1-ce,build 7390fc6
  • docker-compose版本1.19.0,build 9e633ef

0 个答案:

没有答案