使用 Cloud Storage

AI Platform Training 会从您已授予 AI Platform Training 项目访问权限的 Cloud Storage 位置读取数据。本页面提供了关于将 Cloud Storage 与 AI Platform Training 结合使用的快速指南。

概览

对于 AI Platform Training 服务的以下方面,需要或建议使用 Cloud Storage:

  • 暂存训练应用和自定义依赖项。
  • 存储训练输入数据,例如表格或图片数据。
  • 存储训练输出数据。

区域注意事项

创建与 AI Platform Training 结合使用的 Cloud Storage 存储桶时,您应该:

  • 将其分配给特定的计算区域,而非多区域值。
  • 使用运行训练作业所在的区域。

详细了解 AI Platform Training 可用区域

设置 Cloud Storage 存储分区

本部分介绍如何创建新存储桶。您可以使用现有存储桶,但它所在区域必须与您计划运行 AI Platform 作业的区域相同。此外,如果该存储桶不属于您用于运行 AI Platform Training 的项目,则您必须明确向 AI Platform Training 服务账号授予访问权限

  1. 为新存储桶指定名称。该名称在 Cloud Storage 的所有存储桶中必须是唯一的。

    BUCKET_NAME="YOUR_BUCKET_NAME"

    例如,使用附加了 -aiplatform 的项目名称:

    PROJECT_ID=$(gcloud config list project --format "value(core.project)")
    BUCKET_NAME=${PROJECT_ID}-aiplatform
  2. 检查您创建的存储桶名称。

    echo $BUCKET_NAME
  3. 为您的存储桶选择一个区域,并设置 REGION 环境变量。

    使用您计划在其中运行 AI Platform Training 作业的区域。请参阅 AI Platform Training 服务的可用区域

    例如,以下代码会创建 REGION 并将其设置为 us-central1

    REGION=us-central1
  4. 创建新的存储桶:

    gsutil mb -l $REGION gs://$BUCKET_NAME

存储分区中的模型组织

组织存储桶中的文件夹结构,以适应模型的多次迭代。

  • 将每个已保存的模型放入其在存储桶中的单独目录。
  • 考虑使用时间戳来命名存储桶中的目录。

例如,您可以将第一个模型放置在类似于 gs://your-bucket/your-model-DATE1/your-saved-model-file 的结构中。如需为模型的每个后续迭代所在的目录命名,请使用更新后的时间戳(gs://your-bucket/your-model-DATE2/your-saved-model-file 等)。

在训练期间访问 Cloud Storage

在训练代码中使用可从 Cloud Storage 中读取数据的 Python 模块,如 适用于 Google Cloud Storage 的 Python 客户端、TensorFlow 的 tf.io.gfile.GFile 模块或 pandas 0.24.0 或更高版本。AI Platform Training 负责处理身份验证。

使用其他项目中的 Cloud Storage 存储桶

本部分介绍如何从项目外配置 Cloud Storage 存储分区,以便 AI Platform Training 能够访问这些存储分区。

如果您在使用 AI Platform Training 的项目中设置 Cloud Storage 存储桶,则您的 AI Platform Training 服务账号已拥有访问 Cloud Storage 存储桶所需的权限。

这些说明适用于以下情况:

  • 您无法使用您项目中的存储桶,例如在多个项目间共享大型数据集时。
  • 如果您将多个存储分区与 AI Platform Training 结合使用,则必须分别针对每个存储分区向 AI Platform Training 服务账号授予访问权限。

第 1 步:从云项目中获取所需信息

控制台

  1. 在 Google Cloud Console 中打开 IAM 页面。

    打开 IAM 页面

  2. IAM 页面会显示有权访问您的项目的所有主账号及其关联的角色的列表。您的 AI Platform Training 项目具有多个服务账号。在列表中找到具有 Cloud ML Service Agent 角色的服务账号,并复制该服务账号 ID,其格式类似于:

    “service-111111111111@cloud-ml.google.com.iam.gserviceaccount.com”。

    在接下来的步骤中,您需要将此服务账号 ID 粘贴到 Google Cloud 控制台的其他页面中。

命令行

本部分介绍的步骤会获取有关您的 Google Cloud 项目的信息,以便用于更改您的项目的 AI Platform Training 服务账号的访问权限控制。您需要存储这些值,供以后在环境变量中使用。

  1. 选择项目后,使用 Google Cloud CLI 获取项目标识符:

    PROJECT_ID=$(gcloud config list project --format "value(core.project)")
    
  2. 使用 gcloud 获取项目的访问令牌:

    AUTH_TOKEN=$(gcloud auth print-access-token)
    
  3. 通过从 REST 服务请求项目配置来获取服务账号信息:

    SVC_ACCOUNT=$(curl -X GET -H "Content-Type: application/json" \
        -H "Authorization: Bearer $AUTH_TOKEN" \
        https://ml.googleapis.com/v1/projects/${PROJECT_ID}:getConfig \
        | python3 -c "import json; import sys; response = json.load(sys.stdin); \
        print(response['serviceAccount'])")
    

第 2 步:配置对 Cloud Storage 存储桶的访问权限

控制台

  1. 打开 Google Cloud 控制台中的“存储”页面。

    打开“存储”页面

  2. 通过勾选存储桶名称左侧的框,选择用于部署模型的 Cloud Storage 存储桶。

  3. 点击右上角的显示信息面板按钮以显示“权限”标签页。

  4. 将服务账号 ID 粘贴到添加主账号字段中。在该字段的右侧,选择所需的角色,例如存储空间旧存储分区读取者。

    如果不确定要选择哪个角色,则可以先选择多个角色,此时添加主账号字段下方会显示这些角色及其权限的简要说明。

  5. 要向服务账号分配所需的角色,请点击添加主账号字段右侧的添加按钮。

命令行

拥有项目和服务账号信息后,您需要更新 Cloud Storage 存储桶的访问权限。这些步骤使用的变量名称与上一部分相同。

  1. 在名为 BUCKET_NAME 的环境变量中设置存储桶的名称:

    BUCKET_NAME="your_bucket_name"
    
  2. 向服务账号授予对 Cloud Storage 存储桶的读取权限:

    gsutil -m defacl ch -u $SVC_ACCOUNT:R gs://$BUCKET_NAME
    
  3. 如果存储桶已包含您需要访问的对象,您必须明确授予对这些对象的读取权限:

    gsutil -m acl ch -u $SVC_ACCOUNT:R -r gs://$BUCKET_NAME
    
  4. 授予写入权限:

    gsutil -m acl ch -u $SVC_ACCOUNT:W gs://$BUCKET_NAME
    

要选择授予给 AI Platform Training 服务账号的角色,请参阅 Cloud Storage IAM 角色。如需了解如何在 Cloud Storage 中更新 IAM 角色的更多常规信息,请参阅如何向服务账号授予对资源的访问权限

后续步骤