首页 > 解决方案 > 在 keras 中使用 multi_gpu_model 时出现 valueError

问题描述

我正在使用带有 4 个 Tesla K80 GPU 的谷歌云虚拟机。

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

ValueError: 要使用 调用multi_gpu_modelgpus=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_modelgpus=2我们希望以下设备可用:['/cpu:0', '/gpu:0', '/gpu:1']。然而这台机器只有:['/cpu:0', '/xla_cpu:0', '/xla_gpu:0', '/gpu:0']。尝试减少gpus.

谁能帮我解决这个错误。谢谢!

标签: pythontensorflowkerasgoogle-cloud-platformgpu

解决方案


看起来 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 驱动程序。在这里咨询。


推荐阅读