tensorflow 从2.9升级到2.12后,训练速度和GPU利用率降低了50%

qvtsj1bj  于 6个月前  发布在  其他
关注(0)|答案(8)|浏览(51)

问题类型

性能问题

你是否在TF nightly版本中复现了这个bug?

问题来源

源代码

Tensorflow版本

2.12.0

自定义代码

OS平台和发行版

Ubuntu 20.04

移动设备

无响应

Python版本

3.8

Bazel版本

0.27.1

GCC/编译器版本

无响应

CUDA/cuDNN版本

11.8/8.6

GPU型号和内存

A100

当前行为?

在将TF从2.9升级到2.12后,当我们训练我们的点分割模型时,GPU利用率从70%下降到30%,训练速度慢了50%。请问这可能是什么原因?如何最好地调试它?

重现问题的独立代码

N/A

相关日志输出

无响应

s5a0g9ez

s5a0g9ez1#

@ShuaiShao93
请问您能否提供完整的代码或Colab Gist以复现此处报告的问题?
感谢您!

jtw3ybtb

jtw3ybtb2#

检查代码更改是否导致问题:如果您在升级TensorFlow时对自定义代码进行了更改,可能会导致问题。尝试通过使用新TensorFlow版本运行旧代码来隔离TensorFlow升级,并检查问题是否仍然存在。

检查TensorFlow配置:验证您的系统具有正确的TensorFlow配置。确保已安装与TensorFlow 2.12兼容的正确CUDA和cuDNN版本。此外,确保您正在使用的TensorFlow版本是使用正确配置构建的。

检查多工作器设置:确保多工作器设置已正确配置。确保工作人员之间的通信正常,资源均匀分布。

检查瓶颈:检查代码中是否有任何瓶颈。使用性能分析工具识别可能导致问题的任何缓慢操作或工作人员之间的数据传输。

升级到最新版本:尝试升级到TensorFlow的最新版本,因为较新的版本可能已经解决了问题。

总之,问题可能与自定义代码更改、TensorFlow配置、多工作器设置、瓶颈或过时的TensorFlow版本有关。您可以尝试上述建议来调试问题。

vmjh9lq9

vmjh9lq93#

抱歉,描述有误。这个问题在单个工作器上也是可复现的。
代码上唯一的改动是将 tf.keras.optimizers 替换为 tf.keras.optimizers.legacy。
通过性能分析,我发现 GPU 上的步骤之间存在巨大的差距,以下是在差距中主机上执行的操作。基本上它做了 EagerLocalExecute:WriteSummary ?

我在 WriteSummaryOp 中添加了更多的日志记录,它显示写入一个浮点标量需要 900ms。

step 6
tag batch_loss
duration 882ms
tensor Tensor<type: float shape: [] values: 0.0100328028>

通过在 tf.summary.create_file_writer 中提高 max_queue 的值,训练速度得到了固定,但我认为这仍然是 SummaryFileWriter::InternalFlush 太慢的一个 bug。

rdlzhqv9

rdlzhqv94#

你好,@ShuaiShao93 ,

感谢你报告这个问题。通过查看模板,我假设你已经使用了从源代码构建的包,并且提到的bazel版本是0.27.1。请确认信息是否正确。如果正确,目前测试的bazel版本是5.3.0,适用于TensorFlow 2.12版本。你可以在这里找到已测试的配置。

请查找并进行必要的升级,测试代码并请确认结果。同时,请提交最小的代码片段以复现问题。谢谢!

lymnna71

lymnna715#

我刚刚验证了这个在安装了TensorFlow的pip上也是可复现的,所以我相信这与bazel版本无关。

flvtvl50

flvtvl506#

@ShuaiShao93 ,

您能否分享一下这种行为的可复现代码?此外,这个问题是否仅在旧版优化器中才能复现?请确认。

tvokkenx

tvokkenx7#

@ShuaiShao93 ,

请分享一下这个行为的可复现代码。另外,这个问题是否只在旧版优化器中才能复现?请确认。

我很乐意在colab上制作一个复现示例,但出于某种原因,this profiler 在github上的演示无法正常工作。

如果你能帮忙修复它,我会很高兴提供一个带有它的复现示例。

ars1skjm

ars1skjm8#

我在WriteSummaryOp中添加了更多的日志记录,结果显示写入一个浮点标量需要900ms。通过在tf.summary.create_file_writer中提高max_queue,训练速度得到了固定,但我认为这仍然是SummaryFileWriter::InternalFlush太慢的一个可能的bug。看起来这就是问题所在,所以我怀疑这是否与GPU相关的特殊情况有关。@poulsbo,你知道是否有关于TF摘要操作的任何更改会导致如此大的回归吗?

相关问题