将 Colab 连接到付费 TPU

Posted

技术标签:

【中文标题】将 Colab 连接到付费 TPU【英文标题】:Connect Colab to paid TPU 【发布时间】:2020-05-04 21:01:39 【问题描述】:

我想(从免费 TPU 升级)。我使用本指南创建了一个 JSON 密钥:https://cloud.google.com/docs/authentication/production#auth-cloud-explicit-python,然后将其上传到 Colab。我可以连接到我的存储,但不能连接到 TPU:

%tensorflow_version 2.x
import tensorflow as tf
import os
os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = './gcp-permissions.json'

# Authenticated API request - works.
storage_client = storage.Client.from_service_account_json(
    'gcp-permissions.json')
print(list(storage_client.list_buckets())

#Accessing the TPU - does not work. Request times out.
cluster_resolver = tf.distribute.cluster_resolver.TPUClusterResolver(
    tpu='My-TPU-Name',
    zone='us-central1-a',
    project='My-Project-Name'
)

我还尝试了仅使用 tpu 名称和 'credentials=gcp-permissions.json' 的 TPUClusterResolver 调用 - 结果相同。我已经仔细检查了我的 TPU 是否已在 GCP 控制台中启动并运行。它不是可抢占的。我错过了什么?

谢谢!

【问题讨论】:

【参考方案1】:

因此,您似乎正在尝试通过 Colab 笔记本从您自己的 Google Cloud 项目连接到付费 TPU,对吗?这不起作用,因为 Colab 运行时由 GCE VM 支持,而 GCE VM 与您自己的 My-project-name 位于不同的项目中。因此,您还想在同一个项目中创建一个 GCE 虚拟机并从该虚拟机运行您的训练脚本。查看本教程:https://cloud.google.com/tpu/docs/quickstart。

【讨论】:

嗯。如果问题是 Colab 和 GCP 项目不同,我怎么能从 Colab 访问我的 GCP 存储桶?我引用的链接讨论了如何设置在 GCP 之外访问 GCP 资源的权限。您是否认为 TPU 只能从 GCP 托管的客户端访问? 您可以从 Colab 项目中的 GCE 虚拟机进行身份验证以访问 GCP 存储桶。但是,您无法使 Colab 项目中的 GCE VM 与您自己项目中的 TPU 共享网络,因为您无权访问 Colab GCP 项目。一个是凭证 (GCS),另一个是网络。 抱歉,没有关注。如果我可以从 Colab 获得免费的 TPU,为什么不能获得付费的 TPU?如果我不能,为什么没有错误消息 - 只是超时。如果我不能切换项目,为什么 TPUClusterResolver 有一个“项目”参数? 顺便说一句,我尝试在 GCE 中设置一个付费 VM 客户端,而不是使用 Colab 客户端,但是发生了这种情况:***.com/questions/59851553/… 据我所知,项目参数仅用于无法从 GCE VM 的元数据中识别项目的情况。这里的关键是 GCE VM 和 TPU 需要放在同一个网络上,这样它们才能相互通信。不幸的是,Colab VM 位于 Colab 团队维护的一个网络中,而您的 TPU 位于您自己的项目中,位于其自己的网络中,因此两者无法相互通信。我的建议是在您自己的项目中设置一个单独的 GCE VM,并从那里驱动 TPU。您也可以在 GCE 虚拟机上设置 jupyter notebook 服务器。

以上是关于将 Colab 连接到付费 TPU的主要内容,如果未能解决你的问题,请参考以下文章

如何重新连接到 Google Colab 上正在进行的进程

谷歌 Colab TPU 版本

如何在谷歌colab中使用TPU

如何在 Google Colab 中查找 TPU 名称和区域?

在 colab 中使用 keras_to_tpu_model 时,TPU 运行速度与 CPU 一样慢

Google Colab TPU 中未实现文件系统方案“[本地]”