Panoramica dell'addestramento personalizzato

Vertex AI fornisce un servizio di addestramento gestito che consente di rendere operativo l'addestramento di modelli su larga scala. Puoi usare Vertex AI per eseguire applicazioni di addestramento basate su qualsiasi framework di machine learning (ML) nell'infrastruttura di Google Cloud. Per i seguenti framework ML popolari, Vertex AI dispone anche di supporto integrato che semplifica il processo di preparazione per l'addestramento e la pubblicazione del modello:

Questa pagina illustra i vantaggi dell'addestramento personalizzato su Vertex AI, il flusso di lavoro previsto e le varie opzioni di addestramento disponibili.

Vertex AI rende operativa l'addestramento su larga scala

L'operatività dell'addestramento del modello presenta diverse sfide. Queste sfide includono il tempo e i costi necessari per l'addestramento dei modelli, la profondità delle competenze richieste per gestire l'infrastruttura di computing e la necessità di fornire una sicurezza di livello aziendale. Vertex AI affronta queste sfide e offre una serie di altri vantaggi.

Infrastruttura di computing completamente gestita

Infrastruttura gestita

L'addestramento di modelli su Vertex AI è un servizio completamente gestito che non richiede l'amministrazione dell'infrastruttura fisica. Puoi addestrare modelli ML senza dover eseguire il provisioning o gestire i server. Paghi solo per le risorse di computing utilizzate. Vertex AI gestisce anche il logging, la coda e il monitoraggio dei job.

Prestazioni elevate

Prestazioni elevate

I job di addestramento di Vertex AI sono ottimizzati per l'addestramento di modelli ML, offrendo prestazioni più rapide rispetto all'esecuzione diretta della tua applicazione di addestramento su un cluster GKE. Puoi anche identificare ed eseguire il debug dei colli di bottiglia delle prestazioni nel job di addestramento utilizzando Vertex AI TensorBoard Profiler.

Addestramento distribuito

Addestramento distribuito

Reduction Server è un algoritmo completamente ridotto di Vertex AI che può aumentare la velocità effettiva e ridurre la latenza dell'addestramento distribuito multi-nodo su GPU NVIDIA. Questa ottimizzazione consente di ridurre i tempi e i costi del completamento di job di addestramento di grandi dimensioni.

Ottimizzazione degli iperparametri

Ottimizzazione degli iperparametri

I job di ottimizzazione degli iperparametri eseguono più prove della tua applicazione di addestramento utilizzando diversi valori degli iperparametri. Tu specifichi un intervallo di valori da testare e Vertex AI scopre i valori ottimali per il tuo modello all'interno di quell'intervallo.

Sicurezza aziendale

Sicurezza aziendale

Vertex AI offre le seguenti funzionalità di sicurezza aziendale:

Integrazioni delle operazioni ML (MLOps)

MLOps

Vertex AI fornisce una suite di strumenti MLOps integrati e funzionalità che puoi utilizzare per i seguenti scopi:

  • Orchestra flussi di lavoro ML end-to-end.
  • Eseguire il feature engineering.
  • Esegui esperimenti.
  • Gestisci e ottimizza i tuoi modelli.
  • Tieni traccia dei metadati ML.
  • Monitora e valuta la qualità del modello.

Flusso di lavoro per l'addestramento personalizzato

Il seguente diagramma mostra una panoramica generale del flusso di lavoro di addestramento personalizzato su Vertex AI. Le sezioni seguenti descrivono dettagliatamente ogni passaggio.

Flusso di lavoro dell'addestramento personalizzato.

Caricare e preparare i dati di addestramento

Per ottenere prestazioni e assistenza ottimali, utilizza uno dei seguenti servizi Google Cloud come origine dati:

Puoi anche specificare un set di dati gestito Vertex AI come origine dati quando utilizzi una pipeline di addestramento per addestrare il modello. Addestrare un modello personalizzato e un modello AutoML utilizzando lo stesso set di dati consente di confrontare le prestazioni dei due modelli.

Preparare la richiesta di addestramento

Per preparare l'applicazione di addestramento per l'utilizzo su Vertex AI, segui questi passaggi:

  • Implementare le best practice del codice di addestramento per Vertex AI.
  • Determina un tipo di immagine container da utilizzare.
  • Pacchettizza la tua applicazione di addestramento in un formato supportato in base al tipo di immagine container selezionato.

Implementare le best practice del codice di addestramento

