【问题标题】:tensorflow how to reduce high "device-to-device" loadtensorflow如何减少高“设备到设备”负载
【发布时间】:2020-08-27 02:10:23
【问题描述】:

我分析了我正在运行的模型,并且每个步骤中的绝大多数时间(320 毫秒中的 295 毫秒)都被“设备到设备”操作占用(见图)。我认为这意味着将数据从我的 cpu 加载到我的 gpu 上并返回是瓶颈。

我在一台机器上运行它。数据存储在 SSD 上并输入 GPU。 我正在使用 tensorflow 的 tf.data.Dataset API 并执行所有推荐的操作,例如预取和 num_parallel_calls=tf.data.experimental.AUTOTUNE

我的问题是: (1) 我的假设正确吗? (2) 如何减轻模型的巨大负担?

Tensorboard Profiling Overview

【问题讨论】:

  • 你用分布式策略训练模型了吗?如果是这样,我认为设备到设备意味着 GPU 到 GPU 的参数更新通信。如果您在多台机器上训练模型,那主要是由于网络带宽限制。 Profiler 还在 Profiler 页面右下角提供了一些关于如何处理瓶颈的建议。
  • 感谢您的评论,不,它在单机上,已在问题中添加了说明。
  • 您是否使用 tf.data.Dataset 作为输入管道?如果是这样,您是否在管道末端预取数据?也许this 会帮助你。
  • 感谢亚历山大,我正在使用 tf.data.Dataset 并虔诚地预取。我会把它添加到问题中

标签: tensorflow optimization gpu


【解决方案1】:

不是一个正确的答案,但它是一些东西;通过使用 tensorflow 的 mixed precision training,我能够将“设备到设备”的时间减少到 ~ 145 毫秒。与其他所有内容相比,这仍然是一个巨大的负担,我希望能够进一步减少它。

我也不知道为什么这有帮助。我认为 mp-training 意味着传递的字节数更少,所以这可能会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-26
    • 1970-01-01
    • 2015-08-27
    • 2017-02-08
    • 2021-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多