Panoramica della formazione

Utilizza AI Platform Training per eseguire le tue applicazioni di addestramento TensorFlow, scikit-learn e XGBoost nel cloud. AI Platform Training fornisce le dipendenze necessarie per addestrare i modelli di machine learning utilizzando questi framework ospitati nelle sue versioni di runtime. Inoltre, puoi utilizzare container personalizzati per eseguire job di addestramento con altri framework di machine learning. Questa pagina descrive i concetti chiave di AI Platform Training. Se preferisci passare direttamente alla procedura di addestramento, scopri come avviare un job di addestramento.

Come funziona la formazione

AI Platform Training esegue il job di addestramento sulle risorse di calcolo nel cloud. Puoi addestrare un algoritmo integrato (beta) sul tuo set di dati senza scrivere un'applicazione di addestramento. Se gli algoritmi integrati non sono adatti al tuo caso d'uso, puoi creare un'applicazione di addestramento da eseguire su AI Platform Training.

Ecco una panoramica della procedura per utilizzare l'applicazione di addestramento:

  1. Creando un'applicazione Python che addestra il modello, lo compilerai come faresti per eseguirlo localmente nel tuo ambiente di sviluppo.
  2. Inserisci i dati di addestramento e verifica in un'origine a cui può accedere AI Platform Training. In genere, significa inserirli in Cloud Storage, Bigtable o in un altro servizio di archiviazione Google Cloud associato allo stesso progetto Google Cloud che utilizzi per AI Platform Training.
  3. Quando l'applicazione è pronta per essere eseguita, devi pacchettizzarla e trasferirla in un bucket Cloud Storage a cui il tuo progetto può accedere. Questa operazione viene eseguita automaticamente quando utilizzi Google Cloud CLI per eseguire un job di addestramento.
  4. Il servizio di addestramento AI Platform Training configura le risorse per il tuo job. Alloca una o più macchine virtuali (chiamate istanze di addestramento) in base alla configurazione del job. Ogni istanza di addestramento viene configurata da:
    • Applicazione dell'immagine macchina standard per la versione di AI Platform Training utilizzata dal job.
    • Carica il pacchetto dell'applicazione e installalo con pip.
    • Installazione di eventuali pacchetti aggiuntivi specificati come dipendenze.
  5. Il servizio di addestramento esegue l'applicazione, passando tutti gli argomenti della riga di comando specificati quando crei il job di addestramento.
  6. Puoi ottenere informazioni sul job in esecuzione nei seguenti modi:
    • In Cloud Logging.
    • Richiedendo i dettagli del job o eseguendo lo streaming dei log con lo strumento a riga di comando gcloud.
    • Inviando richieste di stato al servizio di addestramento in modo programmatico.
  7. Quando il job di addestramento va a buon fine o rileva un errore non recuperabile, AI Platform Training interrompe tutte le relative procedure e ripulisce le risorse.

Una tipica applicazione di machine learning

Il servizio di addestramento di AI Platform è progettato per avere il minor impatto possibile sulla tua applicazione. Ciò significa che puoi concentrarti sul codice del modello.

La maggior parte delle applicazioni di machine learning:

  • Fornisci un modo per ottenere dati di addestramento e dati di valutazione.
  • Elabora le istanze di dati.
  • Utilizza i dati di valutazione per verificare l'accuratezza del modello (la frequenza con cui prevede il valore corretto).
  • (Per le applicazioni di addestramento di TensorFlow) Fornisci un modo per generare checkpoint a intervalli durante il processo per ottenere uno snapshot dell'avanzamento del modello.
  • Fornisci un modo per esportare il modello addestrato al termine dell'applicazione.

Struttura dell'addestramento distribuito

Se esegui un job di TensorFlow distribuito con AI Platform Training, specifica più macchine (nodi) in un cluster di addestramento. Il servizio di addestramento alloca le risorse per i tipi di macchine specificati. Il job in esecuzione su un determinato nodo è chiamato replica. In conformità con il modello TensorFlow distribuito, a ogni replica nel cluster di addestramento viene assegnato un singolo ruolo o un'unica attività nell'addestramento distribuito:

  • Master: esattamente una replica è designata come worker master. Questa attività gestisce le altre e segnala lo stato del job nel suo complesso. Il servizio di addestramento viene eseguito finché il job non va a buon fine o non viene rilevato un errore irrecuperabile. Nell'addestramento distribuito, lo stato della replica principale indica lo stato complessivo del job.

    Se stai eseguendo un job a processo singolo, l'unica replica è la principale per il job.

  • Worker: una o più repliche possono essere designate come worker. Queste repliche svolgono la propria parte di lavoro come indicato nella configurazione del job.

  • Server dei parametri: una o più repliche possono essere designate come server dei parametri. Queste repliche coordinano lo stato del modello condiviso tra i worker.

Strategie di addestramento distribuito

