Как я могу перенести Learn с помощью TPU на Colab

#tensorflow2.0 #tpu

#tensorflow2.0 #tpu

Вопрос:

Я пытаюсь научить себя методам передачи обучения с использованием Tensorflow 2 на Colab.

Использование GPU работает нормально, но, как всем известно, у Google есть свои TPU, и они быстрее, чем графические процессоры.

В Colab, когда я переключаю «Type» с GPU на «TPU», я добавляю —use_tpu=true к приведенной ниже команде

 python /content/models/research/object_detection/model_main_tf2.py 
--pipeline_config_path={pipeline_fname} 
--model_dir={model_dir} 
--checkpoint_dir={model_dir} 
--eval_timeout=60 
--use_tpu=true
  

Этот скрипт находится в репозитории Models.

git clone — тихий https://github.com/tensorflow/models.git

Однако он не работает, и через несколько минут я получаю следующее сообщение об ошибке:

 tensorflow.python.framework.errors_impl.UnimplementedError: File system scheme '[local]' **not implemented (file: '/content/driving-object-detection/training/train')**
    Encountered when executing an operation using EagerExecutor. This error cancels all future operations and poisons their output tensors.
Error in atexit._run_exitfuncs:
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/distribute/tpu_strategy.py", line 540, in async_wait
    context.async_wait()
  File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/eager/context.py", line 2319, in async_wait
    context().sync_executors()
  File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/eager/context.py", line 658, in sync_executors
    pywrap_tfe.TFE_ContextSyncExecutors(self._context_handle)
tensorflow.python.framework.errors_impl.UnimplementedError: File system scheme '[local]' not implemented (file: '/content/driving-object-detection/training/train')
    Encountered when executing an operation using EagerExecutor. This error cancels all future operations and poisons their output tensors.
2020-10-23 15:53:03.698253: W ./tensorflow/core/distributed_runtime/eager/destroy_tensor_handle_node.h:57] Ignoring an error encountered when deleting remote tensors handles: Invalid argument: Unable to find the relevant tensor remote_handle: Op ID: 16039, Output num: 1
Additional GRPC error information from remote target /job:worker/replica:0/task:0:
:{"created":"@1603468383.693602692","description":"Error received from peer ipv4:10.72.50.114:8470","file":"external/com_github_grpc_grpc/src/core/lib/surface/call.cc","file_line":1056,"grpc_message":"Unable to find the relevant tensor remote_handle: Op ID: 16039, Output num: 1","grpc_status":3}
  

Какие дополнительные шаги я должен предпринять, чтобы подготовить файлы для TPU? Как я упоминал перед dataset, структура папок, я следовал tensorflow.org и хорошо работает с графическим процессором.

Это не так просто, как добавить «—use_tpu=true». Есть ли пошаговое руководство или кто-нибудь может пролить свет?

Ответ №1:

Вот руководство: https://www.tensorflow.org/guide/tpu .

TPU может получать доступ только к наборам данных из групп GCS.

В качестве альтернативы вы можете управлять файлами самостоятельно: загрузить локальный файл, а затем создать набор данных с помощью tf.data.Dataset.from_tensor_slices метода.

Комментарии:

1. Спасибо, но это руководство не очень прямолинейно. в нем не рассматривается, как использовать —use_tpu=true с model_main_tf2.py сценарий. У меня есть папка images, .xml для всех изображений, файлы tfrecords: train.record и test.record. pipeline.conf обновлен в соответствии с моими новыми классами и моделью. Если TPU может получать доступ к наборам данных только из сегментов GCS, это хорошее начало, должен ли я просто переместить файлы в корзину и вызвать model_main_tf2.py —input gs://myfiles_bucket —use_tpu=true У кого-нибудь есть записная книжка Jupyter, чтобы я мог посмотреть, как вы это сделали?

Ответ №2:

Хорошо, я узнал, что все входные файлы должны находиться в хранилище Google. Если ваш путь не начинается с gs://, TPU не будет работать.