Tensorflow - 使用时间线进行性能分析 - 了解限制系统的因素

时间:2017-05-07 08:48:21

标签: python tensorflow profiling

我试图理解为什么每次列车迭代都需要1.5秒的aprox。 我使用了here描述的跟踪方法。我正在使用TitanX Pascal GPU。我的结果看起来很奇怪,似乎每个操作都比较快,而且系统在大多数时间间隔都处于空闲状态。我怎么能从中了解什么是限制系统。 Regular Batch Size 但是,当我大幅减少批量大小时,间隙似乎很接近,这可以在这里看到。

Small Batch Size 不幸的是,代码非常复杂,我无法发布具有相同问题的小版本

有没有办法从剖析器中了解在操作间隙中占用空间的是什么?

谢谢!

编辑:

在CPU上我没有看到这种行为: CPU Only

我正在运行

1 个答案:

答案 0 :(得分:0)

以下是一些猜测,但如果没有我可以运行和调试的独立复制品,很难说。

  • 你有可能用完GPU内存吗?一个信号是,如果您在培训期间看到Allocator ... ran out of memory形式的日志消息。如果你的GPU内存耗尽,那么分配器会退出并等待,希望更多可用。这可能解释了如果减小批量大小,大的运营商之间的差距就会消失。

  • 正如Yaroslav在上面的评论中所说,如果你只在CPU上运行模型会发生什么?时间轴是什么样的?

  • 这是分布式培训工作还是单机工作?如果它是分布式作业,单机版本是否显示相同的行为?

  • 您是多次调用session.run()或eval(),还是每次训练一次?每次run()或eval()调用都会耗尽GPU管道,因此为了提高效率,通常需要将计算表示为一个只有一次run()调用的大图。 (我怀疑这是你的问题,但我提到它是完整的。)