Panoramica dei container personalizzati

Un container personalizzato è un'immagine Docker che crei per eseguire la tua applicazione di addestramento. Eseguendo il job di addestramento del machine learning (ML) in un container personalizzato, puoi utilizzare framework ML, dipendenze non ML, librerie e file binari che non sono supportati su Vertex AI.

Come funziona l'addestramento con i container

L'applicazione di addestramento, implementata nel framework ML che preferisci, è il nucleo del processo di addestramento.

  1. Crea un'applicazione che addestra il modello utilizzando il framework ML scelto.

  2. Decidere se utilizzare un contenitore personalizzato. Potrebbe esserci un contenitore precompilato che supporta già le tue dipendenze. In caso contrario, devi creare un container personalizzato per il tuo job di addestramento. Nel tuo container personalizzato, preinstalla l'applicazione di addestramento e tutte le sue dipendenze su un'immagine utilizzata per eseguire il job di addestramento.

  3. Archivia i dati di addestramento e verifica in un'origine a cui Vertex AI può accedere. Per semplificare l'autenticazione e ridurre la latenza, archivia i dati in Cloud Storage, Bigtable o un altro servizio di archiviazione Google Cloud nella stessa regione e nello stesso progetto Google Cloud che utilizzi per Vertex AI. Scopri di più su come Vertex AI può caricare i tuoi dati.

  4. Quando l'applicazione è pronta per essere eseguita, devi creare l'immagine Docker e spingerla in Artifact Registry o Docker Hub, assicurandoti che Vertex AI possa accedere al tuo registry.

  5. Invia il job di addestramento personalizzato creando un job personalizzato o creando una pipeline di addestramento personalizzata.

  6. Vertex AI configura le risorse per il tuo job. Alloca una o più macchine virtuali (chiamate istanze di addestramento) in base alla configurazione del job. Configura un'istanza di addestramento utilizzando il contenitore personalizzato specificato nell'ambito dell'oggetto WorkerPoolSpec quando invii il tuo job di addestramento personalizzato.

  7. Vertex AI esegue l'immagine Docker, passando tutti gli argomenti della riga di comando specificati quando crei il job di addestramento.

  8. Quando il job di addestramento riesce o rileva un errore non recuperabile, Vertex AI interrompe tutte le relative procedure e ripulisce le risorse.

Vantaggi dei container personalizzati

I container personalizzati ti consentono di specificare e preinstallare tutte le dipendenze necessarie per la tua applicazione.

  • Tempo di avvio più rapido. Se utilizzi un contenitore personalizzato con le dipendenze preinstallate, puoi risparmiare il tempo che altrimenti la tua applicazione di addestramento impiegherebbe per installare le dipendenze all'avvio.
  • Utilizza il framework ML che preferisci. Se non riesci a trovare un container Vertex AI predefinito con il framework ML che vuoi usare, puoi creare un container personalizzato con il framework scelto e utilizzarlo per eseguire job su Vertex AI. Ad esempio, puoi utilizzare un contenitore del cliente per l'addestramento con PyTorch.
  • Supporto esteso per l'addestramento distribuito. Con i container personalizzati, puoi eseguire l'addestramento distribuito utilizzando qualsiasi framework ML.
  • Utilizza la versione più recente. Puoi anche utilizzare la build o la versione minore più recente 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, specifica le metriche degli obiettivi, oltre a scegliere se massimizzare o minimizzare ciascuna metrica. Ad esempio, potresti voler massimizzare l'accuratezza del modello o ridurre al minimo la perdita del modello. Elencare anche gli iperparametri che vuoi ottimizzare, insieme all'intervallo di valori accettabili per ciascun iperparametro. Vertex AI esegue più prove dell'applicazione di addestramento, monitorando e modificando gli iperparametri dopo ogni prova. Al termine del job di ottimizzazione degli iperparametri, Vertex AI riporta i valori per la configurazione più efficace degli iperparametri e un riepilogo per ogni prova.

Per eseguire l'ottimizzazione degli iperparametri con i contenitori personalizzati, devi apportare le seguenti modifiche:

  • Nel Dockerfile: installa cloudml-hypertune.
  • Nel codice di addestramento:
    • Utilizza cloudml-hypertune per registrare i risultati di ogni prova chiamando la relativa funzione di supporto, report_hyperparameter_tuning_metric.
    • Aggiungi gli argomenti della riga di comando per ogni iperparametro e gestisci l'analisi sintattica degli argomenti con un analizzatore degli argomenti come argparse.

Scopri come configurare un job di ottimizzazione degli iperparametri che utilizza i container personalizzati o scopri di più su come funziona l'ottimizzazione degli iperparametri su Vertex AI.

GPU in container personalizzati

Per l'addestramento con le GPU, il container personalizzato deve soddisfare alcuni requisiti speciali. Devi creare un'immagine Docker diversa da quella che utilizzeresti per l'addestramento con le CPU.

  • Preinstalla CUDA Toolkit e cuDNN nell'immagine Docker. Il modo consigliato per creare un container personalizzato con il supporto delle GPU è utilizzare l'immagine nvidia/cuda come immagine di base per il container personalizzato. L'immagine del contenitore nvidia/cuda ha preinstallato le versioni corrispondenti di CUDA Toolkit e cuDNN 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 esempio di Dockerfile per l'addestramento con GPU.

Passaggi successivi