AI Platform Prediction 会从您已授予 AI Platform Prediction 项目访问权限的 Cloud Storage 位置读取数据。本页面提供关于将 Cloud Storage 与 AI Platform Prediction 结合使用的快速指南。
概览
AI Platform Prediction 服务的以下方面必须或建议使用 Cloud Storage:
在线预测
- 存储已保存的模型,使其成为模型版本。
- 如果您使用的是自定义预测例程(Beta 版)或具有自定义代码的 scikit-learn 流水线(Beta 版),则存储自定义代码以处理预测请求。
- 存储自定义代码的其他数据,以便在处理预测时访问。
批量预测
- 存储批量预测输入文件。
- 存储批量预测输出。
- 如果您在使用批量预测时未在 AI Platform Prediction 上部署模型,请存储模型。
区域注意事项
创建与 AI Platform Prediction 结合使用的 Cloud Storage 存储分区时,您应该:
- 将其分配给特定的计算区域,而非多区域值。
- 使用运行训练作业所在的区域。
详细了解 AI Platform Prediction 可用区域。
设置 Cloud Storage 存储分区
本部分介绍如何创建新存储分区。您可以使用现有存储桶,但它所在区域必须与您计划运行 AI Platform 作业的区域相同。此外,如果该存储桶不属于您用于运行 AI Platform Prediction 的项目,则您必须明确向 AI Platform Prediction 服务账号授予访问权限。
-
为新存储桶指定名称。该名称在 Cloud Storage 的所有存储桶中必须是唯一的。
BUCKET_NAME="YOUR_BUCKET_NAME"
例如,使用附加了
-aiplatform
的项目名称:PROJECT_ID=$(gcloud config list project --format "value(core.project)") BUCKET_NAME=${PROJECT_ID}-aiplatform
-
检查您创建的存储桶名称。
echo $BUCKET_NAME
-
为您的存储桶选择一个区域,并设置
REGION
环境变量。使用您计划在其中运行 AI Platform Prediction 作业的区域。查看 AI Platform Prediction 服务的可用区域。
例如,以下代码会创建
REGION
并将其设置为us-central1
:REGION=us-central1
-
创建新的存储分区:
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 的 Python 客户端
Storage、
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 步:从云项目中获取所需信息
控制台
在 Google Cloud Console 中打开 IAM 页面。
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 服务账号的访问控制。您需要存储这些值,供以后在环境变量中使用。
选择项目后,使用 Google Cloud CLI 获取项目标识符:
PROJECT_ID=$(gcloud config list project --format "value(core.project)")
使用
gcloud
获取项目的访问令牌:AUTH_TOKEN=$(gcloud auth print-access-token)
通过从 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 存储分区的访问权限
控制台
打开 Google Cloud 控制台中的“存储”页面。
通过勾选存储分区名称左侧的框,选择用于部署模型的 Cloud Storage 存储分区。
点击右上角的显示信息面板按钮以显示“权限”标签页。
将服务账号 ID 粘贴到添加主账号字段中。在该字段的右侧,选择所需的角色,例如存储空间旧存储分区读取者。
如果不确定要选择哪个角色,则可以先选择多个角色,此时添加主账号字段下方会显示这些角色及其权限的简要说明。
要向服务账号分配所需的角色,请点击添加主账号字段右侧的添加按钮。
命令行
拥有项目和服务账号信息后,您需要更新 Cloud Storage 存储分区的访问权限。这些步骤使用的变量名称与上一部分相同。
在名为
BUCKET_NAME
的环境变量中设置存储分区的名称:BUCKET_NAME="your_bucket_name"
向服务账号授予对您网站中对象的读取权限 Cloud Storage 存储桶:
gcloud storage buckets add-iam-policy-binding gs://$BUCKET_NAME --member=user:$SVC_ACCOUNT --role=roles/storage.legacyObjectReader
授予写入权限:
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 角色的更多常规信息,请参阅如何向服务账号授予对资源的访问权限。