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 iniziare subito il processo di addestramento, scopri come avviare un job di addestramento.

Come funziona l'addestramento

AI Platform Training esegue il tuo 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.

Di seguito è riportata una panoramica della procedura per utilizzare la tua applicazione di formazione:

  1. Crei un'applicazione Python per l'addestramento del modello, poi la crei come faresti per eseguirla localmente nel tuo ambiente di sviluppo.
  2. I dati di addestramento e verifica vengono inviati a un'origine a cui può accedere AI Platform Training. Ciò di solito significa inserirla in Cloud Storage, Bigtable o in un altro servizio di archiviazione di Google Cloud associato allo stesso progetto Google Cloud che utilizzi per AI Platform Training.
  3. Quando l'applicazione è pronta per l'esecuzione, devi pacchettizzarla e trasferirla in un bucket Cloud Storage a cui può accedere il tuo progetto. Questa operazione è automatica quando utilizzi Google Cloud CLI per eseguire un job di addestramento.
  4. Il servizio di formazione di AI Platform Training configura le risorse per il tuo lavoro. Alloca una o più macchine virtuali (chiamate istanze di addestramento) in base alla configurazione del job. Ogni istanza di addestramento è configurata da:
    • Applicazione dell'immagine macchina standard alla versione di AI Platform Training utilizzata dal job.
    • Caricamento del pacchetto dell'applicazione in corso e installazione con pip.
    • Installazione di eventuali pacchetti aggiuntivi specificati come dipendenze.
  5. Il servizio di addestramento esegue l'applicazione, passando per tutti gli argomenti della riga di comando specificati al momento della creazione del job di addestramento.
  6. Puoi ottenere informazioni sul job in esecuzione nei seguenti modi:
    • Su Cloud Logging.
    • Richiedendo i dettagli del job o eseguendo il flusso di log dei log con lo strumento a riga di comando gcloud.
    • Inviando in modo programmatico richieste di stato al servizio di addestramento.
  7. Quando il job di addestramento ha esito positivo o riscontra un errore irreversibile, AI Platform Training interrompe tutti i processi dei job ed elimina le risorse.

Una tipica applicazione di machine learning

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

La maggior parte delle applicazioni di machine learning:

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

Struttura di addestramento distribuito

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

  • Master: esattamente una replica è designata come worker master. Questa attività gestisce le altre e segnala lo stato del lavoro nel suo complesso. Il servizio di addestramento viene eseguito finché il job ha esito positivo o non riesce a rilevare un errore irreversibile. Nell'addestramento distribuito, lo stato della replica master segnala lo stato generale del job.

    Se esegui un job a processo singolo, l'unica replica è il master per il job.

  • Worker: una o più repliche potrebbero essere designate come worker. Queste repliche svolgono la propria parte del lavoro in base a quanto indicato nella configurazione dei job.

  • Server dei parametri: una o più repliche potrebbero 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 con parallelo dei dati con aggiornamenti asincroni.
  • Addestramento parallelo modello.

Poiché puoi utilizzare la strategia con parallelo dati indipendentemente dalla struttura del modello, è un buon punto di partenza per applicare il metodo di addestramento distribuito al tuo modello personalizzato. Nell'addestramento con parallelo dati, l'intero modello viene condiviso con tutti i nodi worker. Ogni nodo calcola i vettori di gradiente in modo indipendente 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 nodo server dei parametri e i parametri del modello vengono aggiornati con la somma totale dei vettori di gradiente. Se distribuisci 10.000 batch su 10 nodi worker, ogni nodo funziona su circa 1000 batch.

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

diagramma dell'addestramento parallelo
dei dati con aggiornamenti asincroni

Per scoprire come eseguire l'addestramento distribuito con parallelo dati, scopri di più 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 TensorFlow mesh.

Pacchettizzazione dell'applicazione

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

Google Cloud CLI automatizza gran parte del processo. In particolare, puoi utilizzare gcloud ai-platform jobs submit training per caricare il pacchetto di candidatura e inviare il job di addestramento.

