Durante l'addestramento, puoi usare una shell interattiva per ispezionare nel container su cui è in esecuzione il codice di addestramento. Puoi sfogliare il file system e eseguire utilità di debug in ogni versione del runtime o contenitore personalizzato in esecuzione su AI Platform Training.
L'utilizzo di una shell interattiva per ispezionare il contenitore di addestramento può aiutarti a eseguire il debug di problemi relativi al codice di addestramento o alla configurazione di AI Platform Training. Ad esempio, puoi utilizzare una shell interattiva per:
- Esegui strumenti di tracciamento e profilazione
- Analizzare l'utilizzo della GPU
- Controlla le autorizzazioni di Google Cloud disponibili per il contenitore
Prima di iniziare
Puoi usare una shell interattiva quando esegui un addestramento o un iperparametro un job di ottimizzazione. Durante la preparazione del codice di addestramento ed eseguire un job di addestramento, accertati di soddisfare i seguenti requisiti:
Assicurati che il container di addestramento
bash
installata.Tutti i contenitori delle versioni di runtime sono stati installati con
bash
. Se crei un container personalizzato per la formazione, utilizza un container di base che includabash
o installabash
nel tuo Dockerfile.Eseguire l'addestramento in una regione che supporta il shell.
Assicurati che chiunque voglia accedere a una shell interattiva disponga delle seguenti autorizzazioni per il progetto Google Cloud in cui viene eseguito l'addestramento:
ml.jobs.create
ml.jobs.get
ml.jobs.cancel
Se avvii la formazione autonomamente, è molto probabile che tu abbia già queste autorizzazioni e che tu possa accedere a una shell interattiva. Tuttavia, se vuoi utilizzare una shell interattiva per ispezionare un job di addestramento creato da qualcun altro dell'organizzazione, potrebbe essere necessario ottenere queste autorizzazioni.
Un modo per ottenere queste autorizzazioni è chiedere a un amministratore del tuo organizzazione che ti concederà l'Amministratore di AI Platform Training ruolo (
roles/ml.admin
). Se ti è stato concesso lo Sviluppatore AI Platform Training ruolo (roles/ml.developer
), avrai accesso alla shell interattiva per i job che crei.
Requisiti per le richieste avanzate
Se utilizzi determinate funzionalità avanzate, devi soddisfare i seguenti requisiti aggiuntivi:
Se colleghi un account di servizio personalizzato al job di addestramento, quindi verifica che tutti gli utenti che vogliano accedere la shell interattiva dispone dell'autorizzazione
iam.serviceAccounts.actAs
per con un account di servizio collegato.Nella guida agli account di servizio personalizzati viene indicato che devi disporre di questa autorizzazione per collegare un account di servizio. Questa autorizzazione è necessaria anche per visualizzare una shell interattiva durante l'addestramento personalizzato.
Ad esempio, per creare un job con un account di servizio collegato, devi disporre dell'autorizzazione
iam.serviceAccounts.actAs
per l'account di servizio. Se uno dei tuoi colleghi vuole vedere una shell interattiva per questo lavoro anche questi devono avere la stessa autorizzazioneiam.serviceAccounts.actAs
.Se hai configurato il progetto per utilizzare i Controlli di servizio VPC con AI Platform Training, quindi tieni conto le seguenti limitazioni aggiuntive:
Non puoi utilizzare i Controlli di servizio VPC con il peering di rete VPC.
Da una shell interattiva non puoi accedere alla rete internet pubblica di risorse Google Cloud al di fuori del tuo perimetro di servizio.
Per proteggere l'accesso alle shell interattive, oltre a
ml.googleapis.com
devi aggiungerenotebooks.googleapis.com
come servizio limitato nel perimetro di servizio. Se limiti soloml.googleapis.com
e nonnotebooks.googleapis.com
, gli utenti possono per accedere a shell interattive da macchine esterne al perimetro di servizio, riduce i vantaggi per la sicurezza derivanti dall'uso dei Controlli di servizio VPC.
Attivazione delle shell interattive
Per attivare le shell interattive per un job di addestramento, imposta il
campo API enableWebAccess
su true
nel campo trainingInput
del job quando lo crei.
L'esempio seguente mostra come farlo aggiungendo --enable-web-access
quando si utilizza gcloud CLI. Al momento non puoi creare un
un job di addestramento con una shell interattiva abilitata nella console Google Cloud.
L'esempio presuppone che tu abbia una formazione
sul tuo file system locale
directory denominata trainer
con un modulo denominato task
.
Per creare il job di addestramento, esegui questo comando:
gcloud ai-platform jobs submit training JOB_ID \
--enable-web-access \
--job-dir=JOB_DIR \
--module-name=trainer.task \
--package-path=trainer \
--python-version=3.7 \
--region=REGION \
--runtime-version=2.11 \
--scale-tier=CUSTOM \
--master-machine-type=n1-highmem-8
In questo comando, sostituisci i seguenti segnaposto:
- JOB_ID: un nome scelto da te per il job.
- JOB_DIR: un percorso di una directory Cloud Storage in cui verrà caricata l'applicazione di addestramento.
REGION: la regione in cui prevedi di creare il job di addestramento. Tieni presente che deve essere una regione che supporta i shell interattivi.
In caso di esito positivo, il comando produce il seguente output:
Job [JOB_ID] submitted successfully. Your job is still active. You may view the status of your job with the command $ gcloud ai-platform jobs describe JOB_ID or continue streaming the logs with the command $ gcloud ai-platform jobs stream-logs JOB_ID jobId: JOB_ID state: QUEUED
Recupero dell'URI di accesso web
Dopo aver avviato la formazione in base alle indicazioni riportate nella sezione precedente, utilizza la console Google Cloud o lo strumento gcloud
riga di comando per visualizzare gli URI che puoi utilizzare per accedere alle shell interattive.
AI Platform Training fornisce un URI per ogni nodo di addestramento che fa parte del job.
A seconda del tipo di job di addestramento che hai creato, seleziona una delle seguenti schede per visualizzare esempi di come trovare il campo dell'API webAccessUris
, che contiene un URI shell interattivo per ogni nodo del job.
Job di addestramento
Le seguenti schede mostrano diversi modi per accedere al TrainingOutput
per un job di addestramento standard.
gcloud
Esegui il comando gcloud ai-platform jobs describe
:
gcloud ai-platform jobs describe JOB_ID
Sostituisci quanto segue:
-
JOB_ID: l'ID del job. Hai impostato questo ID quando hai creato il job.
Se non conosci l'ID del tuo job, puoi eseguire il
gcloud ai-platform jobs list
comando e cercare il job appropriato.
Nell'output, cerca quanto segue:
trainingOutput:
webAccessUris:
master-replica-0: INTERACTIVE_SHELL_URI
Console
Apri la pagina Job di AI Platform Training nella console Google Cloud.
Fai clic sul nome del job nell'elenco per aprire la pagina Dettagli job.
Fai clic sul pulsante Mostra JSON nella sezione Output dell'addestramento per espandere una visualizzazione JSON del
TrainingOutput
per il job.
Nell'output, cerca quanto segue:
{
"webAccessUris": {
"master-replica-0": "INTERACTIVE_SHELL_URI"
}
}
Se non vedi il campo webAccessUris
, è possibile che
AI Platform Training non abbia ancora iniziato a eseguire il job o la prova.
Verifica di vedere RUNNING
nel campo state
. Se lo stato è QUEUED
o
PREPARING
, attendi un minuto; quindi prova a recuperare di nuovo le informazioni sul job.
Job di ottimizzazione degli iperparametri
Le seguenti schede mostrano diversi modi per accedere a TrainingOutput
per un
un job di ottimizzazione degli iperparametri.
gcloud
Esegui il comando gcloud ai-platform jobs describe
:
gcloud ai-platform jobs describe JOB_ID
Sostituisci quanto segue:
-
JOB_ID: l'ID del tuo job. Hai impostato questo ID quando hai creato il job.
Se non conosci l'ID del job, puoi eseguire
gcloud ai-platform jobs list
e cerca il comando lavoro appropriato).
Nell'output, cerca quanto segue:
trainingOutput:
trials:
- trialId: '1'
webAccessUris:
master-replica-0: INTERACTIVE_SHELL_URI
Console
Apri la pagina Job di AI Platform Training nella console Google Cloud.
Fai clic sul nome del job nell'elenco per aprire la pagina Dettagli job.
Fai clic sul pulsante Mostra JSON nella sezione Output dell'addestramento per espandere una visualizzazione JSON del
TrainingOutput
per il job.
Nell'output, cerca quanto segue:
{
"trials": [
{
...
"webAccessUris": {
"master-replica-0": "INTERACTIVE_SHELL_URI"
}
},
...
]
}
Se non vedi il campo webAccessUris
, è possibile che
AI Platform Training non abbia ancora iniziato a eseguire il job o la prova.
Verifica di vedere RUNNING
nel campo state
. Se lo stato è QUEUED
o
PREPARING
, attendi un minuto; quindi prova a recuperare di nuovo le informazioni sul job.
AI Platform Training fornisce un insieme di URI shell interattivi per ogni
prova di ottimizzazione iperparametri quando
la prova entra nello stato RUNNING
. Se vuoi ottenere gli URI della shell interattiva per le prove successive, recupera di nuovo le informazioni sul job dopo l'avvio delle prove.
L'esempio precedente mostra l'output previsto per l'addestramento a replica singola: un URI per il nodo di addestramento primario. Se esegui l'addestramento distribuito, l'output contiene un URI per ogni nodo di addestramento, identificato dal nome dell'attività.
Ad esempio, se il job ha un master e due worker, il campo webAccessUris
è simile al seguente:
{
"master-replica-0": "URI_FOR_PRIMARY",
"worker-replica-0": "URI_FOR_FIRST_SECONDARY",
"worker-replica-1": "URI_FOR_SECOND_SECONDARY"
}
Aree geografiche disponibili
L'uso di una shell interattiva per AI Platform Training è supportato nella le seguenti regioni:
Americhe
- Oregon (us-west1)
- Los Angeles (us-west2)
- Iowa (us-central1)
- Carolina del Sud (us-east1)
- N. Virginia (us-east4)
- Montréal (northamerica-northeast1)
Europa
- Londra (europe-west2)
- Belgio (europe-west1)
- Zurigo (europe-west6)
- Francoforte (europe-west3)
Asia Pacifico
- Singapore (asia-southeast1)
- Taiwan (asia-east1)
- Tokyo (asia-northeast1)
- Sydney (australia-southeast1)
- Seul (asia-northeast3)
AI Platform Training fornisce anche regioni aggiuntive per l'addestramento.
Utilizzo di una shell interattiva
Per utilizzare la shell interattiva per un nodo di addestramento, vai a uno degli URI trovati nella sezione precedente. Nel browser viene visualizzata una shell Bash, dandoti accesso al file system del container, AI Platform Training sta eseguendo il tuo codice di addestramento.
Le sezioni seguenti descrivono alcuni aspetti da considerare durante l'utilizzo della shell e forniscono alcuni esempi di strumenti di monitoraggio che puoi utilizzare nella shell.
Impedire il completamento del job
Quando AI Platform Training termina l'esecuzione del job o della prova, perderai immediatamente l'accesso alla shell interattiva. In questo caso,
vedi il messaggio command terminated with exit code 137
o la shell potrebbe interrompersi
a rispondere. Se hai creato file nel file system del contenitore, questi non rimangono al termine del job.
In alcuni casi, potresti voler prolungare deliberatamente l'esecuzione del job per eseguire il debug con una shell interattiva. Ad esempio, puoi aggiungere codice come seguendo il codice di addestramento per fare in modo che il job continui a essere eseguito almeno un'ora dopo il verificarsi di un'eccezione:
import time
import traceback
try:
# Replace with a function that runs your training code
train_model()
except Exception as e:
traceback.print_exc()
time.sleep(60 * 60) # 1 hour
Tuttavia, tieni presente che ti vengono addebitati costi di addestramento di AI Platform finché il job continua a essere eseguito.
Controllo dei problemi relativi alle autorizzazioni in corso...
L'ambiente della shell interattiva viene autenticato utilizzando le credenziali predefinite per l'applicazione (ADC) per l'account di servizio utilizzato da AI Platform Training per eseguire il codice di addestramento. Tu
può eseguire gcloud auth list
nella shell per ulteriori dettagli.
Nella shell, puoi utilizzare gcloud storage
,
bq
e altri strumenti che supportano ADC.
In questo modo puoi verificare che il job sia in grado di accedere a un determinato
bucket Cloud Storage, a una tabella BigQuery o a un'altra risorsa Google Cloud
di cui ha bisogno il codice di addestramento.
Visualizzazione dell'esecuzione in Python con py-spy
py-spy
consente di eseguire il profiling di un programma Python in esecuzione senza modificarlo. Per utilizzare py-spy
in un
shell interattiva, procedi nel seguente modo:
Installa
py-spy
:pip3 install py-spy
Esegui
ps aux
nella shell e cerca il PID dell'addestramento in Python .Esegui uno dei sottocomandi descritti nella documentazione di
py-spy
, utilizzando il PID che hai trovato nel passaggio precedente.Se utilizzi
py-spy record
per creare un file SVG, copialo in un il bucket Cloud Storage per poterlo visualizzare in seguito sul tuo computer. Ad esempio:gcloud storage cp profile.svg gs://BUCKET
Sostituisci BUCKET con il nome di un bucket a cui hai accesso.
Analisi del rendimento con perf
perf
ti consente di analizzare il rendimento del tuo nodo di addestramento.
Per installare la versione di perf
appropriata per il kernel Linux del nodo, esegui
i seguenti comandi:
apt-get update
apt-get install -y linux-tools-generic
rm /usr/bin/perf
LINUX_TOOLS_VERSION=$(ls /usr/lib/linux-tools | tail -n 1)
ln -s "/usr/lib/linux-tools/${LINUX_TOOLS_VERSION}/perf" /usr/bin/perf
Dopodiché puoi eseguire uno dei sottocomandi descritti nella documentazione di perf
.
Visualizzare le informazioni sull'utilizzo della GPU
I container abilitati per GPU in esecuzione su nodi con GPU in genere hanno diversi strumenti a riga di comando preinstallati che possono aiutarti a monitorare l'utilizzo della GPU. Per esempio:
Utilizza
nvidia-smi
per monitorare l'utilizzo della GPU delle a vari processi.Utilizza
nvprof
per raccogliere una serie di informazioni sul profiling della GPU. Poichénvprof
non può collegarsi a un processo esistente, potresti vuoi utilizzare lo strumento per avviare un altro processo che esegue le API nel tuo codice. Ciò significa che il codice di addestramento verrà eseguito due volte sul nodo. Ad esempio:nvprof -o prof.nvvp python3 -m MODULE_NAME
Sostituisci MODULE_NAME con il nome completo del tuo corso di formazione il punto di ingresso dell'applicazione module; ad esempio
trainer.task
.Trasferisci poi il file di output in un bucket Cloud Storage per analizzarlo in un secondo momento sul computer locale. Ad esempio:
gcloud storage cp prof.nvvp gs://BUCKET
Sostituisci BUCKET con il nome di un bucket a cui hai accesso.
Se si verifica un errore della GPU (non è un problema di configurazione o con AI Platform Training), utilizza
nvidia-bug-report.sh
per creare una segnalazione di bug.Quindi trasferisci il report in un bucket Cloud Storage in modo da analizzarlo in un secondo momento sul computer locale o inviarlo a NVIDIA. Ad esempio:
gcloud storage cp nvidia-bug-report.log.gz gs://BUCKET
Sostituisci BUCKET con il nome di un bucket a cui hai accesso.
Se bash
non riesce a trovare nessuno di questi comandi NVIDIA, prova ad aggiungere
/usr/local/nvidia/bin
e /usr/local/cuda/bin
al valore PATH
della shell:
export PATH="/usr/local/nvidia/bin:/usr/local/cuda/bin:${PATH}"
Passaggi successivi
- Scopri di più sul servizio AI Platform Training.
- Scopri di più sulla creazione di un corso di formazione applicazione.