Guida per principianti dell'addestramento personalizzato

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 di 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 la creazione di pacchetti del codice di addestramento.
  • Come inviare e monitorare un job di addestramento.

Perché utilizzare un servizio di addestramento gestito?

Immagina di stare lavorando a un nuovo problema di ML. Puoi aprire un blocco note, importare i dati ed eseguire esperimenti. In questo scenario, creerai un modello con il framework ML che preferisci ed eseguirai celle del blocco note per eseguire un loop di addestramento. Al termine dell'addestramento, valuti i risultati del modello, apporti le modifiche e poi esegui nuovamente l'addestramento. Questo flusso di lavoro è utile per la sperimentazione, ma quando inizi a pensare alla creazione di applicazioni di produzione con il machine learning, potresti scoprire che l'esecuzione manuale delle celle del blocco note non è 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 tu debba addestrare il modello una sola volta. Nel corso del tempo riaddestri il modello per assicurarti che sia sempre aggiornato e continui a produrre risultati preziosi. Se vuoi automatizzare la sperimentazione su larga scala o riaddestrare i modelli per un'applicazione di produzione, l'utilizzo di un servizio di addestramento ML gestito semplificherà i tuoi flussi di lavoro.

Questa guida fornisce un'introduzione all'addestramento di modelli personalizzati su Vertex AI. Poiché il servizio di addestramento è completamente gestito, Vertex AI esegue automaticamente il provisioning delle risorse di calcolo, esegue l'attività di addestramento e garantisce l'eliminazione delle risorse di calcolo al termine del job di addestramento. Tieni presente che ci sono ulteriori personalizzazioni, funzionalità e modi di interfacciarsi con il servizio che non sono trattati qui. Questa guida ha lo scopo di fornire una panoramica. Per ulteriori 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. Prepara il codice dell'applicazione di addestramento.

  2. Configura e invia un job di addestramento personalizzato.

  3. Monitora il job di addestramento personalizzato.

Creazione del pacchetto con il codice dell'applicazione di addestramento

L'esecuzione di un job di addestramento personalizzato su Vertex AI avviene tramite i container. I container sono pacchetti del codice dell'applicazione, in questo caso il codice di addestramento, insieme a dipendenze come versioni specifiche delle librerie necessarie per eseguire il codice. Oltre ad agevolare la gestione delle dipendenze, i container sono in grado di funzionare ovunque, consentendo una maggiore portabilità. La pacchettizzazione del codice di addestramento con i relativi parametri e dipendenze in un container per creare un componente portabile è un passaggio importante quando si spostano le applicazioni ML dal protoype alla produzione.

Prima di poter avviare un job di addestramento personalizzato, devi pacchettizzare l'applicazione di addestramento. In questo caso un'applicazione di addestramento si riferisce a uno o più file che eseguono attività come il caricamento e la pre-elaborazione dei dati, la definizione di un modello e l'esecuzione di un loop di addestramento. Il servizio di addestramento Vertex AI esegue qualsiasi codice che fornisci, quindi spetta a te scegliere quali passaggi includere nell'applicazione di addestramento.

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 codice di addestramento. Puoi scegliere di eseguire il codice di addestramento con uno di questi container oppure creare un container personalizzato in cui il codice di addestramento e le dipendenze sono preinstallati.

Esistono tre opzioni per pacchettizzare il codice su Vertex AI:

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

File python

Questa opzione è adatta per una rapida sperimentazione. Puoi utilizzare questa opzione se tutto il codice necessario per eseguire l'applicazione di addestramento è in un unico file Python e uno dei container di addestramento Vertex AI predefiniti ha tutte le librerie necessarie per eseguire l'applicazione. Per un esempio di pacchettizzazione dell'applicazione di addestramento come singolo file Python, consulta il tutorial sul blocco note Addestramento personalizzato e previsione batch.

Distribuzione del codice sorgente Python

Puoi creare una distribuzione di origine Python contenente la tua applicazione di addestramento. La distribuzione di origine verrà archiviata 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, vedi il tutorial sul blocco note Addestramento, ottimizzazione e deployment di un modello di classificazione PyTorch.

Contenitore personalizzato

Questa opzione è utile quando vuoi avere un maggiore controllo sull'applicazione o quando vuoi eseguire codice non scritto in Python. In questo caso dovrai scrivere un Dockerfile, creare la tua immagine personalizzata ed eseguirne il push su Artifact Registry. Per un esempio di containerizzazione della tua applicazione di addestramento, consulta il tutorial sul blocco note Prestazioni di addestramento del modello di profilo utilizzando Profiler.

Se scegli di pacchettizzare il tuo codice come distribuzione di codice sorgente Python o come container personalizzato, ti consigliamo di strutturare l'applicazione come 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 origine Python o un file Dockerfile se utilizzi un container personalizzato.

In entrambi gli scenari, questa directory di alto livello conterrà anche una sottodirectory trainer, contenente tutto il codice per eseguire l'addestramento. In trainer, task.py è il punto di ingresso principale alla tua applicazione. Questo file esegue l'addestramento del modello. Puoi scegliere di inserire tutto il codice in questo file, ma per le applicazioni di produzione è probabile che tu abbia file aggiuntivi, ad esempio model.py, data.py e utils.py, solo per citarne alcuni.

Esecuzione dell'addestramento personalizzato

I job di addestramento su Vertex AI eseguono il provisioning automatico delle risorse di computing, eseguono il codice dell'applicazione di addestramento e garantiscono l'eliminazione delle risorse di computing al termine del job di addestramento.

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

  1. Vai a 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. Nel Metodo di addestramento del modello, seleziona Addestramento personalizzato (avanzato). specifica il metodo di addestramento
  3. Nella sezione Container di addestramento, seleziona un container predefinito o personalizzato, a seconda di come hai pacchettizzato l'applicazione. specifica il container di addestramento
  4. In Calcolo e prezzi, specifica l'hardware per il job di addestramento. Per l'addestramento con nodo singolo, devi solo configurare il pool di worker 0. Se vuoi eseguire l'addestramento distribuito, dovrai conoscere gli altri pool di worker e puoi saperne di più sull'addestramento distribuito.

addestramento

La configurazione del container di previsione è facoltativa. Se vuoi addestrare un modello solo su Vertex AI e accedere agli artefatti del modello salvati risultanti, puoi saltare questo passaggio. Se vuoi ospitare ed eseguire il deployment del modello risultante sul servizio di previsione gestita di Vertex AI, devi configurare un container di previsione. Scopri di più sui container 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 in esecuzione. Puoi fare clic su un determinato job ed esaminare i log se si verifica un problema.

dashboard di addestramento

Notebooks

Video