La tua applicazione di addestramento deve implementare le best practice del codice di addestramento per Vertex AI. Queste best practice riguardano la capacità dell'applicazione di addestramento di fare quanto segue:

  • Accedere ai servizi Google Cloud.
  • Carica dati di input.
  • Attiva la registrazione automatica per il monitoraggio dell'esperimento.
  • Esporta gli artefatti del modello.
  • Utilizza le variabili di ambiente di Vertex AI.
  • Assicurati la resilienza ai riavvii delle VM.

Seleziona un tipo di contenitore

Vertex AI esegue la tua applicazione di addestramento in un'immagine container Docker. Un'immagine container Docker è un pacchetto software autonomo che include codice e tutte le dipendenze, in grado di essere eseguito in quasi tutti gli ambienti di computing. Puoi specificare l'URI di un'immagine container predefinita da utilizzare oppure creare e caricare un'immagine container personalizzata in cui l'applicazione e le dipendenze di addestramento sono preinstallate.

La seguente tabella mostra le differenze tra le immagini container predefinite e personalizzate:

Specifiche Immagini container predefinite Immagini container personalizzate
Framework ML Ogni immagine container è specifica per un framework ML. Utilizzare qualsiasi framework ML o non farne uso.
Versione del framework ML Ogni immagine container è specifica per una versione del framework ML. Utilizza qualsiasi versione del framework ML, incluse le versioni secondarie e le build notturne.
Dipendenze delle applicazioni Le dipendenze comuni per il framework ML sono preinstallate. Puoi specificare ulteriori dipendenze da installare nella tua applicazione di addestramento. Preinstalla le dipendenze necessarie per la tua applicazione di addestramento.
Formato di pubblicazione delle applicazioni
  • Distribuzione di origine Python.
  • Singolo file Python.
Preinstalla l'applicazione di addestramento nell'immagine container personalizzata.
Impegno di configurazione Bassa Alta
Consigliati per Applicazioni di addestramento Python basate su un framework ML e una versione del framework con un'immagine container predefinita disponibile.
  • Personalizzazione e controllo maggiori.
  • Applicazioni di addestramento non Python.
  • Dipendenze private o personalizzate.
  • Applicazioni di addestramento che utilizzano un framework ML o una versione del framework in cui non è disponibile un'immagine container predefinita.

Prepara la tua applicazione di addestramento

Dopo aver determinato il tipo di immagine container da utilizzare, pacchettizza l'applicazione di addestramento in uno dei seguenti formati in base al tipo di immagine container:

  • Singolo file Python da utilizzare in un container predefinito

    Scrivi la tua applicazione di addestramento come un singolo file Python e utilizza l'SDK Vertex AI per Python per creare una classe CustomJob o CustomTrainingJob. Il file Python viene pacchettizzato in una distribuzione di origine Python e installato in un'immagine container predefinita. La distribuzione dell'applicazione di addestramento come singolo file Python è adatta per la prototipazione. Per le applicazioni di addestramento di produzione, è probabile che l'applicazione di addestramento sia organizzata in più di un file.

  • Distribuzione del codice sorgente Python per l'utilizzo in un container predefinito

    Pacchettizza la tua applicazione di addestramento in una o più distribuzioni di origine Python e caricale in un bucket Cloud Storage. Vertex AI installa le distribuzioni di origine in un'immagine container predefinita quando crei un job di addestramento.

  • Immagine container personalizzata

    Crea la tua immagine container Docker con l'applicazione e le dipendenze di addestramento preinstallate e caricala su Artifact Registry. Se la tua applicazione di addestramento è scritta in Python, puoi eseguire questi passaggi utilizzando un comando Google Cloud CLI.

Configura job di addestramento

Un job di addestramento Vertex AI esegue le seguenti attività:

  • Esegue il provisioning di una o più macchine virtuali (VM) (addestramento a nodo singolo) o più (addestramento distribuito).
  • Esegue la tua applicazione di addestramento containerizzata sulle VM di cui è stato eseguito il provisioning.
  • Elimina le VM al termine del job di addestramento.

