将 TPU 虚拟机连接到 Cloud Storage 存储分区

此页面介绍将 Cloud Storage 用作存储 机器学习数据和训练输出的选项,并介绍如何为 TPU 虚拟机授予权限以访问 Cloud Storage 上的数据对象。

准备工作

您需要有附加到 TPU 虚拟机的服务帐号才能访问 Cloud Storage 存储桶。如果您在创建 TPU 虚拟机时未指定服务帐号,则该虚拟机将使用 Compute Engine 默认服务账号

如需为 TPU 设置 Google Cloud 项目并创建 TPU 虚拟机实例, 请按照以下说明操作:

  1. 为 TPU 设置 Google Cloud 项目
  2. 使用 Compute Engine 创建 TPU 虚拟机实例

将数据写入 Cloud Storage

控制台

  1. 转到 Google Cloud 控制台中的 Cloud Storage 页面。

    转到 Cloud Storage 页面

  2. 创建一个新的存储分区,并指定以下选项:

    • 您选择的唯一名称。
    • 默认存储类别:Standard
    • 位置:您在其中创建 TPU 虚拟机的区域。如需详细了解区域和 TPU 可用性,请参阅 TPU 区域和可用区

CLI

  1. 使用 gcloud storage buckets create 命令创建 Cloud Storage 存储桶:

    gcloud storage buckets create gs://BUCKET_NAME --location REGION
    

    替换以下占位符:

    • BUCKET_NAME 是要创建的存储桶的名称。
    • REGION 是您在其中创建 TPU 虚拟机的区域。 如需详细了解区域和 TPU 可用性,请参阅 TPU 区域和可用区
  2. 使用 gcloud storage cp 命令将文件写入 Cloud Storage 存储桶:

    gcloud storage cp -r LOCAL_DATA_DIR gs://BUCKET_NAME
    

    替换以下占位符:

    • LOCAL_DATA_DIR 是数据的本地路径。 例如:$HOME/your-data
    • BUCKET_NAME 是要写入的存储桶的名称。

为 TPU 虚拟机授予对 Cloud Storage 的访问权限

您需要为 TPU 虚拟机授予对 Cloud Storage 对象的读写权限。为此,您必须向附加到 TPU 虚拟机的服务帐号授予必需的访问权限。以下部分介绍了如何查找附加的服务帐号并授予必需的访问权限。

授权附加的服务帐号

建议使用精细的访问权限控制列表 (ACL) 授权附加的服务帐号。您还可以使用 IAM 权限授予更宽泛的权限。

为 TPU 虚拟机使用精细的 ACL(推荐)

如果您将训练数据存储在 Cloud Storage 上,则附加的服务帐号需要存储桶的读写权限。

控制台

  1. 转到 Cloud Storage 浏览器页面,查看您拥有的存储分区。

    转到 Cloud Storage 浏览器

  2. 选择您要修改其 ACL 的存储桶。

  3. 选择权限标签页。

  4. 选择授予访问权限 以添加新权限,并在新的主账号 编辑框中输入完整的服务帐号名称。

  5. 如果您要从此存储桶读取数据,则必须向附加的服务账号授予对资源的读取权限。 您可以通过向服务 账号授予 Storage Legacy > Storage Legacy Bucket Reader 角色来实现此目的。

  6. 如果您要向此存储桶写入数据,则必须向附加的服务账号授予对资源的写入权限。 您可以通过向服务 账号授予 Storage Legacy > Storage Legacy Bucket Writer 角色来实现此目的。

CLI

  1. 如果您要从此存储桶读取数据,请为附加的服务帐号授予读取权限:

     gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME --member=serviceAccount:SERVICE_ACCOUNT --role=roles/storage.objectViewer
    

    替换以下占位符:

    • BUCKET_NAME 是要从中读取数据的存储桶的名称。
    • SERVICE_ACCOUNT 是附加到 TPU 虚拟机的服务帐号的名称。
  2. 如果您要向此存储桶写入数据,请为附加的服务帐号授予写入权限:

     gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME --member=serviceAccount:SERVICE_ACCOUNT --role=roles/storage.objectCreator
    

    替换以下占位符:

    • BUCKET_NAME 是要写入的存储桶的名称。
    • SERVICE_ACCOUNT 是附加到 TPU 虚拟机的服务帐号的名称。

对 TPU 虚拟机使用 IAM 权限(备选)

如果要授予更宽泛的权限而不是明确授予对各个存储桶的访问权限,则需要向附加到 TPU 虚拟机的服务帐号授予 Identity Access Management (IAM) Storage Admin 角色。

  1. 转到 IAM

  2. 点击授予访问权限 按钮,将主账号添加到项目中。

  3. 主账号 字段中输入附加的服务帐号的名称。

  4. 点击角色 下拉列表。

  5. 启用以下角色:

    • Project > Viewer

    • Storage > Storage Admin

Cloud Storage FUSE

借助 Cloud Storage FUSE,您可以将 Cloud Storage 存储分区作为本地文件系统进行装载和访问。这样,应用就可以使用标准文件系统语义读取和写入存储桶中的对象。

如需详细了解 Cloud Storage FUSE 文档的工作原理以及查看 Cloud Storage FUSE 操作如何映射到 Cloud Storage 操作的说明,请参阅 Cloud Storage FUSE 文档。如需详细了解如何使用 Cloud Storage FUSE(例如,如何安装 gcsfuse CLI 和装载存储分区),请参阅 GitHub。

清理

  1. 断开与 TPU 虚拟机的连接(如果尚未断开):

    exit
    
  2. 在 Cloud Shell 或终端中,删除 TPU 虚拟机:

    gcloud compute instances delete TPU_NAME --zone=ZONE
    

    替换以下占位符:

    • TPU_NAME:您创建的 TPU 虚拟机的名称。
    • ZONE:创建 TPU 虚拟机的可用区。
  3. 通过运行 gcloud compute instances list 来验证虚拟机是否已删除。删除操作可能需要几分钟时间才能完成。

    gcloud compute instances list --zone=ZONE
    

    ZONE 替换为创建 TPU 虚拟机的可用区。

    如果响应未列出您的 TPU 实例,则表示该实例已成功删除。

  4. 运行以下命令以删除 Cloud Storage 存储桶及其 内容,注意将 BUCKET_NAME 替换为您创建的存储桶的名称:

    gcloud storage rm --recursive gs://BUCKET_NAME
    

    替换以下占位符:

    • BUCKET_NAME:您要删除的存储桶的名称。

后续步骤