Esistono tre strategie di base per addestrare un modello con più nodi:

  • Addestramento parallelo dei dati con aggiornamenti sincroni.
  • Addestramento parallelo dei dati con aggiornamenti asincroni.
  • Addestramento parallelo dei modelli.

Poiché puoi utilizzare la strategia di parallelismo dei dati indipendentemente dalla struttura del modello, è un buon punto di partenza per applicare il metodo di addestramento distribuito al tuo modello personalizzato. Nell'addestramento in parallelo con i dati, l'intero modello viene condiviso con tutti i nodi worker. Ogni nodo calcola i vettori di gradiente indipendentemente da una parte del set di dati di addestramento nello stesso modo dell'elaborazione in mini-batch. I vettori di gradiente calcolati vengono raccolti nel node del server dei parametri e i parametri del modello vengono aggiornati con la somma totale degli stessi. Se distribuisci 10.000 batch tra 10 nodi worker, ogni nodo lavora su circa 1000 batch.

L'addestramento parallelo ai dati può essere eseguito con aggiornamenti sincroni o asincroni. Quando utilizzi gli aggiornamenti asincroni, il server dei parametri applica ogni vettore del gradiente in modo indipendente, subito dopo averlo ricevuto da uno dei nodi worker, come mostrato nel seguente diagramma:

diagramma dell'addestramento parallelo dei dati con aggiornamenti asincroni

Per scoprire come eseguire l'addestramento distribuito parallelo ai dati, consulta la documentazione su MultiWorkerMirroredStrategy e ParameterServerStrategy di TensorFlow. Poi scopri come configurare l'addestramento distribuito in AI Platform Training.

Per scoprire di più sull'addestramento parallelo dei modelli, consulta la pagina su Mesh TensorFlow.

Pacchettizzazione dell'applicazione

Prima di poter eseguire l'applicazione di addestramento su AI Platform Training, devi pacchettizzare l'applicazione e le relative dipendenze. Quindi devi caricare il pacchetto in un bucket Cloud Storage al quale può accedere il tuo progetto Google Cloud.

Google Cloud CLI automatizza gran parte del processo. Nello specifico, puoi utilizzare gcloud ai-platform jobs submit training per caricare il pacchetto dell'applicazione e inviare il job di addestramento.

Consulta le istruzioni dettagliate su come eseguire il packaging di un'applicazione di formazione.

Invio del job di addestramento

L'AI Platform Training fornisce l'addestramento dei modelli come servizio asincrono (batch). Puoi inviare un job di addestramento eseguendo gcloud ai-platform jobs submit training da riga di comando o inviando una richiesta all'API all'indirizzo projects.jobs.create.

Consulta le istruzioni dettagliate su come avviare un job di addestramento.

ID job

Devi assegnare al job di addestramento un nome che rispetti queste regole:

  • Deve essere univoco all'interno del progetto Google Cloud.
  • Può contenere solo lettere maiuscole e minuscole, cifre e trattini bassi.
  • Deve iniziare con una lettera.
  • Non deve contenere più di 128 caratteri.

Puoi utilizzare la convenzione di denominazione dei job che preferisci. Se non esegui molti job, il nome scelto potrebbe non essere molto importante. Se esegui molti job, potresti dover trovare l'ID job in elenchi di grandi dimensioni. È buona norma rendere gli ID job facili da distinguere tra loro.

Una tecnica comune è definire un nome base per tutti i job associati a un determinato modello e poi aggiungere una stringa di data/ora. Questa convenzione semplifica l'ordinamento degli elenchi di job per nome, perché tutti i job per un modello vengono raggruppati in ordine crescente.

Livelli di scalabilità

Quando esegui un job di addestramento su AI Platform Training, devi specificare il numero e i tipi di macchine di cui hai bisogno. Per semplificare la procedura, puoi scegliere tra un insieme di specifiche predefinite per i cluster chiamate livelli di scalabilità. In alternativa, puoi scegliere un livello personalizzato e specificare autonomamente i tipi di macchine.

Per specificare un livello di scala, aggiungilo all'oggetto TrainingInput nella configurazione del job. Se utilizzi il comando gcloud per inviare il tuo job di addestramento, puoi utilizzare gli stessi identificatori.

Consulta le definizioni dettagliate dei livelli di scalabilità e dei tipi di macchine.

Ottimizzazione degli iperparametri

Se vuoi utilizzare l'ottimizzazione degli iperparametri, devi includere i dettagli della configurazione quando crei il job di addestramento. Consulta una guida concettuale all'ottimizzazione degli iperparametri e come utilizzare l'ottimizzazione degli iperparametri.

Aree geografiche e zone

Google Cloud utilizza regioni suddivise in zone per definire la posizione geografica delle risorse di calcolo fisiche. Quando esegui un job di addestramento su AI Platform Training, devi specificare la regione in cui vuoi che venga eseguito.

