使用自定义服务帐号

本指南介绍了如何将 Vertex AI 配置为在以下情况下使用自定义服务帐号:

何时使用自定义服务帐号

Vertex AI 在运行时,常常会对应于 Google 为 Google Cloud 项目创建和管理的多个服务帐号的权限。如需在特定环境中授予 Vertex AI 对其他 Google Cloud 服务的访问权限,您可以自定义 Vertex AI 服务代理的权限

但是,自定义 Service Agent 的权限可能无法提供您所需的精细访问权限控制。例如,您可能希望为运行项目以外的其他 Google Cloud 资源单独自定义运行每个自定义训练作业

此外,自定义 Service Agent 的权限不会更改可对经过自定义训练的 Model 执行预测的容器的可用权限。

要在每次执行自定义训练时自定义访问权限,或自定义训练 Model 的预测容器的权限,您必须使用自定义服务帐号。

默认访问权限

本部分介绍自定义训练容器可用的默认访问权限以及自定义训练的 Model 资源的预测容器。使用自定义服务帐号时,您需要为特定 CustomJobHyperparameterTuningJobTrainingPipelineDeployedModel 资源替换此访问权限。

训练容器

创建 CustomJobHyperparameterTuningJob 或自定义 TrainingPipeline 时,默认情况下,训练容器利用 Google Cloud 项目的 Vertex AI Custom Service Agent 运行。

详细了解 Vertex AI Custom Code Service Agent,包括如何向其授予其他 Google Cloud 资源的访问权限。

预测容器

将自定义训练的 Model 部署到 Endpoint 时,预测容器使用由 Vertex AI 管理的服务帐号运行。此服务帐号与 Vertex AI 服务代理不同。

默认情况下,预测容器使用的服务帐号有权读取 Vertex AI 在 AIP_STORAGE_URI 中存储的 URI 中提供的模型工件环境变量。请勿依赖服务帐号获得任何其他权限。您无法自定义服务帐号的权限。

配置自定义服务帐号

以下部分介绍如何设置用于 Vertex AI 的自定义服务帐号,以及如何配置要使用的 CustomJobHyperparameterTuningJobTrainingPipelineDeployedModel服务帐号。

设置自定义服务帐号

如需设置自定义服务帐号,请执行以下操作:

  1. 创建用户管理的服务帐号。 用户管理的服务帐号必须与您的 Vertex AI 资源位于同一项目中。

  2. 向新的服务帐号授予 IAM 角色,这些角色允许访问您希望 Vertex AI 在自定义训练期间能够使用的 Google Cloud 服务和资源预测。

  3. 在您使用 Vertex AI 的项目中,找到项目的 Vertex AI Service Agent 的电子邮件地址。此电子邮件地址采用以下格式:

    service-PROJECT_NUMBER@gcp-sa-aiplatform.iam.gserviceaccount.com
    

    PROJECT_NUMBER 被替换为您的 Google Cloud 项目的项目编号

    您可以在 Google Cloud Console 的 IAM 页面上找到服务帐号:

    转到 IAM 页面

  4. 如果您打算仅使用自定义服务帐号进行训练,请跳过此步骤。如果您打算将自定义服务帐号用于预测容器,请授予其他角色:

    在您使用 Vertex AI 的项目中,为项目的 Vertex AI Service Agent 授予新的自定义服务帐号的 Service Account Admin 角色 (roles/iam.serviceAccountAdmin)。为此,请使用 gcloud 工具运行以下命令:

    gcloud iam service-accounts add-iam-policy-binding \
      --role=roles/iam.serviceAccountAdmin \
      --member=serviceAccount:AI_PLATFORM_SERVICE_AGENT \
      CUSTOM_SERVICE_ACCOUNT
    

    在此命令中,替换以下占位符:

    • AI_PLATFORM_SERVICE_AGENT:您项目的 Vertex AI Service Agent 的电子邮件地址,您可以在本部分的上一步中找到该电子邮件地址。

    • CUSTOM_SERVICE_ACCOUNT:您在本节的上一步中创建的新用户管理服务帐号的电子邮件地址。

为 Vertex AI 资源指定自定义服务帐号

将 Vertex AI 配置为使用特定资源的服务帐号的过程称为将服务帐号附加到资源。以下部分介绍如何将您在上一部分中创建的服务帐号附加到多个 Vertex AI 资源中。

将服务帐号关联到自定义训练资源

如需在自定义训练期间将 Vertex AI 配置为使用您的新服务帐号,请在 serviceAccount 字段 CustomJobSpec 开始构建自定义训练。根据您正在创建的自定义训练资源,此字段在 API 请求中的展示位置会有所不同:

  • 如果您要创建 CustomJob,请在 CustomJob.jobSpec.serviceAccount 中指定服务帐号的电子邮件地址。

    详细了解如何创建 CustomJob

  • 如果您要创建 HyperparameterTuningJob,请在 HyperparameterTuningJob.trialJobSpec.serviceAccount 中指定服务帐号的电子邮件地址。

    详细了解如何创建 HyperparameterTuningJob

  • 如果要创建不含超参数调节的自定义 TrainingPipeline,请在 TrainingPipeline.trainingTaskInputs.serviceAccount 中指定服务帐号的电子邮件地址。

  • 如果要创建具有超参数调节的自定义 TrainingPipeline,请在 TrainingPipeline.trainingTaskInputs.trialJobSpec.serviceAccount 中指定服务帐号的电子邮件地址。

将服务帐号附加到执行在线预测的容器

如需将自定义训练的 Model 的预测容器配置为使用新的服务帐号,请在将 Model 部署到Endpoint

控制台

按照使用 Cloud Console 部署模型。指定模型设置时,请在服务帐号下拉列表中选择服务帐号。

gcloud

按照使用 Vertex AI API 部署模型中的说明进行操作。运行 gcloud beta ai endpoints deploy-model 命令时,请使用 --service-account 标志指定服务帐号的电子邮件地址。

例如:

gcloud beta ai endpoints deploy-model ENDPOINT_ID \
--region=LOCATION \
--model=MODEL_ID \
--display-name=DEPLOYED_MODEL_NAME \
--machine-type=MACHINE_TYPE \
--min-replica-count=MIN_REPLICA_COUNT \
--max-replica-count=MAX_REPLICA_COUNT \
--traffic-split=0=100 \
--service-account=CUSTOM_SERVICE_ACCOUNT

CUSTOM_SERVICE_ACCOUNT 替换为服务帐号的电子邮件地址。

API

按照使用 Vertex AI API 部署模型中的说明进行操作。发送 projects.locations.endpoints.deployModel 请求时,请将 deployedModel.serviceAccount 字段设置为服务帐号的电邮地址。

在代码中访问 Google Cloud 服务

如果您按照前面部分中的说明将 Vertex AI 配置为使用自定义服务帐号,那么您的训练容器或预测容器将可以访问该服务帐号有权访问的任何 Google Cloud 服务和资源收件人。

如需访问 Google Cloud 服务,请编写您的训练代码预测服务代码,以使用应用默认凭据 (ADC),并明确指定要访问的资源的 ID 或项目编号。详细了解如何编写代码来访问其他 Google Cloud 服务

后续步骤