Un container personalizzato è un'immagine Docker che crei per eseguire l'applicazione di addestramento. Eseguendo il job di addestramento di machine learning (ML) in un container personalizzato, puoi utilizzare framework ML, dipendenze non ML, librerie e programmi binari altrimenti non supportati su Vertex AI.
Come funziona l'addestramento con container
L'applicazione di addestramento, implementata nel framework ML di tua scelta, è il fulcro del processo di addestramento.
Crea un'applicazione che addestra il tuo modello utilizzando il framework ML che preferisci.
Decidi se utilizzare un container personalizzato. Potrebbe esserci un container predefinito che supporta già le tue dipendenze. In caso contrario, devi creare un container personalizzato per il job di addestramento. Nel tuo container personalizzato, preinstalli l'applicazione di addestramento e tutte le sue dipendenze su un'immagine utilizzata per eseguire il job di addestramento.
Archivia i dati di addestramento e verifica in un'origine a cui può accedere Vertex AI. Per semplificare l'autenticazione e ridurre la latenza, archivia i dati in Cloud Storage, Bigtable o in un altro servizio di archiviazione di Google Cloud nello stesso progetto e nella stessa regione che utilizzi per Vertex AI. Scopri di più sui modi in cui Vertex AI può caricare i tuoi dati.
Quando l'applicazione è pronta per essere eseguita, devi creare l'immagine Docker ed eseguirne il push su Artifact Registry o Docker Hub, assicurandoti che Vertex AI possa accedere al tuo registro.
Invia il job di addestramento personalizzato creando un job personalizzato o una pipeline di addestramento personalizzato.
Vertex AI configura le risorse per il tuo job. Alloca una o più macchine virtuali (chiamate istanze di addestramento) in base alla configurazione dei job. Puoi configurare un'istanza di addestramento utilizzando il container personalizzato specificato come parte dell'oggetto
WorkerPoolSpec
quando invii il job di addestramento personalizzato.Vertex AI esegue l'immagine Docker, passando per gli argomenti della riga di comando specificati quando crei il job di addestramento.
Quando il job di addestramento ha esito positivo o riscontra un errore irreversibile, Vertex AI interrompe tutti i processi del job ed esegue la pulizia delle risorse.
Vantaggi dei container personalizzati
I container personalizzati consentono di specificare e preinstallare tutte le dipendenze necessarie per l'applicazione.
- Avvio più rapido. Se utilizzi un container personalizzato con le dipendenze preinstallate, puoi risparmiare il tempo che altrimenti l'applicazione di addestramento richiederebbe per installare le dipendenze all'avvio.
- Utilizza il framework ML che preferisci. Se non riesci a trovare un container predefinito Vertex AI con il framework ML che vuoi utilizzare, puoi creare un container personalizzato con il framework scelto e utilizzarlo per eseguire job su Vertex AI. Ad esempio, puoi utilizzare un container clienti per l'addestramento con PyTorch.
- Supporto esteso per l'addestramento distribuito. Con i container personalizzati, puoi eseguire l'addestramento distribuito con qualsiasi framework ML.
- Usa la versione più recente. Puoi anche usare l'ultima build o la
versione secondaria di un framework ML. Ad esempio, puoi creare
un container personalizzato per l'addestramento con
tf-nightly
.
Ottimizzazione degli iperparametri con container personalizzati
Per eseguire l'ottimizzazione degli iperparametri su Vertex AI, devi specificare le metriche degli obiettivi e decidere se ridurre al minimo o massimizzare ogni metrica. Ad esempio, potresti voler massimizzare l'accuratezza del modello o ridurre al minimo la perdita del modello. Elenca anche gli iperparametri che vuoi ottimizzare, insieme all'intervallo di valori accettabili per ciascun iperparametro. Vertex AI esegue diverse prove dell'applicazione di addestramento, monitorando e regolando gli iperparametri dopo ogni prova. Una volta completato il job di ottimizzazione degli iperparametri, Vertex AI segnala i valori per la configurazione più efficace degli iperparametri e un riepilogo per ogni prova.
Per eseguire l'ottimizzazione degli iperparametri con container personalizzati, devi apportare le seguenti modifiche:
- Nel tuo Dockerfile: installa
cloudml-hypertune
. - Nel tuo codice di addestramento:
- Utilizza
cloudml-hypertune
per segnalare i risultati di ogni prova chiamando la relativa funzione helper,report_hyperparameter_tuning_metric
. - Aggiungi argomenti della riga di comando per ogni iperparametro e gestisci l'analisi degli argomenti con un parser di argomenti come
argparse
.
- Utilizza
Scopri come configurare un job di ottimizzazione degli iperparametri che utilizzi container personalizzati o scopri di più su come funziona l'ottimizzazione degli iperparametri su Vertex AI.
GPU in container personalizzati
Per l'addestramento con GPU, il container personalizzato deve soddisfare alcuni requisiti speciali. Devi creare un'immagine Docker diversa da quella che useresti per l'addestramento con le CPU.
- Preinstalla il toolkit CUDA e cuDNN nell'immagine Docker. Il modo consigliato per creare un container personalizzato con supporto per le GPU è utilizzare l'immagine
nvidia/cuda
come immagine di base per il container personalizzato. L'immagine containernvidia/cuda
ha versioni corrispondenti del toolkit CUDA e di cuDNN preinstallate e ti aiuta a configurare correttamente le variabili di ambiente correlate. - Installa l'applicazione di addestramento, insieme al framework ML richiesto e ad altre dipendenze nell'immagine Docker.
Consulta un Dockerfile di esempio per l'addestramento con GPU.
Passaggi successivi
- Scopri di più su come creare un container personalizzato per il job di addestramento.