Prepararsi agli eventi di manutenzione
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 a una VM Compute Engine, pertanto l'utilizzo di più TPU (ad esempio in un pod di TPU) aumenta la probabilità che una delle tue VM riscontri un evento di manutenzione.
Questo documento illustra gli approcci per gestire gli eventi di manutenzione per i job di addestramento di lunga durata su Cloud TPU. Per informazioni sulla gestione degli eventi di manutenzione per le TPU in Google Kubernetes Engine (GKE), consulta Gestire l'interruzione del nodo GKE per GPU e TPU.
Visualizzare le notifiche relative alla manutenzione imminente
Puoi visualizzare le notifiche per gli eventi di manutenzione dell'host imminenti. Monitorando le finestre di manutenzione imminenti della tua istanza, puoi preparare proattivamente i tuoi workload per gestire la manutenzione imminente con interruzioni minime. Per ulteriori informazioni, consulta Visualizzare le notifiche relative alla manutenzione.
Utilizzare i checkpoint per un rapido recupero dagli eventi di manutenzione
I checkpoint sono fondamentali per i rapidi ripristini dagli eventi di manutenzione e devono essere salvati di frequente. Una buona regola generale è salvare i checkpoint ogni circa un'ora. Se non esegui il checkpoint abbastanza spesso, rischi di perdere molto del progresso dell'allenamento a causa di eventi di manutenzione o altre interruzioni dell'allenamento.
.In genere, i checkpoint fanno riferimento a tutti i parametri salvati utilizzati nell'addestramento, come i pesi del modello. Il tempo necessario per salvare un checkpoint può variare da alcuni secondi a alcuni minuti.
Sebbene le TPU possano recuperare automaticamente dalla maggior parte degli eventi di manutenzione e i job di addestramento continuino senza intervento manuale, potrebbero verificarsi casi limite in cui il job non si riavvia e non 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.
Esistono diversi meccanismi per salvare e caricare i checkpoint per ogni framework ML. In genere, i modelli Cloud TPU supportati hanno il checkpointing integrato. Per ulteriori informazioni sul checkpointing, consulta TensorFlow 2.x, PyTorch o JAX/flax.
Utilizzare il checkpoint automatico
Puoi utilizzare la funzionalità Punto di controllo automatico per preservare i progressi dell'addestramento configurando il codice in modo da salvare un punto di controllo non pianificato quando si verifica un evento di manutenzione. Per ulteriori informazioni su Autocheckpoint, consulta Autocheckpoint di Cloud TPU.
Riprovare a eseguire lo 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. Ad esempio:
while ! gcloud compute tpus tpu-vm ssh ${TPU_NAME} --command "python3 TRAINING_COMMAND"; do sleep 1; done
Ogni nuovo tentativo deve continuare dall'ultimo check point, quindi devi sempre utilizzare gli script di ripetizione insieme ai checkpoint.
Le pipeline di addestramento pronte per la produzione devono utilizzare un sistema di gestione delle risorse come Google Kubernetes Engine (GKE). Per ulteriori informazioni sull'utilizzo di Google Kubernetes Engine con le VM TPU, consulta Eseguire il deployment dei workload TPU.
Rileva e recupera 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. Per un esempio di uno script di recupero, consulta retry.sh. Se il processo di esecuzione dello script di addestramento si arresta in modo anomalo, puoi modificare lo script di recupero per riprovare a eseguire lo script di addestramento.
Per informazioni sull'eliminazione e sulla ricreazione manuale di una TPU, consulta Gestire le risorse TPU.
Utilizzare la pianificazione delle raccolte
Cloud TPU ha il concetto di pianificazione delle raccolte, che offre due tipi di raccolte che i clienti possono utilizzare per supportare i carichi di lavoro di addestramento o di pubblicazione e inferenza. Quando utilizzi questa funzionalità per eseguire il deployment delle istanze Cloud TPU, Google Cloud vengono applicati programmi di manutenzione unici che si adattano meglio all'applicazione. Per ogni tipo di raccolta puoi aspettarti i seguenti comportamenti:
Addestramento (valore predefinito): questo tipo di raccolta è utile per i tipici carichi di lavoro di addestramento in cui è necessario un tempo di riposo minimo in tutte le istanze e interruzioni impreviste limitate per ripristinare rapidamente il servizio durante gli eventi di manutenzione. Il tipo di raccolta di addestramento consente la pianificazione e l'esecuzione parallele degli eventi di manutenzione per un gruppo di istanze.
Pubblicazione (disponibile utilizzando
--workload-type=AVAILABILITY_OPTIMIZED
): questo tipo di raccolta è utile per la maggior parte dei carichi di lavoro di pubblicazione o inferenza in cui è necessario un tempo di riposo minimo in un sottoinsieme di istanze (repliche) per garantire la continuità del servizio, anche durante gli eventi di manutenzione. Il tipo di raccolta di pubblicazione prevede la pianificazione e l'esecuzione sfalsate degli eventi di manutenzione per un gruppo di istanze. La specifica di una raccolta di pubblicazione è supportata solo su TPU v6e.
Per ulteriori informazioni sulla pianificazione delle raccolte, consulta Pianificazione delle raccolte.
Rileva gli eventi di manutenzione
Puoi rilevare se e quando si è verificato un evento di manutenzione sulla tua TPU utilizzando il seguente comando gcloud compute tpus tpu-vm
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
Visualizzare i log degli eventi di manutenzione
Puoi visualizzare i log storici degli eventi di manutenzione sulla TPU nei log di controllo dell'evento di sistema.
Nel menu di navigazione della console Google Cloud, vai alla pagina Esplora log:
Utilizza la seguente query di ricerca per visualizzare le TPU che sono state terminate o riavviate:
"tpu.nodes.terminate" OR "tpu.nodes.restart"
I risultati mostrano i log di eventuali interruzioni e riparazioni dei worker TPU nel periodo di tempo selezionato per la ricerca. I log includono:
- La data e l'ora dell'evento
- Il tipo di evento
- Per gli eventi "terminate", il motivo dell'interruzione nel
protoPayload.metadata.terminateReason
Passaggi successivi
- Visualizzare le notifiche relative alla manutenzione
- Avviare manualmente un evento di manutenzione dell'host