Gestire gli eventi di manutenzione con i pod di Cloud TPU

Panoramica

Le VM TPU sono istanze di VM Compute Engine con dell'hardware TPU collegato. Le VM di Compute Engine sono soggette Eventi di manutenzione delle VM di Compute Engine. Ogni TPU è connessa a una VM di Compute Engine, quindi l'utilizzo di più TPU (ad esempio in un pod di TPU) aumenta la probabilità che una delle VM 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 di frequente: 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.

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 i dati errori di ripristino, consulta Rilevamento e ripristino da errori di TPU.

I meccanismi utilizzati per salvare e caricare i checkpoint sono diversi per ogni ML il modello di machine learning. I modelli di Cloud TPU supportati in genere hanno il controllo 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 questo comando gcloud describe:

$ gcloud compute tpus tpu-vm describe tpu-name --zone=zone  | grep 'health'

L'output di questo comando visualizza lo stato attuale della TPU una descrizione dell'evento di manutenzione più recente. L'output dovrebbe avere il seguente aspetto:

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"

Durante il periodo di ricerca, eventuali interruzioni e riparazioni dei worker TPU vengono visualizzati. 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.

  1. Salvare periodicamente i checkpoint

    Nello scenario ideale, quando un "evento di interruzione" ciò che accade, l'addestramento dell'addestramento dal checkpoint più recente.

  2. 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, quindi 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 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
    
  3. Rilevamento e ripristino da errori di TPU

    Quando una TPU non si recupera a seguito di un evento di manutenzione, puoi utilizzare un prompt per rilevare lo stato della TPU ed eliminare e ricreare la TPU. Esempio di questo script sono disponibili qui. Consulta la sezione Gestione delle TPU per maggiori dettagli su l'eliminazione e la nuova creazione 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 Viene creata una VM TPU. Consulta Eseguire script di installazione standard per ulteriori informazioni.