Consulta le istruzioni dettagliate sulla presentazione di un'applicazione di addestramento.

Invio del job di addestramento in corso...

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

Consulta le istruzioni dettagliate sull'avvio di un job di addestramento.

ID job

Devi assegnare al tuo 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, numeri 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 che scegli potrebbe non essere molto importante. Se esegui molti job, potresti dover trovare l'ID job in elenchi di grandi dimensioni. Fai in modo che gli ID job siano facili distinguibili l'uno dall'altro.

Una tecnica comune è definire un nome di base per tutti i job associati a un determinato modello e quindi aggiungere una stringa data/ora. Questa convenzione semplifica l'ordinamento degli elenchi di job per nome, poiché tutti i job di 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 che ti servono. Per semplificare il processo, puoi scegliere tra un insieme di specifiche del cluster predefinite denominate livelli di scalabilità. In alternativa, puoi scegliere un livello personalizzato e specificare manualmente i tipi di macchine.

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

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

Ottimizzazione degli iperparametri

Se vuoi utilizzare l'ottimizzazione degli iperparametri, devi includere i dettagli di 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 le regioni, suddivise in zone, per definire la posizione geografica delle risorse di calcolo fisiche. Quando esegui un job di addestramento su AI Platform Training, specifichi la regione in cui deve essere eseguito.

Se archivi il tuo 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 dal bucket di dati, il job potrebbe richiedere più tempo.

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

Utilizzo di job-dir come directory di output comune

Puoi specificare la directory di output del job impostandone una durante la configurazione. Quando invii il job, AI Platform Training fa quanto segue:

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

Devi tenere conto dell'argomento --job-dir nell'applicazione. Acquisisci il valore dell'argomento quando analizzi gli altri parametri e utilizzalo per salvare l'output dell'applicazione. Consulta la guida per l'avvio di 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 tuo job di addestramento. La versione di runtime specifica le versioni di TensorFlow, scikit-learn, XGBoost e altri pacchetti Python installati nelle istanze di addestramento allocate. Specifica una versione che ti fornisca le funzionalità necessarie. Se esegui il job di addestramento in locale e 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 essere eseguiti su AI Platform Training:

  • I dati devono essere in un formato che può essere letto e inviato al tuo codice di addestramento.
  • I dati devono trovarsi in una posizione a cui può accedere il codice. In genere, ciò significa che deve essere archiviato in uno dei servizi di archiviazione o big data di Google Cloud.

Dati di output

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

crea job di addestramento resilienti ai riavvii delle VM

Le VM Google Cloud si riavviano occasionalmente. 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.

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

L'API TensorFlow Estimator implementa automaticamente la funzionalità dei checkpoint. Se il modello è incluso in uno strumento di stima, non devi preoccuparti degli eventi di riavvio sulle VM.

Se non riesci a eseguire il wrapping del modello in TensorFlow Estimator, scrivi funzionalità per salvare 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 GPU (Graphics Processing Unit). Le GPU sono progettate per eseguire operazioni ad alta velocità matematicamente. Possono essere più efficaci nell'eseguire determinate operazioni sui dati tensore rispetto all'aggiunta di un'altra macchina con uno o più core CPU.

Il servizio di addestramento AI Platform Training non fornisce un'interfaccia speciale per il lavoro con le GPU. Puoi specificare macchine abilitate per GPU per eseguire il job e il servizio le assegna automaticamente. Ad esempio, in un job di addestramento TensorFlow puoi assegnare TensorFlow Ops 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 addestrando un framework di machine learning diverso utilizzando un container personalizzato, quel framework potrebbe fornire un'interfaccia diversa per l'utilizzo delle GPU.

Alcuni modelli non traggono vantaggio dall'esecuzione sulle GPU. Consigliamo le GPU per modelli complessi di grandi dimensioni con molte operazioni matematiche. Anche in questo caso, dovresti testare i vantaggi del supporto delle GPU eseguendo un piccolo campione di dati durante l'addestramento.

Scopri come utilizzare le GPU per il job di addestramento.

Addestramento con le TPU

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

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

Passaggi successivi