Se archivi il set di dati di addestramento su Cloud Storage, devi eseguire il job di addestramento nella stessa regione del bucket Cloud Storage che utilizzi per i dati di addestramento. Se devi eseguire il job in una regione diversa da quella del bucket di dati, l'operazione potrebbe richiedere più tempo.

Per visualizzare le regioni disponibili per i servizi di AI Platform Training, tra cui l'addestramento dei modelli e la previsione online/collettiva, consulta la guida alle regioni.

Utilizzo di job-dir come directory di output comune

Puoi specificare la directory di output per il job impostando una directory del job quando configuri il job. Quando invii il job, AI Platform Training svolge le seguenti operazioni:

  • Convalida la directory in modo da poter correggere eventuali problemi prima dell'esecuzione del job.
  • Passa il percorso dell'applicazione come argomento della riga di comando chiamato --job-dir.

Devi tenere conto dell'argomento --job-dir nella tua applicazione. Acquisisci il valore dell'argomento quando analizzi gli altri parametri e utilizzalo quando salvi l'output dell'applicazione. Consulta la guida su come avviare un job di addestramento.

Versione runtime

Per eseguire l'addestramento con uno dei framework di machine learning ospitati di AI Platform Training, specifica una versione di runtime di AI Platform Training supportata da utilizzare per il job di addestramento. La versione del runtime determina le versioni di TensorFlow, scikit-learn, XGBoost e altri pacchetti Python installati sulle istanze di addestramento allocate. Specifica una versione che offra le funzionalità di cui hai bisogno. Se esegui il job di addestramento sia localmente che nel cloud, assicurati che i job locali e cloud utilizzino la stessa versione di runtime.

Dati di input

I dati che puoi utilizzare nel job di addestramento devono rispettare le seguenti regole per poter essere eseguiti su AI Platform Training:

  • I dati devono essere in un formato che puoi leggere e inviare al codice di addestramento.
  • I dati devono trovarsi in una posizione a cui il codice può accedere. In genere, significa che devono essere archiviati in uno dei servizi di archiviazione o di big data di Google Cloud.

Dati di output

È normale che le applicazioni generino dati di output, inclusi i checkpoint durante l'addestramento e un modello salvato al termine dell'addestramento. Puoi generare altri dati in base alle esigenze della tua applicazione. È più facile salvare i file di output in un bucket Cloud Storage nello stesso progetto Google Cloud del job di addestramento.

Creazione di job di addestramento resilienti ai riavvii delle VM

Le VM Google Cloud si riavviano di tanto in tanto. Per assicurarti che il job di addestramento sia resiliente a questi riavvii, salva regolarmente i checkpoint del modello e configura il job in modo da ripristinare il checkpoint più recente.

Di solito, salvi i checkpoint del modello nel percorso Cloud Storage specificato con l'argomento --job-dir nel comando gcloud ai-platform jobs submit training.

L'API TensorFlow Estimator implementa la funzionalità di checkpoint per te. Se il modello è racchiuso in un estimatore, non devi preoccuparti degli eventi di riavvio sulle VM.

Se non riesci a racchiudere il modello in un estimatore TensorFlow, scrivi una funzionalità per memorizzare e ripristinare i checkpoint nel codice di addestramento. TensorFlow fornisce le seguenti risorse utili nel modulo tf.train:

Addestramento con GPU

Puoi eseguire i tuoi job di addestramento su AI Platform Training con unità di elaborazione grafica (GPU). Le GPU sono progettate per eseguire operazioni matematicamente intensive ad alta velocità. Possono essere più efficaci nell'esecuzione di determinate operazioni sui dati tensori rispetto all'aggiunta di un'altra macchina con uno o più core della CPU.

Il servizio di addestramento AI Platform Training non fornisce alcuna riga di comando speciale per l'utilizzo delle GPU. Puoi specificare macchine con GPU per eseguire il tuo job e il servizio le alloca per te. Ad esempio, in un job di addestramento di TensorFlow puoi assegnare operazioni TensorFlow alle GPU nel codice. Quando specifichi un tipo di macchina con accesso alla GPU per un tipo di attività, ogni istanza assegnata a quel tipo di attività viene configurata in modo identico (come sempre): il servizio esegue una singola replica del codice su ogni macchina.

Se stai eseguendo l'addestramento con un framework di machine learning diverso utilizzando un container personalizzato, questo framework potrebbe fornire un'interfaccia diversa per lavorare con le GPU.

Alcuni modelli non traggono vantaggio dall'esecuzione su GPU. Consigliamo le GPU per modelli di grandi dimensioni e complessi che prevedono molte operazioni matematiche. Anche in questo caso, ti consigliamo di testare il vantaggio del supporto GPU eseguendo un piccolo addestramento su un campione di dati.

Scopri come utilizzare le GPU per il job di addestramento.

Addestramento con TPU

Puoi eseguire i tuoi job di addestramento su AI Platform Training con Cloud TPU.

Scopri come utilizzare le TPU per il tuo job di addestramento.

Passaggi successivi