Addestramento personalizzato - Guida per principianti

Questa guida per principianti è un'introduzione all'addestramento personalizzato su Vertex AI. L'addestramento personalizzato si riferisce all'addestramento di un modello utilizzando un framework ML come TensorFlow, PyTorch o XGBoost.

Obiettivi di apprendimento

Livello dell'esperienza Vertex AI: principiante

Tempo di lettura stimato: 15 minuti

Argomenti trattati:

  • Vantaggi dell'utilizzo di un servizio gestito per l'addestramento personalizzato
  • Best practice per il confezionamento del codice di addestramento.
  • Come inviare e monitorare un job di addestramento.

Perché utilizzare un servizio di formazione gestito?

Immagina di lavorare a un nuovo problema di ML. Apri un blocco note, importa il tuo dati ed eseguire la sperimentazione. In questo scenario, crei un modello con il framework ML di tua scelta ed esegui le celle del notebook per eseguire un ciclo di addestramento. Al termine dell'addestramento, valuti i risultati del modello, apporti le modifiche per poi eseguire di nuovo l'addestramento. Questo flusso di lavoro è utile per la sperimentazione, ma quando inizi a pensare a come creare applicazioni di produzione con l'ML, potresti scoprire che l'esecuzione manuale delle celle del blocco note l'opzione più comoda.

Ad esempio, se il set di dati e il modello sono di grandi dimensioni, ti consigliamo di provare l'addestramento distribuito. Inoltre, in un ambiente di produzione è improbabile che dovrai addestrare il modello una sola volta. Nel tempo, dovrai addestrare nuovamente il modello per assicurarti che rimanga aggiornato e continui a produrre risultati utili. Quando vuoi automatizzare la sperimentazione su larga scala o addestrare nuovamente i modelli per un'applicazione di produzione, l'utilizzo di un servizio di addestramento ML gestito semplifica le tue flussi di lavoro.

Questa guida fornisce un'introduzione all'addestramento di modelli personalizzati Vertex AI. Poiché il servizio di addestramento è completamente gestito, Vertex AI esegue automaticamente il provisioning delle risorse di computing, nonché l'eliminazione delle risorse di calcolo una volta che il job di addestramento l'operazione. Tieni presente che esistono personalizzazioni, funzionalità e modi di interfacciarsi con il servizio aggiuntivi che non sono trattati qui. Questa guida ha lo scopo di fornire una panoramica. Per maggiori dettagli, consulta la documentazione di Vertex AI Training.

Panoramica dell'addestramento personalizzato

L'addestramento di modelli personalizzati su Vertex AI segue questo flusso di lavoro standard:

  1. Esegui il packaging del codice dell'applicazione di addestramento.

  2. Configura e invia il job di addestramento personalizzato.

  3. Monitora il job di addestramento personalizzato.

Codice dell'applicazione di addestramento per la pacchettizzazione

L'esecuzione di un job di addestramento personalizzato su Vertex AI viene eseguita con i container. I container sono pacchetti del codice dell'applicazione, in questo caso del codice di addestramento, insieme a dipendenze come versioni specifiche di librerie necessarie per eseguire il codice. Oltre ad aiutare con la gestione delle dipendenze, i container possono essere eseguiti praticamente ovunque, consentendo una maggiore portabilità. Pacchettizzazione del codice di addestramento con i relativi parametri e dipendenze in un container per creare un componente portabile è un passaggio importante e trasferire le tue applicazioni ML dalla prototipazione alla produzione.

Prima di poter avviare un job di addestramento personalizzato, devi pacchettizzare l'applicazione di addestramento. In questo caso, l'applicazione di addestramento si riferisce a un file o a più file che eseguono attività come il caricamento dei dati, il pretrattamento dei dati, la definizione di un modello ed esecuzione di un ciclo di addestramento. Vertex AI di addestramento esegue il codice da te fornito, quindi quali passaggi includi nella tua candidatura per la formazione.

Vertex AI fornisce container predefiniti per TensorFlow, PyTorch, XGBoost e Scikit-learn. Questi container vengono aggiornati regolarmente e includono librerie comuni di cui potresti aver bisogno nel tuo di addestramento personalizzato. Puoi scegliere di eseguire il codice di addestramento con uno di questi container o creare un container personalizzato contenente il tuo codice e dipendenze preinstallate.

Esistono tre opzioni per pacchettizzare il codice su Vertex AI:

  1. Invia un singolo file Python.
  2. Creare una distribuzione di origine Python.
  3. Utilizza container personalizzati.

