Addestramento con un account di servizio personalizzato

Puoi configurare AI Platform Training in modo che utilizzi un account di servizio a tua scelta quando durante l'esecuzione dell'applicazione di addestramento. L'uso di un ti consente di personalizzare le risorse Google Cloud per la tua formazione il codice può accedere senza concedere autorizzazioni eccessivamente ampie all'account di servizio usate per impostazione predefinita da AI Platform Training. Inoltre, puoi utilizzare un modello l'account di servizio per concedere al tuo codice l'accesso ad altri account Google Cloud come Secret Manager.

La guida si concentra sulle risorse di AI Platform Training autorizzazioni per accedere ad altre risorse Google Cloud. Per scoprire le autorizzazioni necessarie per accedere alle risorse di AI Platform Training, leggi Access controllo.

Comprensione dell'agente di servizio

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

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

PROJECT_NUMBER è stato sostituito dal progetto numero per del tuo progetto Google Cloud.

Trova l'account di servizio corrispondente al tuo progetto nella console Google Cloud oppure utilizzando Google Cloud CLI:

Console Google Cloud

Vai alla pagina IAM nella console Google Cloud, seleziona Includi concessioni dei ruoli fornite da Google, e trova l'entità corrisponda al formato dell'indirizzo email descritto in precedenza in questa sezione. La anche l'account di servizio ha il nome Google Cloud ML Engine Service Agent.

Vai alla sezione IAM

gcloud

Esegui questo comando in un ambiente Shell in cui hai inizializzato gcloud CLI:

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 progetto Google Cloud.

Questo comando restituisce quanto segue:

serviceAccount:GOOGLE_MANAGED_SERVICE_ACCOUNT

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

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

Se hai bisogno applicazioni di addestramento per l'esecuzione con autorizzazioni aggiuntive, puoi assegnare Ruoli IAM (Identity and Access Management) per questo account di servizio. Ad esempio, puoi concede l'accesso ai bucket Cloud Storage in altri bucket Google Cloud, Google Cloud.

Utilizzo di un account di servizio personalizzato

Se vuoi concedere o limitare le autorizzazioni di Google Cloud per un un job di addestramento, utilizzare un account di servizio personalizzato al posto dell'agente di servizio.

Per farlo, configura innanzitutto un account di servizio personalizzato. Quindi specifica un account di servizio quando crei un lavoro di addestramento lungo.

Configura un account di servizio personalizzato

Per configurare un account di servizio personalizzato:

  1. Creare un servizio gestito dall'utente .

  2. Concedi IAM al nuovo account di servizio ruoli per fornire applicazione di addestramento con 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 del tuo offerte di lavoro nell'addestramento, configurare l'account di servizio gestito dall'utente in modo da poterla collegare al tuo 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 l'applicazione di addestramento, specifica trainingInput.serviceAccount campo quando crea un job di addestramento.

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

trainingInput:
  serviceAccount: CUSTOM_SERVICE_ACCOUNT

Sostituisci CUSTOM_SERVICE_ACCOUNT con l'indirizzo email del account di servizio gestito dall'utente configurata in una sezione precedente di questa guida.

Accesso ai servizi Google Cloud dal codice di addestramento

Nel codice di addestramento, se vuoi accedere ad altri servizi Google Cloud dal job di addestramento, usa Credenziali predefinite dell'applicazione (ADC). Molti Le librerie client di Google Cloud vengono autenticate con ADC per impostazione predefinita. Non devi configurare variabili di ambiente; AI Platform Training configura automaticamente ADC per l'autenticazione come account di servizio personalizzato specificato nel passaggio precedente.

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

Se non vuoi impostare un ID progetto come hardcoded nel codice di addestramento, fare riferimento alla variabile di ambiente CLOUD_ML_PROJECT_ID. AI Platform Training imposta questa variabile di ambiente in ogni container di addestramento numero di progetto del progetto dove hai iniziato e addestramento personalizzato. Molti strumenti Google Cloud possono accettare ogni volta che prendono un ID progetto.

Ad esempio, valuta la possibilità di eseguire un job di addestramento in un progetto Google Cloud con ID PROJECT_ID. Se vuoi utilizzare il client Python da Google BigQuery a accedi a una tabella BigQuery nello stesso progetto, quindi non cercare di dedurre il progetto nel codice di addestramento:

Selezione implicita del progetto

from google.cloud import bigquery

client = bigquery.Client()

Utilizza invece il codice che seleziona 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