Я сам боролся с этим сценарием (хотя и с бесплатной версией Colab) и просто заставил его работать. Этот конкретный вариант использования c не очень хорошо документирован - кажется, официальная документация в основном касается случаев, связанных с виртуальной машиной Compute Engine, а не с автоматически назначенным TPU. Процесс, который работал для меня, шел следующим образом:
- Запустите аутентификацию Google Cloud SDK и настройте проект (эти две вещи могут быть избыточными - я еще не пробовал делать одну или другую)
!gcloud auth login
!gcloud config set project [Project ID of Storage Bucket]
и
from google.colab import auth
auth.authenticate_user()
Инициализация TPU (из
Документация Tensorflow TPU )
resolver = tf.distribute.cluster_resolver.TPUClusterResolver(tpu='grpc://' + os.environ['COLAB_TPU_ADDR'])
tf.config.experimental_connect_to_cluster(resolver)
tf.tpu.experimental.initialize_tpu_system(resolver)
strategy = tf.distribute.experimental.TPUStrategy(resolver)
Попробуйте загрузить модель
model = tf.keras.models.load_model('gs://[Bucket name and path to saved model]')
Первоначально это не удалось, но сообщение об ошибке включало служебную учетную запись TPU, пытающегося получить доступ к каталогу , и это адрес, к которому я получил доступ, как описано в документах Cloud Storage . Адрес указан в формате service-[PROJECT_NUMBER]@cloud-tpu.iam.gserviceaccount.com
, но номер проекта не является идентификатором проекта, в котором находится моя корзина, и значением, которое я смог найти где-либо еще.
После того, как я дал разрешения в эту служебную учетную запись (которую я смог найти только в сообщении об ошибке) я смог загрузить и сохранить модели из своего личного списка.