我试图理解为什么每次列车迭代都需要1.5秒的aprox。 我使用了here描述的跟踪方法。我正在使用TitanX Pascal GPU。我的结果看起来很奇怪,似乎每个操作都比较快,而且系统在大多数时间间隔都处于空闲状态。我怎么能从中了解什么是限制系统。 但是,当我大幅减少批量大小时,间隙似乎很接近,这可以在这里看到。
有没有办法从剖析器中了解在操作间隙中占用空间的是什么?
谢谢!
编辑:
我正在运行
答案 0 :(得分:0)
以下是一些猜测,但如果没有我可以运行和调试的独立复制品,很难说。
你有可能用完GPU内存吗?一个信号是,如果您在培训期间看到Allocator ... ran out of memory
形式的日志消息。如果你的GPU内存耗尽,那么分配器会退出并等待,希望更多可用。这可能解释了如果减小批量大小,大的运营商之间的差距就会消失。
正如Yaroslav在上面的评论中所说,如果你只在CPU上运行模型会发生什么?时间轴是什么样的?
这是分布式培训工作还是单机工作?如果它是分布式作业,单机版本是否显示相同的行为?
您是多次调用session.run()或eval(),还是每次训练一次?每次run()或eval()调用都会耗尽GPU管道,因此为了提高效率,通常需要将计算表示为一个只有一次run()调用的大图。 (我怀疑这是你的问题,但我提到它是完整的。)