我试图理解为什么每次列车迭代需要大约1.5秒。
我使用了描述的跟踪方法here。我正在开发一个TitanX Pascal GPU。我的结果看起来很奇怪,似乎每次操作都比较快,而系统在操作之间的大部分时间都是空闲的。我怎么能从中理解是什么限制了这个系统。
然而,当我大幅度减少批量大小时,差距缩小了,如这里所示。在
不幸的是,代码非常复杂,我不能发布一个有相同问题的小版本
有没有一种方法可以从剖析器中了解操作之间的间隙是什么占用了空间?在
谢谢!在
编辑:
在CPU上我看不到这种行为:
我正在运行一个
Tags:
这里有一些猜测,但是很难说没有我可以运行和调试的自包含的复制。在
是否可能是GPU内存不足?其中一个信号是,如果您在培训期间看到
Allocator ... ran out of memory
形式的日志消息。如果GPU内存不足,则分配器会退出并等待更多可用内存。这可能解释了如果减小批处理大小,就会消除较大的操作员间差距。正如雅罗斯拉夫在上面的评论中建议的那样,如果只在CPU上运行模型会发生什么?时间表是什么样子的?
这是分布式培训作业还是单机作业?如果是分布式作业,单机版本是否显示相同的行为?
你在打电话吗会话.运行()或eval()多次,还是每个培训步骤仅一次?每次run()或eval()调用都会耗尽GPU管道,因此为了提高效率,通常需要将计算表示为一个仅使用一个run()调用的大图形。(我怀疑这是您的问题,但为了完整起见,我提到它。)
相关问题 更多 >
编程相关推荐