Prepararsi agli eventi di manutenzione

Le VM TPU sono istanze VM di 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, quindi l'utilizzo di più TPU (ad esempio, in uno slice TPU) aumenta la probabilità che una delle tue VM riscontri un evento di manutenzione.

Questo documento descrive gli approcci per gestire gli eventi di manutenzione per i job di training 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 dei nodi GKE per GPU e TPU.

Visualizzare le notifiche relative alla manutenzione imminente

Puoi visualizzare le notifiche per i prossimi eventi di manutenzione dell'host. Monitorando i periodi di manutenzione imminenti dell'istanza, puoi preparare in modo proattivo i tuoi workload per gestire la manutenzione imminente con interruzioni minime. Per saperne di più, consulta Visualizzare le notifiche di manutenzione.

Utilizzare i checkpoint per un rapido recupero dagli eventi di manutenzione

I checkpoint sono fondamentali per i recuperi rapidi dagli eventi di manutenzione e devono essere salvati di frequente. Una buona regola generale è salvare i checkpoint circa ogni ora. Se non vengono creati checkpoint con la frequenza necessaria, si rischia di perdere gran parte dei progressi di addestramento a causa di eventi di manutenzione o altre interruzioni dell'addestramento.

.

I checkpoint in genere si riferiscono a tutti i parametri salvati utilizzati nell'addestramento, come i pesi del modello. Il tempo necessario per salvare un checkpoint può variare da pochi secondi a qualche minuto.

Sebbene le TPU possano ripristinarsi 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 viene riavviato 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 risolvere gli errori di ripristino automatico, consulta Rilevare e risolvere gli errori della TPU.

Esistono meccanismi diversi per salvare e caricare i checkpoint per ogni framework ML. I modelli Cloud TPU supportati in genere hanno il checkpointing integrato. Per ulteriori informazioni sul checkpointing, consulta TensorFlow 2.x, PyTorch o JAX/flax.

Utilizzare Autocheckpoint

Puoi utilizzare la funzionalità di checkpoint automatico per conservare lo stato di avanzamento dell'addestramento configurando il codice in modo da salvare un checkpoint non pianificato quando si verifica un evento di manutenzione. Per saperne di più su Autocheckpoint, consulta Cloud TPU Autocheckpoint.

Riprovare lo script di addestramento

Lo script di addestramento potrebbe arrestarsi a causa di un evento di interruzione. Puoi utilizzare uno script bash per riprovare continuamente lo script di addestramento finché l'addestramento non è completato. 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 checkpoint, quindi devi sempre utilizzare gli script di ripetizione in combinazione con i 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 Deployment dei workload TPU.

Rilevare e ripristinare gli errori della TPU

Quando una TPU non viene ripristinata dopo un evento di manutenzione, puoi utilizzare uno script di ripristino per rilevare lo stato della TPU ed eliminarla e ricrearla. Per un esempio di script di ripristino, consulta retry.sh. Se il processo che esegue lo script di addestramento si arresta in modo anomalo, puoi modificare lo script di ripristino per riprovare a eseguire lo script di addestramento.

Per informazioni sull'eliminazione e la ricreazione manuale di una TPU, consulta Gestire le risorse TPU.

Utilizzare la pianificazione della raccolta

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 servizio e inferenza. Quando utilizzi questa funzionalità per eseguire il deployment delle istanze Cloud TPU, Google Cloud vengono applicati programmi di manutenzione unici che corrispondono meglio all'applicazione. Puoi aspettarti i seguenti comportamenti da ogni tipo di raccolta:

  • Training (impostazione predefinita): questo tipo di raccolta è utile per i carichi di lavoro di training tipici in cui è necessario un tempo di inattività 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 fornisce la pianificazione e l'esecuzione parallele degli eventi di manutenzione per un gruppo di istanze.

  • Pubblicazione (disponibile tramite --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 inattività minimo in un sottoinsieme di istanze (repliche) per garantire la continuità del servizio, anche durante gli eventi di manutenzione. Il tipo di raccolta serving fornisce la pianificazione e l'esecuzione scaglionate degli eventi di manutenzione per un gruppo di istanze. La specifica di una raccolta di pubblicazione è supportata solo su TPU v6e.

Per saperne di più sulla pianificazione della raccolta, vedi Pianificazione della raccolta delle TPU per i workload di inferenza.

Rileva 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 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

Visualizzare i log degli eventi di manutenzione

Puoi visualizzare i log storici degli eventi di manutenzione sulla tua TPU nei log di controllo Evento di sistema.

  1. Nel menu di navigazione della console Google Cloud , vai alla pagina Esplora log:

    Vai a Esplora log

  2. Utilizza la seguente query di ricerca per visualizzare le TPU terminate o riavviate:

    "tpu.nodes.terminate" OR "tpu.nodes.restart"

    I risultati mostrano i log relativi a eventuali interruzioni e riparazioni dei worker TPU nel periodo di tempo della ricerca. I log includono:

    • La data e l'ora dell'evento
    • Il tipo di evento
    • Per gli eventi "terminate", il motivo della chiusura nel campo protoPayload.metadata.terminateReason

Passaggi successivi