Как читать журналы до истечения крайнего срока в системе Init TPU - PullRequest
0 голосов
/ 24 августа 2018

Я пытаюсь запустить модель с Python 2.7 на TPU с моим собственным файлом данных .tfrecord и компилирует весь мой код, но в тот момент, когда TPU начинает творить чудеса, я понятия не имею, что происходит сцены.

Есть ли способ отследить, что происходит за кулисами, с помощью tf.debugger или чего-то подобного?

Это единственное сообщение об ошибке, которое я получаю:

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

Спасибо!

1 Ответ

0 голосов
/ 01 сентября 2018

Общая отладка

Есть несколько способов получить больше информации о том, что делает TPU.

Наиболее простым является добавление tf.logging операторов. Если вы используете TPUEstimator, вы, вероятно, захотите, чтобы эта запись происходила внутри вашего model_fn, так как это обычно там, где находится основная логика TPU. Удостоверьтесь, что у вас настроен уровень детализации на правильном уровне, чтобы фиксировать все, что вы записываете. Однако обратите внимание, что регистрация может повлиять на производительность вашего TPU более значительно, чем при работе на других устройствах.

Вы также можете получить подробную информацию о том, какие операции выполняются и занимают ресурсы на TPU, используя Облачные инструменты TPU . Эти инструменты добавят дополнительные вкладки к вашей TensorBoard.

Эти инструменты больше предназначены для настройки производительности, чем для отладки, но они все еще могут быть вам полезны при просмотре того, какие операции выполняются до сбоя.

Устранение неполадок DeadlineExceededError

Конкретной проблеме, с которой вы сталкиваетесь, может не помочь дополнительная регистрация или профилирование. Ошибка превышения срока может быть вызвана проблемой с хостом, соединяющимся с TPU. Обычно при возникновении ошибки в TPU будут возвращены две трассировки стека: одна с хоста, а другая с TPU. Если вы не получаете никаких следов со стороны TPU, возможно, хост никогда не смог подключиться.

В качестве быстрого шага по устранению неполадок, который вы можете попробовать, остановите и перезапустите сервер TPU:

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

Обычно это решает все проблемы, которые хост связывает с TPU. Команда скопирована с очень полезной страницы Устранение неполадок TPU .

На странице также приведена наиболее распространенная причина, по которой соединение между хостом и TPU не может быть установлено в первую очередь:

Если TensorFlow обнаруживает ошибку во время выполнения TPU, иногда кажется, что сценарий зависает, а не выходит из оболочки. Если это произойдет, нажмите CTRL + \ на клавиатуре, чтобы вызвать SIGQUIT, что приведет к немедленному выходу Python.

Аналогичным образом, нажатие CTRL + C во время выполнения TPU не приводит к немедленному завершению работы TensorFlow, а вместо этого ожидает до конца текущего цикла итерации, чтобы завершиться корректно. Нажатие CTRL + \ приводит к немедленному завершению работы Python.

Если TPU все еще пытается завершить цикл итерации с последнего запуска, хост не сможет подключиться. Использование предложенного сочетания клавиш CTRL + \ может предотвратить это в будущем.

...