Addestramento con un account di servizio personalizzato

Puoi configurare AI Platform Training in modo che utilizzi un service account a tua scelta quando esegue l'applicazione di addestramento. L'utilizzo di un account di servizio personalizzato ti consente di personalizzare le Google Cloud risorse a cui può accedere il tuo codice di addestramento senza concedere autorizzazioni eccessivamente ampie all'account di servizio utilizzato per impostazione predefinita da AI Platform Training. Inoltre, puoi utilizzare un account di servizio personalizzato per consentire al tuo codice di accedere a servizi Google Cloudaggiuntivi come Secret Manager.

La guida si concentra sulle autorizzazioni delle risorse di AI Platform Training per accedere ad altre Google Cloud risorse. Per scoprire le autorizzazioni di cui hai bisogno per accedere alle risorse di AI Platform Training, consulta Controllo accessi.

Informazioni sull'agente di servizio

Per impostazione predefinita, AI Platform Training utilizza un agente di servizio per eseguire i job di addestramento. Questo agente di servizio è identificato da un indirizzo email con il seguente formato:

service-PROJECT_NUMBER@cloud-ml.google.com.iam.gserviceaccount.com

PROJECT_NUMBER viene sostituito dal numero del progetto per il Google Cloud tuo progetto.

Trova il service account corrispondente per il tuo progetto nella console Google Cloud o utilizzando Google Cloud CLI:

Console Google Cloud

Vai alla pagina IAM nella console Google Cloud, selezionate Includi concessioni di ruoli fornite da Google e individua il principale corrispondente al formato dell'indirizzo email descritto in precedenza in questa sezione. L'account di servizio ha anche il nome Google Cloud ML Engine Service Agent.

Vai alla pagina IAM

gcloud

Esegui il seguente comando in un ambiente Shell in cui hai inizializzato l'interfaccia a riga di comando gcloud:

gcloud projects get-iam-policy PROJECT_ID \
  --flatten="bindings[].members" \
  --format="table(bindings.members)" \
  --filter="bindings.role:roles/ml.serviceAgent" \
  | grep serviceAccount:

Sostituisci PROJECT_ID con l'ID del tuo Google Cloud progetto.

Questo comando restituisce quanto segue:

serviceAccount:GOOGLE_MANAGED_SERVICE_ACCOUNT

GOOGLE_MANAGED_SERVICE_ACCOUNT è l'indirizzo email dell'agente di servizio AI Platform del tuo progetto.

Questo agente di servizio dispone delle autorizzazioni appropriate per la maggior parte dei job di addestramento. Ad esempio, può leggere da e scrivere in i bucket Cloud Storage nello stesso Google Cloud progetto.

Se devi eseguire le tue applicazioni di addestramento con autorizzazioni aggiuntive, puoi assegnare altri ruoli IAM (Identity and Access Management) a questo account di servizio. Ad esempio, puoi concedere l'accesso ai bucket Cloud Storage in altri Google Cloud progetti.

Utilizzo di un account di servizio personalizzato

Se vuoi concedere o limitare le autorizzazioni Google Cloud per un determinato job di addestramento, utilizza un account di servizio personalizzato anziché l'agente di servizio.

Per farlo, devi prima configurare un account di servizio personalizzato. Poi specifica l'account di servizio personalizzato quando crei un job di addestramento.

Configurare un account di servizio personalizzato

Per configurare un account di servizio personalizzato:

  1. Crea un account di servizio gestito dall'utente.

  2. Concede al nuovo account di servizio i ruoli IAM per fornire all'applicazione di formazione tutte le autorizzazioni di cui ha bisogno durante l'esecuzione.

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

Specifica l'account di servizio personalizzato per il job di addestramento

Per configurare AI Platform Training in modo che utilizzi il tuo account di servizio personalizzato quando esegue l'applicazione di addestramento, specifica il trainingInput.serviceAccount campo quando crei un job di addestramento.

Se utilizzi gcloud CLI per creare un job di addestramento, devi utilizzare un file config.yaml per specificare questo campo. Ad esempio:

trainingInput:
  serviceAccount: CUSTOM_SERVICE_ACCOUNT

Sostituisci CUSTOM_SERVICE_ACCOUNT con l'indirizzo email del service account gestito dall'utente che hai configurato in una sezione precedente di questa guida.

Accesso ai Google Cloud servizi dal codice di addestramento

Nel codice di addestramento, se vuoi accedere ad altri Google Cloud servizi dal tuo job di addestramento, utilizza le credenziali predefinite dell'applicazione (ADC). Molte Google Cloud librerie client si autenticano con l'ADC per impostazione predefinita. Non è necessario configurare alcuna variabile di ambiente. La formazione della piattaforma AI configura automaticamente l'ADC per l'autenticazione come account di servizio personalizzato specificato nel passaggio precedente.

Tuttavia, quando utilizzi una Google Cloud libreria client nel codice di addestramento, potrebbe non connettersi al progetto Google Cloud corretto per impostazione predefinita. Se i log di addestramento segnalano errori di autorizzazione, questo potrebbe essere il problema. Quando crei un job di addestramento, AI Platform Training non esegue il codice di addestramento direttamente nel tuo Google Cloud progetto, ma in un progetto separato gestito da Google. AI Platform Training utilizza questo progetto esclusivamente per le operazioni relative al tuo progetto. Pertanto, non provare a dedurre un ID progetto dall'ambiente nel codice di addestramento; specifica gli ID progetto in modo esplicito.

Se non vuoi codificare un ID progetto nel codice di addestramento, puoi fare riferimento alla variabile di ambiente CLOUD_ML_PROJECT_ID. AI Platform Training imposta questa variabile di ambiente in ogni contenitore di addestramento in modo che contenga il numero del progetto del progetto in cui hai avviato l'addestramento personalizzato. Molti Google Cloud strumenti possono accettare un numero di progetto ovunque accettino un ID progetto.

Ad esempio, considera l'esecuzione di un job di addestramento in un Google Cloud progetto con ID PROJECT_ID. Se vuoi utilizzare il client Python per Google BigQuery per accedere a una tabella BigQuery nello stesso progetto, non provare a dedurre il progetto nel codice di addestramento:

Selezione implicita del progetto

from google.cloud import bigquery

client = bigquery.Client()

Utilizza invece un codice che selezioni esplicitamente un progetto:

Selezione esplicita del progetto

from google.cloud import bigquery

project_number = os.environ["CLOUD_ML_PROJECT_ID"]

client = bigquery.Client(project=project_number)

Passaggi successivi