【发布时间】:2020-10-10 09:22:16
【问题描述】:
我有一个包含大约 600MB 训练数据的 LSTM tf.keras 模型。每个训练 epoch 大约需要 90 秒。我有最新版本的 tensorflow,即 v2.2。它在 AWS g3.4xlarge 实例上运行。此实例具有 Nvidia 的 Tesla M60 GPU,并为 GPU 提供 8GB RAM。
我想做超参数调优,所以我需要加快执行速度。因此,我将模型和数据移动到了一个 AWS p3.2xlarge 实例,该实例有一个 P100 GPU 和 16GB 的 RAM。然后我发现每个 epoch 的训练时间根本没有变化。
所以我切换到更大的 AWS 实例 p3.8xlarge,它有 4 个 Tesla V100 GPU 和总共 64GB 的 RAM。在第一次运行中,它只使用了 1 个 GPU,并且每个 epoch 的执行时间相同,大约 90 秒。于是我在tensorflow网站上找到一篇关于如何使用所有GPU的文章,https://www.tensorflow.org/guide/gpu
因此,在所有 4 个 GPU 都运行的情况下,一个 epoch 的执行时间从 90 秒变为 112 秒!我使用 nvtop 和 nvidia-smi 来监控 GPU 性能,如下图所示。
我需要做些什么来减少执行时间?
【问题讨论】:
-
进行分析并发布结果。 TensorFlow profiler 会为你提供一些提示。您是否观察到内核启动开销?你的网络是什么样子的? LSTM 的参数是什么?这可以发挥重要作用。
-
你能发布一些分析的例子吗? LSTM 有 50 个 cell,input_shape=(96,4)。其余参数为默认值。
-
在
tensorboard上启用分析,这是一个示例:tensorflow.org/tensorboard/tensorboard_profiling_keras -
谢谢!我试试看。
标签: performance tensorflow keras nvidia tensorflow2.x