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

aar*_*lle 9 python profiling tensorflow

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

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

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

谢谢!

编辑:

在CPU ony上我没有看到这种行为: 仅限CPU

我正在跑步

小智 0

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

  • 是否有可能 GPU 内存不足?一个信号是您Allocator ... ran out of memory在训练期间是否看到该表单的日志消息。如果 GPU 内存用完,分配器就会退出并等待,希望有更多可用内存。这也许可以解释如果减小批量大小,操作员之间的巨大差距就会消失。

  • 正如 Yaroslav 在上面的评论中建议的那样,如果仅在 CPU 上运行模型会发生什么?时间线是什么样的?

  • 这是分布式训练作业还是单机作业?如果是分布式作业,单机版本是否会表现出相同的行为?

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