Vertex AI offre tre tipi di job di addestramento per l'esecuzione della tua applicazione di addestramento:

  • Job personalizzato

    Un job personalizzato (CustomJob) esegue la tua applicazione di addestramento. Se utilizzi un'immagine container predefinita, gli artefatti del modello vengono inviati al bucket Cloud Storage specificato. Per le immagini container personalizzate, l'applicazione di addestramento può anche esportare gli artefatti del modello in altre posizioni.

  • Job di ottimizzazione degli iperparametri

    Un job di ottimizzazione degli iperparametri (HyperparameterTuningJob) esegue più prove della tua applicazione di addestramento utilizzando diversi valori degli iperparametri fino a quando non produce gli artefatti del modello con i valori degli iperparametri con prestazioni ottimali. Devi specificare l'intervallo di valori degli iperparametri da testare e le metriche da ottimizzare.

  • pipeline di addestramento

    Una pipeline di addestramento (CustomTrainingJob) esegue un job di ottimizzazione degli iperparametri o di job personalizzati e, facoltativamente, esporta gli artefatti del modello in Vertex AI per creare una risorsa del modello. Puoi specificare un set di dati gestito Vertex AI come origine dati.

Quando crei un job di addestramento, specifica le risorse di computing da utilizzare per eseguire l'applicazione di addestramento e configura le impostazioni del container.

Configurazioni di calcolo

Specifica le risorse di computing da utilizzare per un job di addestramento. Vertex AI supporta l'addestramento a nodo singolo, in cui il job di addestramento viene eseguito su una VM, e l'addestramento distribuito, in cui il job di addestramento viene eseguito su più VM.

Le risorse di computing che puoi specificare per il job di addestramento sono le seguenti:

  • Tipo di macchina VM

    Diversi tipi di macchina offrono CPU, dimensioni di memoria e larghezza di banda differenti.

  • GPU

    Puoi aggiungere una o più GPU alle VM di tipo A2 o N1. Se la tua applicazione di addestramento è progettata per utilizzare GPU, l'aggiunta di GPU può migliorare notevolmente le prestazioni.

  • Tensor Processing Unit (TPU)

    Le TPU sono progettate specificamente per accelerare i carichi di lavoro di machine learning. Quando utilizzi una VM TPU per l'addestramento, puoi specificare un solo pool di worker. Il pool di worker può avere una sola replica.

  • Dischi di avvio

    Per il disco di avvio puoi utilizzare SSD (predefinito) o HDD. Se la tua applicazione di addestramento legge e scrive su disco, l'uso delle unità SSD può migliorare le prestazioni. Puoi anche specificare le dimensioni del disco di avvio in base alla quantità di dati temporanei che l'applicazione di addestramento scrive su disco. I dischi di avvio possono avere tra 100 GiB (valore predefinito) e 64.000 GiB. Tutte le VM in un pool di worker devono usare lo stesso tipo e la stessa dimensione del disco di avvio.

Configurazioni container

Le configurazioni di container da utilizzare dipendono dall'utilizzo di un'immagine container predefinita o personalizzata.

  • Configurazioni di container predefiniti:

    • Specifica l'URI dell'immagine del container predefinita che vuoi utilizzare.
    • Se l'applicazione di addestramento è pacchettizzata come distribuzione di origine Python, specifica l'URI Cloud Storage in cui si trova il pacchetto.
    • Specifica il modulo del punto di ingresso della tua applicazione di formazione.
    • (Facoltativo) Specifica un elenco di argomenti della riga di comando da passare al modulo del punto di ingresso dell'applicazione di addestramento.
  • Configurazioni di container personalizzati:

    • Specifica l'URI della tua immagine container personalizzata, che può essere un URI di Artifact Registry o Docker Hub.
    • Facoltativo: esegui l'override delle istruzioni per ENTRYPOINT o CMD nell'immagine container.

Crea un job di addestramento

Dopo aver preparato l'applicazione di addestramento e per i dati, eseguila creando uno dei seguenti job di addestramento:

Per creare il job di addestramento, puoi utilizzare la console Google Cloud, Google Cloud CLI, l'SDK Vertex AI per Python o l'API Vertex AI.

(Facoltativo) Importa gli artefatti del modello in Vertex AI

L'applicazione di addestramento restituisce probabilmente uno o più artefatti del modello in una località specificata, in genere un bucket Cloud Storage. Prima di poter ottenere previsioni in Vertex AI dagli artefatti dei tuoi modelli, importa gli artefatti del modello in Vertex AI Model Registry.

Analogamente alle immagini container per l'addestramento, Vertex AI offre la possibilità di utilizzare immagini container prebuilt o personalizzate per le previsioni. Se per la tua versione del framework ML e del framework ML è disponibile un'immagine container predefinita per le previsioni, ti consigliamo di utilizzare un'immagine container predefinita.

Passaggi successivi