Google Cloud Storage (GCS) 可与 tfds 一起使用,原因如下
- 存储预处理数据
- 访问存储在 GCS 上的数据集
通过 TFDS GCS 存储桶访问
一些数据集直接在我们 GCS 存储桶中提供 gs://tfds-data/datasets/
,无需任何身份验证
- 如果
tfds.load(..., try_gcs=False)
(默认情况下),数据集将在download_and_prepare
期间复制到本地~/tensorflow_datasets
中。 - 如果
tfds.load(..., try_gcs=True)
,数据集将直接从 GCS 流式传输(download_and_prepare
将被跳过)。
您可以使用 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 下载代码。