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