如何使用Google Colab TPU连接到私有存储桶

时间:2020-04-26 22:22:39

标签: google-cloud-platform google-cloud-storage google-colaboratory tpu

我正在使用google colab pro和提供的TPU。我需要将预先训练的模型上传到TPU。

  • TPU只能从Google云存储桶中加载数据。
  • 我创建了一个云存储桶,并在该桶中提取了预先训练的模型文件。

现在,我需要向TPU授予访问我的私有存储桶的权限,但是我不知道TPU的服务帐户。我怎么找到它?

目前,我只具有All:R的存储桶读取权限,并且TPU已成功初始化,但是显然这不是最佳解决方案。

2 个答案:

答案 0 :(得分:4)

我一直在为这种情况而苦苦挣扎(尽管使用了Colab的免费版本),并且只是使其起作用。这个特定的用例似乎没有很好的文档说明-似乎官方文档主要处理涉及Compute Engine VM而不是自动分配的TPU的案例。对我有用的过程如下:

  1. 运行Google Cloud SDK身份验证并设置项目(这两项可能是多余的,我还没有尝试做另一件事)
changeThemeModeFunction

@action
  1. 初始化TPU(来自Tensorflow TPU docs
!gcloud auth login
!gcloud config set project [Project ID of Storage Bucket]
  1. 尝试加载模型
from google.colab import auth
auth.authenticate_user()

这最初失败了,但是错误消息包括试图访问目录的TPU的服务帐户,这是我授予访问权限的地址,如Cloud Storage docs中所述。地址在 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) 格式,但项目编号不是我的存储桶所在项目的Project ID,也不是我在其他任何地方都能找到的值。

在授予该服务帐户权限后(我只能在错误消息中找到该权限),我便能够从我的私有存储桶中加载和保存模型。

答案 1 :(得分:2)

public documentation中所述,为了找到您的Colab TPU的服务帐户,您只需在以下邮件地址中替换项目编号:

 var transform = CGAffineTransform.identity
     transform = transform.scaledBy(x: 0.96, y: 0.96)
     UIView.animate(withDuration: 0.3, delay: 0, usingSpringWithDamping: 0.8, initialSpringVelocity: 0, options: [], animations: {
       self.transform = transform
     }, completion: nil)

您可以在Google Cloud Project的仪表板中找到您的项目编号

完成此操作后,您应该在存储桶的ACL中将此存储桶的访问权限设置为细粒度访问权限,并将此帐户设置为provide access