Gestire gli eventi di manutenzione con i pod di Cloud TPU
Panoramica
Le VM TPU sono istanze di VM Compute Engine con hardware TPU collegato. Le VM di Compute Engine sono soggette a eventi di manutenzione delle VM di Compute Engine. Ogni TPU è collegata a una VM Compute Engine, quindi l'utilizzo di più TPU (ad esempio in un pod TPU) aumenta la probabilità che una delle tue VM riscontri un evento di manutenzione.
Questo documento illustra i vari approcci per gestire gli eventi di manutenzione. per job di addestramento a lunga esecuzione sulle Cloud TPU.
Utilizzo dei checkpoint per il ripristino rapido dagli eventi di manutenzione
I punti di controllo sono fondamentali per brevi recuperi dagli eventi di manutenzione e deve essere salvato spesso: una buona regola pratica è salvare i checkpoint all'ora circa. Non controllare spesso abbastanza rischi di perdere progressi nell'addestramento dovuti a eventi di manutenzione o interruzioni dell'addestramento.
.In genere, i controlli regolari si riferiscono a tutti i parametri salvati utilizzati nell'addestramento (ad esempio i pesi del modello). Il tempo necessario per risparmiare può variare dall'ordine dei secondi all'ordine dei minuti.
Sebbene la maggior parte degli eventi di manutenzione venga recuperata automaticamente, di addestramento continuano senza intervento manuale, per i casi periferici in cui il job non si riavvia e continua automaticamente. In questo caso, devi eliminare e ricreare le risorse TPU, e riavviare il job di addestramento da un checkpoint salvato. Per informazioni su come rilevare e recuperare da errori di recupero automatico, consulta Rilevare e recuperare da errori TPU.
I meccanismi utilizzati per salvare e caricare i checkpoint sono diversi per ogni ML il modello di machine learning. I modelli Cloud TPU supportati hanno generalmente il checkpointing integrato. Per ulteriori informazioni sul checkpointing, consulta TensorFlow 2.x, PyTorch o JAX/flax.
Rilevamento degli eventi di manutenzione
Puoi rilevare se e quando si verifica un evento di manutenzione sulla tua TPU utilizzando
questo comando gcloud describe
:
$ gcloud compute tpus tpu-vm describe tpu-name --zone=zone | grep 'health'
L'output di questo comando mostra lo stato corrente della TPU e una descrizione dell'evento di manutenzione più recente. L'output dovrebbe essere simile al seguente:
health: HEALTHY healthDescription: The TPU had a maintenance event at 2022-01-26T03:44:36.265703305Z
Log degli eventi di manutenzione
Puoi visualizzare i log storici degli eventi di manutenzione sulla tua TPU nei log di controllo degli eventi di sistema.
Nel menu di navigazione della console Google Cloud, fai clic su Compute Engine > Istanze VM e ricerca, ad esempio:
"tpu.nodes.terminate" OR "tpu.nodes.restart"
Nel periodo di tempo selezionato, vengono visualizzate eventuali interruzioni e riparazioni dei tuoi worker TPU. I log mostreranno la data e l'ora dell'evento, il tipo
e per "terminare" eventi, il motivo della chiusura in
protoPayload.metadata.terminateReason
.
Gestire gli eventi di manutenzione
Esistono diversi modi per mitigare le interruzioni degli eventi di manutenzione.
Salvare periodicamente i checkpoint
Nello scenario ideale, quando si verifica un "evento di interruzione", la formazione riprende dall'ultimo checkpoint.
Nuovi tentativi dello script di addestramento
Lo script di addestramento potrebbe interrompersi a causa di un "evento di interruzione". Puoi utilizzare uno script
bash
per riprovare a eseguire lo script di addestramento fino al termine dell'addestramento. Ogni nuovo tentativo dovrebbe continuare dall'ultima punto di controllo, perciò gli script per nuovi tentativi devono essere sempre usati con checkpoint.Le pipeline di addestramento pronte per la produzione devono utilizzare un sistema di gestione delle risorse ad esempio Google Kubernetes Engine (GKE). Per ulteriori informazioni sull'utilizzo di Google Kubernetes Engine con le VM TPU, consulta Eseguire il deployment dei carichi di lavoro TPU. Puoi implementare uno script
bash
per riprovare a eseguire l'operazione script di addestramento fino al completamento. Ad esempio:while ! gcloud compute tpus tpu-vm ssh ${TPU_NAME} --command "python3 [training command]"; do sleep 1; done
Rilevare e recuperare da guasti delle TPU
Quando una TPU non si riprende da un evento di manutenzione, puoi utilizzare uno script di recupero per rilevare lo stato della TPU ed eliminarla e ricrearla. Un esempio di questo script è disponibile qui. Consulta la sezione Gestione delle TPU per maggiori dettagli su l'eliminazione e la ricreazione manuale delle TPU.
Quando crei o crei di nuovo una VM TPU, puoi specificare uno script di avvio con il parametro
--metadata startup-script
. Uno script di avvio viene eseguito ogni volta che viene creata una VM TPU. Per ulteriori informazioni, consulta Eseguire script di installazione standard.