Ошибка TPUClusterResolver для Cloud TPU v3 Pod с TensorFlow 2.1

Я пытаюсь использовать свой (предварительно очищаемый) Cloud TPU v3-256 на моей виртуальной машине Google Cloud Compute Engine с TensorFlow 2.1, но похоже, что он не работает, поскольку TPUClusterResolver выдает Could not lookup TPU metadata ошибку.

Использование отдельных (невытесняемых) TPU работает нормально, если я использую адрес grpc://, а не имя TPU. Однако ни отдельные TPU, ни мой TPU Pod не работают при использовании имени TPU и вызывают эту ошибку.

Может ли кто-нибудь помочь мне решить эту проблему?

Код:

resolver = tf.distribute.cluster_resolver.TPUClusterResolver(tpu='my-tpu-name', zone='europe-west4-a', project='my-project')  # The zone, project and TPU Name are correct

Выход:

ValueError: Could not lookup TPU metadata from name 'my-tpu-name'. Please double
check the tpu argument in the TPUClusterResolver constructor.
Exception: Failed to retrieve http://metadata.google.internal/computeMetadata/v1/
instance/service-accounts/default/?recursive=True
from the Google Compute Enginemetadata service. Response: {'metadata-flavor': 'Google', 
'date': 'Thu, 28 May 2020 17:42:35 GMT', 'content-type': 'text/html; charset=UTF-8',
'server': 'Metadata Server for VM', 'content-length': '1629', 'x-xss-protection': '0', 'x
frame-options': 'SAMEORIGIN', 'status': '404'}

person Vineeth Narayanan    schedule 28.05.2020    source источник
comment
Я подозреваю, что структура имени TPU не поддерживается API / клиентом. Измените его на что-то очень простое в нижнем регистре, никаких других символов. что-то вроде tpuxyz   -  person fabrizioM    schedule 08.06.2020


Ответы (1)


Я подозреваю, что это может быть несоответствие в одном из следующих: версия Tensorflow, зона или проект между вычислительной виртуальной машиной и TPU. Если вы создаете виртуальную машину TPU и GCE с одной и той же версией Tensorflow (2.1 или 2.2), и они обе созданы в одном проекте и зоне. Вы можете просто указать имя TPU в TPUClusterResolver, и все должно работать нормально:

resolver = tf.distribute.cluster_resolver.TPUClusterResolver(tpu='my-tpu-name') 

Вы можете опустить имя TPU, если вы установили TPU_NAME переменную среды (export TPU_NAME=my-tpu-name) на своей виртуальной машине.

person Gagik    schedule 09.06.2020