Gestire gli eventi di manutenzione con i pod 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 è connessa una VM di Compute Engine. L'utilizzo di più TPU (ad esempio, in un pod di TPU) la probabilità che una delle tue VM si verifichi 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 di checkpoint per un recupero 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. Se non esegui il checkpoint abbastanza spesso, rischi di perdere molto del progresso della formazione a causa di eventi di manutenzione o altre interruzioni della formazione.
I checkpoint in genere si riferiscono a tutti i parametri salvati usati nell'addestramento (come 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 riavvia 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 checkpoint, 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
il seguente comando gcloud describe
:
$ gcloud compute tpus tpu-vm describe tpu-name --zone=zone | grep 'health'
L'output di questo comando mostra lo stato attuale 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 cerca, 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 continuamente allo script di addestramento fino al completamento dell'addestramento. Ogni nuovo tentativo deve continuare dall'ultimo checkpoint, pertanto gli script di nuovo tentativo devono essere sempre utilizzati in combinazione con i 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 ripetere continuamente lo 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 ricrei 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. Consulta Eseguire script di installazione standard per ulteriori informazioni.