本指南說明如何設定 Gemini Enterprise Agent Platform,在下列情境中使用自訂服務帳戶:
執行自訂訓練時,您可以設定 Agent Platform 在訓練容器中使用自訂服務帳戶,無論是預先建構的容器或自訂容器皆可。
將自訂訓練的
Model資源部署至Endpoint資源,以提供線上預測時,您可以設定 Agent Platform,在提供預測的容器中使用自訂服務帳戶,無論是預先建構的容器或自訂容器皆可。在專案之間複製
Model資源時,您可以設定 Agent Platform 使用自訂服務帳戶,存取來源專案中的模型。
自訂服務帳戶的適用時機
Agent Platform 執行時,通常會使用 Google 為 Google Cloud 專案建立及管理的其中一個服務帳戶權限。如要在特定情況下授予 Agent Platform 更多其他 Google Cloud服務的存取權,可以為 Agent Platform 的服務代理新增特定角色。
不過,自訂服務代理的權限可能無法提供您想要的精細存取控管機制。常見用途包括:
- 減少 Agent Platform 工作和模型的權限。 預設的 Agent Platform 服務代理程式可存取 BigQuery 和 Cloud Storage。
- 允許不同工作存取不同資源。 您可能希望允許許多使用者在單一專案中啟動工作,但只授予每個使用者的工作存取特定 BigQuery 資料表或 Cloud Storage bucket 的權限。
舉例來說,您可能想個別自訂執行的每個自訂訓練作業,以便存取專案外的不同Google Cloud 資源。
此外,自訂服務代理程式的權限不會變更容器的可用權限,該容器會從自訂訓練的 Model 提供預測。
如要在每次執行自訂訓練時自訂存取權,或自訂自訂訓練 Model 的預測容器權限,請務必使用自訂服務帳戶。
預設存取權
本節說明自訂訓練容器和自訂訓練 Model 資源的預測容器可用的預設存取權。使用自訂服務帳戶時,您會覆寫特定 CustomJob、HyperparameterTuningJob、TrainingPipeline 或 DeployedModel 資源的存取權。
訓練容器
建立 CustomJob、HyperparameterTuningJob 或自訂 TrainingPipeline 時,訓練容器預設會使用您Google Cloud 專案的 Gemini Enterprise Agent Platform 自訂程式碼服務代理執行。
進一步瞭解 Gemini Enterprise Agent Platform Custom Code Service Agent,包括如何授權存取其他 Google Cloud 資源。
預測容器
將自訂訓練的 Model 部署至 Endpoint 時,預測容器會使用 Agent Platform 管理的服務帳戶執行。這個服務帳戶與代理程式平台服務代理程式不同。
預測容器預設使用的服務帳戶有權讀取模型構件,Agent Platform 會在AIP_STORAGE_URI環境變數中儲存 URI,並提供這些構件。請勿依賴服務帳戶取得任何其他權限。您無法自訂服務帳戶的權限。
設定自訂服務帳戶
以下各節說明如何設定自訂服務帳戶,以便搭配 Agent Platform 使用,以及如何設定 CustomJob、HyperparameterTuningJob、TrainingPipeline 或 DeployedModel 來使用服務帳戶。請注意,您無法設定自訂服務帳戶,從 Artifact Registry 提取映像檔。Gemini Enterprise Agent Platform 會使用預設服務帳戶來提取映像檔。
設定自訂服務帳戶
如要設定自訂服務帳戶,請按照下列步驟操作:
建立由使用者管理的服務帳戶。使用者管理的服務帳戶可以與 Agent Platform 資源位於同一專案,也可以位於不同專案。
將 IAM 角色授予新的服務帳戶,以提供 Google Cloud 服務和資源的存取權,讓 Agent Platform 在自訂訓練或預測期間使用。
選用:如果使用者代管的服務帳戶與訓練工作位於不同專案,您必須將服務帳戶權杖建立者角色 (roles/iam.serviceAccountTokenCreator) 授予您使用 Agent Platform 的專案的 Agent Platform 服務代理程式。
gcloud iam service-accounts add-iam-policy-binding \ --role=roles/iam.serviceAccountTokenCreator \ --member=serviceAccount:AI_PLATFORM_SERVICE_AGENT \ CUSTOM_SERVICE_ACCOUNT選用:如果您也打算使用使用者管理的服務帳戶進行預測,則必須將服務帳戶管理員角色 (
roles/iam.serviceAccountAdmin) 授予您使用 Agent Platform 的專案 Agent Platform 服務代理: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:專案的 Agent Platform 服務代理電子郵件地址,格式如下:
service-PROJECT_NUMBER@gcp-sa-aiplatform.iam.gserviceaccount.com如要找出 Agent Platform 服務代理,請前往 Google Cloud 控制台的「IAM」頁面。
CUSTOM_SERVICE_ACCOUNT:您在本節第一個步驟中建立的新使用者管理服務帳戶電子郵件地址。
為 Agent Platform 資源指定自訂服務帳戶
將 Agent Platform 設為使用特定服務帳戶的資源,這個程序稱為「將服務帳戶附加至資源」。下列各節說明如何將您在上一節建立的服務帳戶附加至多個 Agent Platform 資源。
將服務帳戶附加至自訂訓練資源
如要設定 Agent Platform 在自訂訓練期間使用新的服務帳戶,請在啟動自訂訓練時,於 CustomJobSpec 訊息的 serviceAccount 欄位中指定服務帳戶的電子郵件地址。視您建立的自訂訓練資源類型而定,這個欄位在 API 要求中的位置會有所不同:
如果您要建立
CustomJob,請在CustomJob.jobSpec.serviceAccount中指定服務帳戶的電子郵件地址。進一步瞭解如何建立
CustomJob。如果您要建立
HyperparameterTuningJob,請在HyperparameterTuningJob.trialJobSpec.serviceAccount中指定服務帳戶的電子郵件地址。進一步瞭解如何建立
HyperparameterTuningJob。如果您要建立自訂
TrainingPipeline,但不進行超參數調整,請在TrainingPipeline.trainingTaskInputs.serviceAccount中指定服務帳戶的電子郵件地址。如果您要建立自訂
TrainingPipeline並進行超參數調整,請在TrainingPipeline.trainingTaskInputs.trialJobSpec.serviceAccount中指定服務帳戶的電子郵件地址。
將服務帳戶附加至提供線上預測的容器
如要設定自訂訓練的 Model 預測容器,以使用新的服務帳戶,請在將 Model 部署至 Endpoint 時,指定服務帳戶的電子郵件地址:
控制台
請按照「使用Google Cloud 控制台部署模型」一文的說明操作。指定模型設定時,請在「Service account」(服務帳戶) 下拉式清單中選取服務帳戶。
gcloud
請按照「使用 Agent Platform API 部署模型」一文的說明操作。執行 gcloud
ai endpoints deploy-model 指令時,請使用 --service-account 旗標指定服務帳戶的電子郵件地址。
使用下列任何指令資料之前,請先替換以下項目:
- ENDPOINT_ID:端點的 ID。
- LOCATION_ID:您使用 Agent Platform 的區域。
- MODEL_ID:要部署的模型 ID。
-
DEPLOYED_MODEL_NAME:
DeployedModel的名稱。您也可以使用Model的顯示名稱做為DeployedModel。 -
MACHINE_TYPE:選用。這個部署作業中每個節點使用的機器資源。預設設定為
n1-standard-2。 進一步瞭解機器類型。 - MIN_REPLICA_COUNT:此部署作業的節點數量下限。節點數量可視推論負載需求增加或減少,最多可達節點數量上限,最少則不得低於這個數量。
- MAX_REPLICA_COUNT:此部署作業的節點數量上限。 節點數量可視推論負載需求增減,最多可達這個節點數量,且絕不會少於節點數量下限。
- CUSTOM_SERVICE_ACCOUNT:服務帳戶的電子郵件地址。例如:
SA_NAME@PROJECT_ID.iam.gserviceaccount.com。
執行 gcloud ai endpoints deploy-model 指令:
Linux、macOS 或 Cloud Shell
gcloud 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
Windows (PowerShell)
gcloud 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
Windows (cmd.exe)
gcloud 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
API
請按照「使用 Agent Platform API 部署模型」一文的說明操作。傳送
projects.locations.endpoints.deployModel
要求時,請將
deployedModel.serviceAccount
欄位
設為服務帳戶的電子郵件地址。
將服務帳戶附加至 CopyModel 要求
如要設定 Agent Platform,在複製模型時使用新服務帳戶,請在 CopyModelRequest 訊息的 customServiceAccount 欄位中指定服務帳戶的電子郵件地址。這個服務帳戶必須屬於模型複製到的目的地專案,且您必須具備這個服務帳戶的 iam.serviceAccounts.actAs 權限。
REST
按照「使用 Agent Platform API 複製模型」一文的說明,在要求 JSON 主體中新增 customServiceAccount 欄位。
API
傳送 projects.locations.models.copy 要求時,請將 customServiceAccount 欄位設為服務帳戶的電子郵件地址。
在程式碼中存取 Google Cloud 服務
如果您按照前幾節的指示,將 Agent Platform 設為使用自訂服務帳戶,訓練或預測容器就能存取服務帳戶有權存取的任何 Google Cloud 服務和資源。
如要存取 Google Cloud 服務,請編寫訓練程式碼或預測服務程式碼,使用應用程式預設憑證 (ADC),並明確指定要存取資源的專案 ID 或專案編號。進一步瞭解如何編寫程式碼來存取其他服務。 Google Cloud
限制
Gemini Enterprise Agent Platform 中的自訂服務帳戶有下列限制:
- 如果是批次推論,即使設定了自訂服務帳戶,Gemini Enterprise Agent Platform 服務代理程式仍會用於存取 BigQuery 和 Cloud Storage。
- 每個專案在每個區域的每個服務 (例如 Vertex AI Inference) 最多可有 20 個自訂服務帳戶。