File python

Questa opzione è adatta per esperimenti rapidi. Puoi utilizzare questa opzione se tutto il codice necessario per eseguire l'applicazione di addestramento si trova in un file Python e uno dei container di addestramento Vertex AI predefiniti contiene tutte le librerie necessarie per eseguire l'applicazione. Per un esempio di pacchettizzazione dell'applicazione di addestramento come singolo file Python, consulta il tutorial del notebook Addestramento personalizzato e previsione batch.

Distribuzione di origine Python

Puoi creare un Distribuzione delle origini Python che contiene la tua applicazione di addestramento. Dovrai archiviare la distribuzione di origine con il codice di addestramento e le dipendenze in un bucket Cloud Storage. Per un esempio di pacchettizzazione dell'applicazione di addestramento come distribuzione di codice sorgente Python, guarda il tutorial del blocco note Addestramento, ottimizzazione e deployment di un modello di classificazione PyTorch.

Container personalizzato

Questa opzione è utile se vuoi un maggiore controllo sulla tua applicazione o se vuoi eseguire codice non scritto in Python. In questo caso avrai bisogno per scrivere un Dockerfile, creare la tua immagine personalizzata ed eseguirne il push su Artifact Registry. Per un esempio di containerizzazione dell'applicazione di addestramento, vedi il blocco note Tutorial sulle prestazioni di addestramento del modello di profilo con Profiler.

Se scegli di pacchettizzare il codice come distribuzione di origine Python o come container personalizzato, ti consigliamo di strutturare l'applicazione come che segue:

training-application-dir/
....setup.py
....Dockerfile
trainer/
....task.py
....model.py
....utils.py

Crea una directory per archiviare tutto il codice dell'applicazione di addestramento, in questo caso training-application-dir. Questa directory conterrà un file setup.py se utilizzi una distribuzione di codice sorgente Python o Dockerfile se utilizzi un container personalizzato.

In entrambi gli scenari, questa directory di alto livello conterrà anche una sottodirectorytrainer contenente tutto il codice per eseguire l'addestramento. Entro trainer, task.py è il punto di ingresso principale dell'applicazione. Questo file esegue il modello addestramento. Puoi scegliere di inserire tutto il codice in questo file, ad eccezione di di applicazioni di produzione, potresti avere file aggiuntivi, ad esempio model.py, data.py, utils.py, solo per citarne alcuni.

Eseguire l'addestramento personalizzato

I job di addestramento su Vertex AI eseguono automaticamente il provisioning delle risorse di calcolo, eseguire il codice dell'applicazione di addestramento e garantire l'eliminazione delle risorse di calcolo una volta completato il job di addestramento.

Man mano che crei flussi di lavoro più complessi, è probabile che utilizzerai l'SDK Vertex AI per Python per configurare, inviare e monitorare i job di addestramento. Tuttavia, la prima volta un job di addestramento personalizzato può essere più semplice utilizzare la console Google Cloud.

  1. Vai ad Addestramento nella sezione Vertex AI della console Cloud. Puoi creare un nuovo job di addestramento facendo clic sul pulsante CREA. crea job di addestramento
  2. In Metodo di addestramento del modello, seleziona Addestramento personalizzato (avanzato). specifica il metodo di addestramento
  3. Nella sezione Container di addestramento, seleziona il container predefinito o personalizzato, a seconda di come hai pacchettizzato l'applicazione. specifica container di addestramento
  4. In Computing e prezzi, specifica l'hardware per il job di addestramento. Per l'addestramento con nodo singolo, devi configurare solo il pool di worker 0. Se ti interessa eseguire l'addestramento distribuito, devi conoscere gli altri pool di worker e puoi scoprire di più sull'addestramento distribuito.

computing per l'addestramento

La configurazione del contenitore di previsione è facoltativa. Se vuoi solo addestrare un modello su Vertex AI e accedere agli elementi del modello salvati risultanti, puoi saltare questo passaggio. Se vuoi ospitare ed eseguire il deployment del modello risultante servizio di previsione gestito di Vertex AI, dovrai configurare container di previsione. Scopri di più sui contenitori di previsione qui.

Monitoraggio dei job di addestramento

Puoi monitorare il job di addestramento nella console Google Cloud. Vedrai un elenco di tutti i job eseguiti. Puoi fare clic su una determinata offerta di lavoro nei log in caso di problemi.

dashboard di addestramento

Notebooks

Video