tfds 和 Google Cloud Storage

Google Cloud Storage (GCS) 可与 tfds 一起使用,原因如下

  • 存储预处理数据
  • 访问存储在 GCS 上的数据集

通过 TFDS GCS 存储桶访问

一些数据集直接在我们 GCS 存储桶中提供 gs://tfds-data/datasets/,无需任何身份验证

您可以使用 tfds.is_dataset_on_gcs('mnist') 检查数据集是否托管在公共存储桶中。

身份验证

在开始之前,您应该确定要使用哪种身份验证方式。有三种选择

  • 无身份验证(也称为匿名访问)
  • 使用您的 Google 帐户
  • 使用服务帐户(可以轻松与团队中的其他人共享)

您可以在 Google Cloud 文档 中找到详细的信息

简化说明

如果您从 colab 运行,可以使用您的帐户进行身份验证,但运行

from google.colab import auth
auth.authenticate_user()

如果您在本地机器(或 VM 中)运行,可以通过运行以下命令使用您的帐户进行身份验证

gcloud auth application-default login

如果您想使用服务帐户登录,请下载 JSON 文件密钥并设置

export GOOGLE_APPLICATION_CREDENTIALS=<JSON_FILE_PATH>

使用 Google Cloud Storage 存储预处理数据

通常,当您使用 TensorFlow 数据集时,下载和准备好的数据将缓存在本地目录中(默认情况下为 ~/tensorflow_datasets)。

在某些本地磁盘可能为短暂的(临时云服务器或 Colab 笔记本)或您需要多台机器访问数据的环境中,将 data_dir 设置为云存储系统(如 Google Cloud Storage (GCS) 存储桶)非常有用。

如何?

创建 GCS 存储桶 并确保您(或您的服务帐户)对该存储桶具有读写权限(请参阅上面的授权说明)

当您使用 tfds 时,您可以将 data_dir 设置为 "gs://YOUR_BUCKET_NAME"

ds_train, ds_test = tfds.load(name="mnist", split=["train", "test"], data_dir="gs://YOUR_BUCKET_NAME")

注意事项

  • 这种方法适用于仅使用 tf.io.gfile 访问数据的那些数据集。大多数数据集都适用,但并非全部。
  • 请记住,访问 GCS 等同于访问远程服务器并从该服务器流式传输数据,因此您可能会产生网络费用。

访问存储在 GCS 上的数据集

如果数据集所有者允许匿名访问,您可以直接运行 tfds.load 代码 - 它将像正常的互联网下载一样工作。

如果数据集需要身份验证,请使用上面的说明确定您想要使用哪种选项(自己的帐户与服务帐户),并将帐户名称(也称为电子邮件)告知数据集所有者。在他们允许您访问 GCS 目录后,您应该能够运行 tfds 下载代码。