Google Cloud AI Platform offre un ambiente completo per creare, addestrare e distribuire modelli di machine learning su larga scala, sfruttando la solida infrastruttura di Google Cloud. Utilizzando l'interfaccia utente grafica (GUI) di Google Cloud Console, gli utenti possono orchestrare i flussi di lavoro per lo sviluppo dei modelli senza dover interagire direttamente con gli strumenti da riga di comando. Il tutorial passo passo riportato di seguito illustra come addestrare e distribuire un semplice modello di intelligenza artificiale, in particolare una rete neurale per la classificazione, utilizzando l'interfaccia grafica, evidenziando le best practice e fornendo un valore didattico completo.
Prerequisiti
Prima di procedere assicurati di avere:
1. Un account Google Cloud Platform (GCP) con fatturazione abilitata.
2. Autorizzazioni adeguate (ad esempio, Editor del progetto o Proprietario) per utilizzare i servizi della piattaforma AI.
3. Un bucket di Cloud Storage nel tuo progetto GCP per archiviare dati e modelli.
4. Le API AI Platform, Compute Engine e Cloud Storage abilitate per il tuo progetto.
Passaggio 1: prepara i tuoi dati
La qualità e il formato dei dati influenzano significativamente le prestazioni del modello. A titolo dimostrativo, si consideri il noto dataset Iris, un semplice problema di classificazione multiclasse.
1. Ottieni il set di dati
– Scarica il set di dati Iris in formato CSV da una fonte attendibile (come UCI Machine Learning Repository).
2. Carica i dati su Cloud Storage
– Accedi alla console GCP.
– Vai su "Archiviazione" > "Browser".
– Fai clic su "Crea bucket" se non ne hai uno oppure selezionane uno esistente.
– Fai clic su "Carica file" e seleziona il file CSV.
3. Controlla lo schema dei dati
– Utilizza la scheda "Anteprima" in Cloud Storage per visualizzare il tuo CSV e verificare l'integrità dei tuoi dati.
Nota didattica: L'archiviazione dei dati di input nel Cloud Storage è una pratica standard nella formazione distribuita nel cloud. Separa i dati dalle risorse di elaborazione, consentendo un accesso fluido da parte di più addetti alla formazione.
Passaggio 2: creare un'applicazione di formazione
Per l'addestramento distribuito o l'utilizzo di modelli personalizzati, AI Platform richiede il codice di addestramento in Python, in genere impacchettato come modulo Python. Tuttavia, per i modelli più semplici, AI Platform fornisce contenitori predefiniti tramite le opzioni "Custom Jobs" o "AutoML". Questo tutorial si concentra sull'utilizzo di uno script Python personalizzato per la massima flessibilità.
1. Scrivi il tuo codice modello
– Crea uno script Python (ad esempio, `trainer/task.py`) che:
– Carica il set di dati da Cloud Storage.
– Preelabora i dati.
– Definisce un semplice modello sequenziale Keras per la classificazione.
– Addestra il modello e salva l’output su Cloud Storage.
– Esempio di estratto di codice (semplificato):
python import os import pandas as pd import tensorflow as tf from tensorflow import keras def load_data(file_path): return pd.read_csv(file_path) def create_model(input_shape): model = keras.Sequential([ keras.layers.Dense(10, activation='relu', input_shape=(input_shape,)), keras.layers.Dense(3, activation='softmax') ]) model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) return model def main(): # Environment variables set by AI Platform input_path = os.environ['AIP_DATA_FORMAT'] output_dir = os.environ['AIP_MODEL_DIR'] df = load_data(input_path) X = df.iloc[:, :-1].values y = df.iloc[:, -1].values model = create_model(X.shape[1]) model.fit(X, y, epochs=10) model.save(output_dir) if __name__ == '__main__': main()
- Nota: Per la produzione o per set di dati più grandi, adottare le migliori pratiche quali la suddivisione in più fasi, la suddivisione tra training e test e la normalizzazione dei dati.
2. Confeziona il codice
– Struttura la directory del codice come segue:
trainer/ __init__.py task.py
– Comprimere la directory `trainer` in un file `.tar.gz` per il caricamento.
3. Carica il codice su Cloud Storage
– Vai al tuo bucket di archiviazione.
– Carica il file `.tar.gz` contenente il codice di addestramento.
Nota didattica: Il codice di packaging consente la riproducibilità e il controllo delle versioni, entrambi importanti nei flussi di lavoro di apprendimento automatico collaborativi e distribuiti.
Passaggio 3: creare un processo di formazione tramite la console GCP
1. Vai a Vertex AI
– Nella console GCP, vai su "Vertex AI" > "Addestramento".
2. Inizia un nuovo lavoro di formazione
– Fare clic su "Crea" per avviare un nuovo processo di formazione.
– Seleziona "Allenamento personalizzato".
3. Configurare il lavoro di formazione
- Nome visualizzato: Inserisci un nome riconoscibile per il tuo lavoro.
- Regione: Seleziona una regione vicina alla posizione dei tuoi dati per migliorare le prestazioni e ridurre i costi.
- Posizione del pacchetto Python: Inserisci il percorso del Cloud Storage per il file `.tar.gz` (ad esempio, `gs://your-bucket/trainer.tar.gz`).
- Nome del modulo Python: Specificare il punto di ingresso del modulo (ad esempio, `trainer.task`).
4. Specificare il contenitore di formazione
– Seleziona "TensorFlow" come framework (ad esempio, TensorFlow 2.8) se il tuo codice si basa su di esso.
– Il sistema riempie automaticamente i contenitori Docker compatibili.
5. Imposta argomenti di input e iperparametri (facoltativo)
– È possibile aggiungere argomenti per iperparametri, percorsi o altre variabili di runtime.
– Esempio: `–input-path=gs://your-bucket/iris.csv –output-dir=gs://your-bucket/model-output`
6. Configurare le risorse di calcolo
- Tipo di macchina: Per i modelli semplici è sufficiente `n1-standard-4`.
- Acceleratore: Nessuno requisito, a meno che non si vogliano addestrare modelli complessi o approfonditi.
- Dimensione del pool di lavoratori: Impostare su 1 per l'addestramento a nodo singolo o su un valore maggiore per l'addestramento distribuito (vedere la sezione distribuita di seguito).
7. Directory dei modelli di output
– Specificare un percorso di Cloud Storage per gli artefatti del modello addestrato (ad esempio, `gs://your-bucket/model-output`).
8. Crea ed esegui il lavoro
– Fare clic su "Crea" per avviare il processo. Monitorare l'avanzamento nell'interfaccia utente della console, nella scheda "Lavori di formazione".
Nota didattica: L'utilizzo dell'interfaccia grafica utente (GUI) elimina la complessità della riga di comando, rendendo il flusso di lavoro più accessibile ai nuovi professionisti e a coloro che si concentrano sulla prototipazione.
Passaggio 4: (facoltativo) abilitare la formazione distribuita
Per set di dati più grandi o reti neurali profonde, l'addestramento può essere distribuito su più macchine.
1. Nella configurazione "Training job", individuare la "Configurazione del pool di worker".
2. Aggiungere ulteriori pool di worker:
- Capo: 1 (nodo principale)
- Lavoratori: Impostare il numero in base alla dimensione del set di dati/modello.
- Server dei parametri: Utilizzato per il coordinamento dei parametri del modello, rilevante per i lavori TensorFlow distribuiti.
3. Per ogni pool, specifica il tipo di macchina e l'immagine Docker (devono corrispondere al tuo framework e alla tua versione).
4. Assicurati che il tuo codice supporti la formazione distribuita (ad esempio, usando `tf.distribute.Strategy`).
Nota didattica: L'addestramento distribuito può ridurre significativamente i tempi di addestramento per problemi su larga scala. Introduce considerazioni come il partizionamento dei dati, la sincronizzazione e il sovraccarico di rete. Per modelli e set di dati semplici, l'addestramento a singolo nodo è sufficiente.
Passaggio 5: distribuire il modello tramite l'interfaccia utente grafica della console GCP
Una volta completato l'addestramento, gli artefatti del modello saranno disponibili nel bucket Cloud Storage specificato. Successivamente, distribuisci il modello per la previsione online.
1. Registra il modello
– In "Vertex AI" > "Modelli", clicca su "Carica modello".
– Selezionare "Da artefatti del modello addestrato".
– Specificare il percorso di Cloud Storage per la directory del modello salvato (ad esempio, `gs://your-bucket/model-output`).
2. Modello di struttura e formato
– Specificare il framework (ad esempio, TensorFlow) e la versione.
– Vertex AI rileva automaticamente il tipo di modello (SavedModel, scikit-learn pickle, ecc.).
3. Nome visualizzato del modello
– Inserisci un nome visualizzato univoco per il tuo modello.
4. destinazione
– Scegli la regione che corrisponde al tuo luogo di allenamento e di stoccaggio.
5. Crea il modello
– Clicca su “Crea” e attendi il completamento della registrazione.
6. Distribuisci su un endpoint
– Una volta registrato il modello, fare clic su "Distribuisci all'endpoint".
– Crea un nuovo endpoint o selezionane uno esistente.
– Configurare la suddivisione del traffico se si distribuiscono più versioni.
- Tipo di macchina: Selezionare un tipo di istanza appropriato per l'erogazione; per modelli di piccole dimensioni, è sufficiente `n1-standard-2`.
- Repliche minime/massime: Imposta i parametri di ridimensionamento in base al volume di richieste previsto.
– Abilitare facoltativamente l'accelerazione GPU/TPU per un'inferenza più rapida.
7. Schierare
– Fare clic su "Distribuisci". Il processo di distribuzione potrebbe richiedere alcuni minuti.
Nota didattica: La separazione della registrazione e della distribuzione del modello consente un controllo di versione e test A/B affidabili, supportando le migliori pratiche MLOps.
Passaggio 6: testare il modello distribuito
1. Preparare i dati di prova
– Formattare i dati di input come richiesto dal modello (ad esempio, come un oggetto JSON con le stesse caratteristiche dei dati di addestramento).
2. Utilizzare la console per i test
– In Vertex AI > Endpoint, seleziona l’endpoint distribuito.
– Fare clic su "Endpoint di prova".
– Incolla i dati del test nel corpo della richiesta.
– Fare clic su "Invia richiesta" e osservare i risultati della previsione.
Nota didattica: I test tramite GUI facilitano la convalida rapida prima di integrare il modello nelle applicazioni di produzione tramite API REST o librerie client.
Fase 7: monitorare e gestire le prestazioni del modello
1. Visualizza previsioni e registri
– Accedi ai log dall'endpoint per richieste di previsione, latenza ed errori.
– Utilizzare "Monitoraggio" in Vertex AI per impostare avvisi e monitorare l'utilizzo delle risorse.
2. Aggiornare o riaddestrare il modello
– Quando sono disponibili dati o versioni migliorate del modello, ripetere il processo di formazione e distribuzione.
– Aggiornare l’endpoint per indirizzare il traffico alla nuova versione del modello senza tempi di inattività.
Passaggio 8: pulizia delle risorse
Per evitare addebiti inutili:
1. Eliminare modelli, endpoint e processi di formazione inutilizzati da Vertex AI.
2. Rimuovere i file di grandi dimensioni dai bucket di Cloud Storage se non sono più necessari.
3. Rilasciare tutti gli indirizzi IP o le risorse di elaborazione riservati.
Esempi e valore didattico
- Esempio 1: addestramento a nodo singolo con dataset Iris
– L'addestramento di un modello Keras con il set di dati Iris tramite l'interfaccia utente grafica dimostra i principi dell'apprendimento automatico basato su cloud, tra cui il disaccoppiamento dell'archiviazione dei dati, il packaging dei moduli e l'addestramento riproducibile.
- Esempio 2: Formazione distribuita multi-lavoratore
– Quando si scala su grandi dataset tabulari, la configurazione di più pool di worker tramite l'interfaccia utente grafica (GUI) consente il parallelismo di dati e modelli distribuiti. Questo introduce gli studenti a concetti avanzati di ingegneria del machine learning, come le barriere di sincronizzazione e i server di parametri.
Il flusso di lavoro basato su GUI su Google Cloud AI Platform è pedagogicamente prezioso in quanto:
– Riduce le barriere d’ingresso per i principianti offrendo un processo visivo e graduale.
– Illustra la separazione tra dati, modello e infrastruttura.
– Rafforza la natura iterativa dello sviluppo del modello: preparazione dei dati, formazione, valutazione, distribuzione, monitoraggio e riqualificazione.
– Dimostra le pratiche standard del settore per MLOps, tra cui controllo delle versioni, monitoraggio e distribuzione scalabile.
Insidie comuni e risoluzione dei problemi
- Errori di autorizzazione: Assicurati che il tuo account di servizio disponga delle autorizzazioni necessarie per accedere a Cloud Storage, AI Platform e Compute Engine.
- Limiti delle risorse: Se i processi di formazione falliscono a causa di problemi di quota, controlla le quote del tuo progetto e, se necessario, richiedi degli aumenti.
- Formato dati non corrispondente: Verificare sempre lo schema CSV e i passaggi di pre-elaborazione affinché corrispondano alle aspettative di input del modello.
- Modello non distribuito: Assicurarsi che il modello sia salvato in un formato compatibile con Vertex AI (ad esempio, TensorFlow SavedModel).
Argomenti avanzati per l'esplorazione
- Ottimizzazione dell'iperparametro: Utilizza la funzionalità di ottimizzazione degli iperparametri integrata in Vertex AI per automatizzare la ricerca dei parametri ottimali.
- Condutture: Orchestrare flussi di lavoro ML multi-step per riproducibilità e automazione.
- Monitoraggio del modello: Impostare la valutazione continua e il rilevamento della deriva per i modelli in produzione.
Questo approccio graduale tramite l'interfaccia utente grafica (GUI) consente di acquisire competenze di base nell'apprendimento automatico basato su cloud, preparando gli utenti a flussi di lavoro più sofisticati, automatizzati o basati su codice man mano che le loro competenze aumentano.
Altre domande e risposte recenti riguardanti Formazione distribuita nel cloud:
- Qual è la procedura più semplice e dettagliata per mettere in pratica l'addestramento di modelli di intelligenza artificiale distribuiti in Google Cloud?
- Qual è il primo modello su cui si può lavorare con alcuni suggerimenti pratici per iniziare?
- Quali sono gli svantaggi della formazione distribuita?
- Quali sono i passaggi coinvolti nell'utilizzo di Cloud Machine Learning Engine per la formazione distribuita?
- Come puoi monitorare l'avanzamento di un job di formazione in Cloud Console?
- Qual è lo scopo del file di configurazione in Cloud Machine Learning Engine?
- Come funziona il parallelismo dei dati nell'addestramento distribuito?
- Quali sono i vantaggi della formazione distribuita nell'apprendimento automatico?