为什么训练 RNN 不使用 100% 的 GPU?

数据挖掘 表现 西阿诺 rnn 显卡
2021-09-17 12:20:11

我想知道为什么训练 RNN 通常不会使用 100% 的 GPU。

例如,如果我在 Ubuntu 14.04.4 LTS x64 上的 Maxwell Titan X 上运行此RNN 基准测试,GPU 利用率低于 90%:

在此处输入图像描述

使用以下命令启动基准测试:

python rnn.py -n 'fastlstm' -l 1024 -s 30 -b 128

如何诊断瓶颈是什么?

1个回答

当我使用 Tensorflow 训练模型时,我得到了相同的利用率。就我而言,原因很清楚,我手动选择随机批次的样本并分别调用每个批次的优化。

这意味着每批数据都在主内存中,然后将其复制到模型其余部分所在的 GPU 内存中,然后在 gpu 中执行前向/反向传播和更新,然后将执行交给我抓取的代码另一批并对其进行优化。

如果您花几个小时设置 Tensorflow 以从预先准备的 TF 记录中并行进行批量加载,那么有一种更快的方法可以做到这一点。

我意识到您可能会或可能不会在 keras 下使用 tensorflow,但由于我的经验往往会产生非常相似的利用率数字,因此我建议从这些相关性中得出合理可能的因果关系。如果您的框架将每个批次从主内存加载到 GPU 中,而没有增加异步加载的效率/复杂性(GPU 本身可以处理),那么这是预期的结果。