如何在Init TPU系统上的截止日期之前读取日志

问题描述 投票:1回答:1

我正在尝试使用我自己的.tfrecord数据文件在TPU上运行带有Python 2.7的模型,并且我的所有代码都会编译,但是当TPU开始发挥它的魔力时,我不知道幕后会发生什么。

有没有办法用tf.debugger或类似的东西跟踪幕后发生的事情?

这是我收到的唯一错误消息:

tensorflow.python.framework.errors_impl.DeadlineExceededError: Deadline Exceeded on Init TPU system

谢谢!

python-2.7 debugging tensorflow tfrecord google-cloud-tpu
1个回答
0
投票

一般调试

有几种方法可以获得有关TPU正在做什么的更多信息。

最直接的是添加tf.logging语句。如果您正在使用TPUEstimator,您可能希望在model_fn中进行此日志记录,因为这通常是核心TPU执行逻辑所在的位置。确保将详细程度设置在正确的级别以捕获您正在记录的任何内容。但请注意,日志记录可能会比在其他设备上运行时更显着地影响TPU的性能。

您还可以使用Cloud TPU tools获取有关正在运行的操作的详细信息以及在TPU上占用资源。这些工具将为您的TensorBoard添加额外的标签。

这些工具更适用于性能调优而不是调试,但它们在发生崩溃之前看到正在运行的操作仍然有些用处。

对DeadlineExceededError进行故障排除

更多日志记录或分析可能无法帮助您遇到的具体问题。连接到TPU的主机出现问题可能导致超出错误的最后期限。通常,当TPU出现错误时,将返回两个堆栈跟踪,一个来自主机,另一个来自TPU。如果您没有从TPU端获得任何跟踪,则主机可能从未能够连接。

作为快速故障排除步骤,您可以尝试停止并重新启动TPU服务器:

gcloud compute tpus stop $TPU_SERVER_NAME && gcloud compute tpus start $TPU_SERVER_NAME

这通常可以解决主机与TPU通信的任何问题。该命令是从非常有用的TPU troubleshooting page复制的。

该页面还提供了最常见的原因,即首先无法建立主机和TPU之间的连接:

如果TensorFlow在TPU执行期间遇到错误,则脚本有时似乎挂起而不是退出到shell。如果发生这种情况,请按键盘上的CTRL + \以触发SIGQUIT,这会导致Python立即退出。

类似地,在TPU执行期间按CTRL + C不会立即关闭TensorFlow,而是等待直到当前迭代循环结束才能完全退出。按CTRL + \会导致Python立即退出。

如果TPU仍在尝试完成上次运行的迭代循环,则主机将无法连接。使用建议的CTRL + \可以防止将来出现这种情况。

© www.soinside.com 2019 - 2024. All rights reserved.