问题
我正在尝试在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
版本