在keras中使用multi_gpu_model时的valueError

问题描述 投票:0回答:4

我使用谷歌云VM与4特斯拉K80 GPU。

我使用multi_gpu_model和gpus = 4运行keras模型(因为我有4个gpu)。但是,我收到以下错误

ValueError:要使用multi_gpu_model调用gpus=4,我们希望以下设备可用:['/ cpu:0','/ gpu:0','/ gpu:1','/ gpu:2','/ gpu: 3' ]。但是这台机器只有:['/ cpu:0','/ xla_cpu:0','/ xla_gpu:0','/ gpu:0']。尝试减少gpus

我可以看到这里只有两个gpu,即'/xla_gpu:0', '/gpu:0'。所以,我尝试使用gpus = 2并再次得到以下错误

ValueError:要使用multi_gpu_model调用gpus=2,我们希望以下设备可用:['/ cpu:0','/ gpu:0','/ gpu:1']。但是这台机器只有:['/ cpu:0','/ xla_cpu:0','/ xla_gpu:0','/ gpu:0']。尝试减少gpus

任何人都可以帮我解决这个错误。谢谢!

python tensorflow keras google-cloud-platform gpu
4个回答
2
投票

看起来Keras只能看到其中一个GPU。

确保所有4个GPU都可以访问,您可以将device_lib与TensorFlow一起使用。

from tensorflow.python.client import device_lib

def get_available_gpus():
    local_device_protos = device_lib.list_local_devices()
    return [x.name for x in local_device_protos if x.device_type == 'GPU']

您可能需要在实例上手动安装或更新GPU驱动程序。咨询here


1
投票

TensorFlow只看到一个GPU(gpu和xla_gpu设备是同一物理设备上的两个后端)。你在设置CUDA_VISIBLE_DEVICES吗? nvidia-smi是否显示所有GPU?


0
投票

您可以使用以下代码检查所有设备列表:

from tensorflow.python.client import device_lib
device_lib.list_local_devices()

0
投票

这可以通过使用tensorflow而不是tensorflow-gpu引起。

解决此问题的一种方法是:

$ pip uninstall tensorflow
$ pip install tensorflow-gpu

更多信息可以在这里找到:https://stackoverflow.com/a/42652258/6543020

© www.soinside.com 2019 - 2024. All rights reserved.