使用 Cloud Storage

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

概览

AI Platform Prediction 服务的以下方面必须或建议使用 Cloud Storage:

在线预测

批量预测

  • 存储批量预测输入文件。
  • 存储批量预测输出。
  • 如果您在使用批量预测时未在 AI Platform Prediction 上部署模型,请存储模型。

区域注意事项

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

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

详细了解 AI Platform Prediction 可用区域

设置 Cloud Storage 存储分区

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

  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 Prediction 作业的区域。查看 AI Platform Prediction 服务的可用区域

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

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

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

存储分区中的模型组织

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

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

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

在预测期间访问 Cloud Storage

如果您部署自定义预测例程(Beta 版)或具有自定义代码的 scikit-learn 流水线(Beta 版),则您的模型版本可在处理预测期间从同一项目中的任何 Cloud Storage 存储分区中读取数据。

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

您还可以在部署自定义预测例程时指定服务账号,以便自定义您的部署可以访问的 Cloud Storage 资源。

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

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

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

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

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

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

控制台

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

    打开 IAM 页面

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

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

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

命令行

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

  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 存储桶中对象的读取权限:

    gcloud storage buckets add-iam-policy-binding gs://$BUCKET_NAME --member=user:$SVC_ACCOUNT --role=roles/storage.legacyObjectReader
    
  3. 授予写入权限:

    gcloud storage buckets add-iam-policy-binding gs://$BUCKET_NAME --member=user:$SVC_ACCOUNT --role=roles/storage.legacyObjectWriter
    

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

后续步骤