Utilizzo di un account di servizio personalizzato

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Questa guida descrive come configurare Vertex AI in modo che utilizzi un account di servizio personalizzato nei seguenti scenari:

Quando utilizzare un account di servizio personalizzato

Quando Vertex AI viene eseguito, in genere agisce sulle autorizzazioni di uno dei vari account di servizio che Google crea e gestisce per il progetto Google Cloud. Per concedere a Vertex AI un accesso più esteso ad altri servizi Google Cloud in determinati contesti, puoi aggiungere ruoli specifici agli agenti di servizio di Vertex AI.

Tuttavia, la personalizzazione delle autorizzazioni degli agenti di servizio potrebbe non fornire il controllo dell'accesso granulare desiderato. Ecco alcuni casi d'uso comuni:

  • Consentire meno autorizzazioni ai job e ai modelli di Vertex AI. L'agente di servizio predefinito Vertex AI ha accesso a BigQuery e Cloud Storage.
  • Consentire a job diversi di accedere a risorse diverse. Potrebbe essere necessario consentire a molti utenti di avviare i job in un singolo progetto, ma concedere ai job di ogni utente l'accesso solo a una determinata tabella BigQuery o a un bucket Cloud Storage.

Ad esempio, potresti voler personalizzare individualmente ogni job di addestramento personalizzato eseguito per accedere a diverse risorse Google Cloud all'esterno del progetto.

Inoltre, la personalizzazione delle autorizzazioni degli agenti di servizio non cambia le autorizzazioni disponibili per un container che fornisce previsioni da un Model con addestramento personalizzato.

Per personalizzare l'accesso ogni volta che esegui l'addestramento personalizzato o per personalizzare le autorizzazioni del contenitore di previsione di un addestramento personalizzato di Model, devi utilizzare un account di servizio personalizzato.

Accesso predefinito

Questa sezione descrive l'accesso predefinito disponibile per i container di addestramento personalizzato e i container di previsione delle risorse Model con addestramento personalizzato. Quando utilizzi un account di servizio personalizzato, esegui l'override di questo accesso per una risorsa CustomJob, HyperparameterTuningJob, TrainingPipeline o DeployedModel specifica.

Container di addestramento

Quando crei un elemento CustomJob, HyperparameterTuningJob o un elemento TrainingPipeline personalizzato, il container di addestramento viene eseguito utilizzando per impostazione predefinita l'agente di servizio del codice personalizzato Vertex AI del tuo progetto Google Cloud.

Scopri di più sull'agente di servizio Code personalizzato Vertex AI, incluso come concedere l'accesso ad altre risorse Google Cloud.

Container di previsione

Quando esegui il deployment di un addestramento Model personalizzato in un Endpoint, il container di previsione viene eseguito utilizzando un account di servizio gestito da Vertex AI. Questo account di servizio è diverso dagli agenti di servizio Vertex AI.

L'account di servizio utilizzato dal container di previsione, per impostazione predefinita, è autorizzato a leggere gli artefatti dei modelli messi a disposizione da Vertex AI in un URI archiviato nella variabile di ambiente AIP_STORAGE_URI. Non fare affidamento sull'account di servizio per avere altre autorizzazioni. Non è possibile personalizzare le autorizzazioni dell'account di servizio.

Configura un account di servizio personalizzato

Le sezioni seguenti descrivono come configurare un account di servizio personalizzato da utilizzare con Vertex AI e come configurare un account CustomJob, HyperparameterTuningJob, TrainingPipeline o DeployedModel per l'utilizzo dell'account di servizio. Tieni presente che non puoi configurare un account di servizio personalizzato per estrarre immagini da Artifact Registry. Vertex AI utilizza l'account di servizio predefinito per eseguire il pull delle immagini.

Configura un account di servizio personalizzato

Per configurare un account di servizio personalizzato:

  1. Crea un account di servizio gestito dall'utente. L'account di servizio gestito dall'utente può trovarsi nello stesso progetto delle risorse Vertex AI o in un progetto diverso.

  2. Concedi i tuoi nuovi ruoli IAM dell'account di servizio che forniscono l'accesso ai servizi e alle risorse di Google Cloud che vuoi che Vertex AI possa utilizzare durante l'addestramento personalizzato o la previsione.

  3. Facoltativo: se l'account di servizio gestito dall'utente si trova in un progetto diverso da quello dei job di addestramento, configura l'account di servizio gestito dall'utente in modo da poterlo collegare ai job di addestramento.

  4. Facoltativo: se prevedi anche di utilizzare l'account di servizio gestito dall'utente per le previsioni, devi concedere il ruolo Amministratore account di servizio (roles/iam.serviceAccountAdmin) all'agente di servizio Vertex AI del progetto in cui stai utilizzando Vertex AI:

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

    Sostituisci quanto segue:

    • AI_PLATFORM_SERVICE_AGENT: l'indirizzo email dell'agente di servizio Vertex AI del tuo progetto, che ha il seguente formato:

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

      Per trovare l'agente di servizio Vertex AI, vai alla pagina IAM in Google Cloud Console.

      Vai a IAM

    • CUSTOM_SERVICE_ACCOUNT: l'indirizzo email del nuovo account di servizio gestito dall'utente che hai creato nel primo passaggio di questa sezione.

