Tensorflow 为Keras模型培训优化GPU的使用
我在训练一个凯拉斯模特。在培训期间,我只使用了我的CUDA内核的5%到20%,而NVIDIA RTX 2070内存的比例也很小。模型培训目前相当缓慢,我真的很想利用尽可能多的CUDA内核来加速Tensorflow 为Keras模型培训优化GPU的使用,tensorflow,keras,nvidia,Tensorflow,Keras,Nvidia,我在训练一个凯拉斯模特。在培训期间,我只使用了我的CUDA内核的5%到20%,而NVIDIA RTX 2070内存的比例也很小。模型培训目前相当缓慢,我真的很想利用尽可能多的CUDA内核来加速 nvidia dmon#(在模型培训期间) 我应该调整哪些参数以提高CUDA核心利用率,从而更快地培训同一型号 以下是我当前图像生成和培训步骤的简化示例(如果需要,我可以详细说明/编辑,但我目前认为这些是问题的关键步骤): 硬件:NVIDIA 2070 GPU 平台:Linux 5.4.0-29-gene
nvidia dmon#(在模型培训期间)
我应该调整哪些参数以提高CUDA核心利用率,从而更快地培训同一型号
以下是我当前图像生成和培训步骤的简化示例(如果需要,我可以详细说明/编辑,但我目前认为这些是问题的关键步骤):
硬件:NVIDIA 2070 GPU
平台:Linux 5.4.0-29-generic#33 Ubuntu x8664、NVIDIA驱动程序440.64、CUDA 10.2、Tensorflow 2.2.0-rc3GPU利用率是一项棘手的工作,涉及的因素太多 显然,首先要尝试的是:增加批量大小 但这并不能确保最大利用率,可能您的I/O速度较慢,因此数据生成器中存在瓶颈 如果有足够的ram内存,可以尝试将完整数据作为
NumPy
数组加载
您可以尝试在多处理方案中增加工人数量
model.fit(…,使用_multiprocessing=True,workers=8)
最后,取决于您的型号,如果您的型号太轻而不是太深,您的利用率将很低,并且没有标准的方法进一步提高。GPU利用率是一项棘手的业务,涉及的因素太多 显然,首先要尝试的是:增加批量大小 但这并不能确保最大利用率,可能您的I/O速度较慢,因此数据生成器中存在瓶颈 如果有足够的ram内存,可以尝试将完整数据作为
NumPy
数组加载
您可以尝试在多处理方案中增加工人数量
model.fit(…,使用_multiprocessing=True,workers=8)
最后,取决于您的模型,如果您的模型太轻而不深,您的利用率将很低,并且没有标准的方法进一步改进它
# gpu pwr gtemp mtemp sm mem enc dec mclk pclk
# Idx W C C % % % % MHz MHz
0 45 49 - 9 6 0 0 6801 1605
train_datagen = ImageDataGenerator(rescale=1./255)
test_datagen = ImageDataGenerator(rescale=1./255)
train_generator = train_datagen.flow_from_directory(
r'./input_training_examples',
target_size=(150, 150),
batch_size=32,
class_mode='binary'
)
validation_generator = test_datagen.flow_from_directory(
r'./input_validation_examples',
target_size=(150, 150),
batch_size=32,
class_mode='binary'
)
history = model.fit(
train_generator,
steps_per_epoch=128, epochs=30,
validation_data=validation_generator, validation_steps=50,
)