使用 GPU 在 EC2 实例上训练 Keras 模型很慢

Posted

技术标签:

【中文标题】使用 GPU 在 EC2 实例上训练 Keras 模型很慢【英文标题】:Training Keras model on EC2 instance with GPU is slow 【发布时间】:2021-04-10 16:37:27 【问题描述】:

我一直在尝试使用 keras 创建卷积神经网络。我已经取得了一些不错的结果,但是在我的笔记本电脑上进行训练可以训练几个小时,所以我想我可以使用 AWS 的 GPU 实例来加快速度。我旋转了一个 g3dn.2xlarge 并假设我会看到训练飞速发展。相反,我发现脚步移动的速度和我的笔记本电脑一样慢。

我使用以下教程设置我的实例并启动 Jupyter 笔记本服务器:https://aws.amazon.com/getting-started/hands-on/get-started-dlami/

在浏览器中打开 jupyter 后,我将其设置为 conda_tensorflow2_p36 环境。导入 tensorflow/keras 库后,我有这样一行:

print("可用的 GPU 数量:", len(tf.config.experimental.list_physical_devices('GPU')))

它确认有 1 个 GPU 可用。我认为我要做的不是特别大,我的训练集是属于 859 个类的 42950 张图像,我的验证集是属于 859 个类的 21463 张图像。所以每个班级或多或少 50 张图像,我知道这不是很多,但我在我的 PC 上得到了足够准确的结果,所以不用担心。训练集的批大小为 25,验证集的批大小为 10。与卷积神经网络的架构方式无关,我认为它在 EC2 实例上的运行速度会比在我蹩脚的笔记本电脑上运行得更快。我在这里做错了什么?

更新 1 我在 EBS 卷上运行笔记本,数据也在那里,这可能是个问题吗?

更新 2 我添加了以下几行来测试:

print(device_lib.list_local_devices())
import keras.backend.tensorflow_backend as tfback
tfback._get_available_gpus()

输出是这样的(好像是在使用GPU):

[name: "/device:CPU:0"
device_type: "CPU"
memory_limit: 268435456
locality 

incarnation: 15554497242449630399
, name: "/device:XLA_CPU:0"
device_type: "XLA_CPU"
memory_limit: 17179869184
locality 

incarnation: 10944104228818506418
physical_device_desc: "device: XLA_CPU device"
, name: "/device:XLA_GPU:0"
device_type: "XLA_GPU"
memory_limit: 17179869184
locality 

incarnation: 6119898251220801089
physical_device_desc: "device: XLA_GPU device"
, name: "/device:GPU:0"
device_type: "GPU"
memory_limit: 14949928141
locality 
  bus_id: 1
  links 
  

incarnation: 6277213019374881773
physical_device_desc: "device: 0, name: Tesla T4, pci bus id: 0000:00:1e.0, compute capability: 7.5"
]
['/device:GPU:0']

更新 3 这是模型的代码:

以及开始训练的代码:

【问题讨论】:

【参考方案1】:

在不了解您的代码和配置的情况下,第一步是检查 keras 是否正在使用 GPU。执行以下代码可能会提供更多洞察力。

from keras import backend as K
K.tensorflow_backend._get_available_gpus()

我希望这个其他 SO 答案对您有所帮助,https://***.com/a/45662992/14936140

【讨论】:

添加以上行后,出现如下错误:AttributeError: module 'tensorflow_core._api.v2.config' has no attribute 'experimental_list_devices' 找到了解决方法:***.com/a/62976937/1012803

以上是关于使用 GPU 在 EC2 实例上训练 Keras 模型很慢的主要内容,如果未能解决你的问题,请参考以下文章

如何选择/配置 AWS GPU 实例以加速 TensorFlow.keras?

如何确保 Keras 使用 GPU 和 tensorflow 后端?

keras上的多GPU训练错误(OOM)(足够的内存,可能是配置问题)

在keras上使用gpu的方法

训练某些网络时,GPU 上的 Keras(Tensorflow 后端)比 CPU 上慢

小白学习keras教程九keras 使用GPU和Callbacks模型保存