Specifica un account di servizio personalizzato per le risorse Vertex AI

Il processo di configurazione di Vertex AI per utilizzare un account di servizio specifico per una risorsa è denominato collegamento dell'account di servizio alla risorsa. Le seguenti sezioni descrivono come collegare l'account di servizio creato nella sezione precedente a diverse risorse Vertex AI.

Collegamento di un account di servizio a una risorsa di addestramento personalizzata

Per configurare Vertex AI in modo che utilizzi il nuovo account di servizio durante l'addestramento personalizzato, specifica l'indirizzo email dell'account di servizio nel campo serviceAccount di un messaggio CustomJobSpec quando avvii l'addestramento personalizzato. In base al tipo di risorsa di addestramento personalizzato che stai creando, il posizionamento di questo campo nella richiesta API è diverso:

  • Se crei un CustomJob, specifica l'indirizzo email dell'account di servizio in CustomJob.jobSpec.serviceAccount.

    Scopri di più sulla creazione di una CustomJob.

  • Se stai creando un HyperparameterTuningJob, specifica l'indirizzo email dell'account di servizio in HyperparameterTuningJob.trialJobSpec.serviceAccount.

    Scopri di più sulla creazione di una HyperparameterTuningJob.

  • Se crei un TrainingPipeline personalizzato senza ottimizzazione degli iperparametri, specifica l'indirizzo email dell'account di servizio in TrainingPipeline.trainingTaskInputs.serviceAccount.

  • Se crei un TrainingPipeline personalizzato con ottimizzazione degli iperparametri, specifica l'indirizzo email dell'account di servizio in TrainingPipeline.trainingTaskInputs.trialJobSpec.serviceAccount.

Collega un account di servizio a un container per la gestione delle previsioni online

Per configurare il contenitore di previsione di un addestramento personalizzato Model per l'utilizzo del tuo nuovo account di servizio, specifica l'indirizzo email dell'account di servizio quando esegui il deployment di Model in un Endpoint:

Console

Segui il passaggio Eseguire il deployment di un modello utilizzando Google Cloud Console. Quando specifichi le impostazioni del modello, seleziona l'account di servizio nell'elenco a discesa Account di servizio.

gcloud

Segui il deployment di un modello utilizzando l'API Vertex AI. Quando esegui il comando gcloud ai endpoints deploy-model, utilizza il flag --service-account per specificare l'indirizzo email del tuo account di servizio.

Prima di utilizzare uno qualsiasi dei dati di comando riportati di seguito, apporta le seguenti sostituzioni:

  • ENDPOINT_ID: l'ID dell'endpoint.
  • LOCATION_ID: l'area geografica in cui utilizzi Vertex AI.
  • MODEL_ID: l'ID del modello di cui eseguire il deployment.
  • DEPLOYED_MODEL_NAME: un nome per DeployedModel. Puoi utilizzare il nome visualizzato di Model anche per DeployedModel.
  • MACHINE_TYPE: facoltativo. La risorsa di macchina da utilizzare per ciascun nodo di questo deployment; il valore predefinito è n1-standard-2. Scopri di più sui tipi di macchina.
  • MIN_REPLICA_COUNT: il numero minimo di nodi per questo deployment. Il numero di nodi può essere aumentato o diminuito in base al carico di previsione, fino al numero massimo di nodi, ma non scenderà mai al di sotto di questo numero.
  • MAX_REPLICA_COUNT: il numero massimo di nodi per questo deployment. Il conteggio dei nodi può essere aumentato o diminuito in base alle richieste del carico di previsione, ma non supererà mai il limite massimo.
  • CUSTOM_SERVICE_ACCOUNT: l'indirizzo email dell'account di servizio. Ad esempio: SA_NAME@PROJECT_ID.iam.gserviceaccount.com.

Esegui il comando gcloud ai endpoints deploy-model:

Linux, macOS o 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

Segui il deployment di un modello utilizzando l'API Vertex AI. Quando invii la projects.locations.endpoints.deployModelrichiesta, imposta il campo deployedModel.serviceAccount sull'indirizzo email dell'account di servizio.

Accedi ai servizi Google Cloud nel tuo codice

Se configuri Vertex AI in modo che utilizzi un account di servizio personalizzato seguendo le istruzioni nelle sezioni precedenti, il container di addestramento o il container di previsione potrà accedere a qualsiasi servizio e risorsa di Google Cloud a cui ha accesso l'account di servizio.

Per accedere ai servizi Google Cloud, scrivi il tuo codice di addestramento o il tuo codice di pubblicazione della previsione per utilizzare le credenziali predefinite dell'applicazione (ADC) e specifica esplicitamente l'ID progetto o il numero di progetto della risorsa a cui vuoi accedere. Scopri di più su come scrivere il codice per accedere ad altri servizi di Google Cloud.

Passaggi successivi