Grazie agli algoritmi integrati in AI Platform Training, puoi inviare i tuoi dati di addestramento, selezionare un algoritmo e lasciare che sia AI Platform Training per gestire la pre-elaborazione e l'addestramento al posto tuo, senza scrivere alcun codice per un'applicazione di addestramento. Gli algoritmi di immagine integrati consentono di eseguire l'addestramento sulle TPU con una configurazione minima. Il SaveModel TensorFlow risultante è compatibile per la gestione su CPU e GPU.
Panoramica
In questo tutorial imparerai ad addestrare un modello di classificazione delle immagini senza scrivere alcun codice. Devi inviare il set di dati Flows ad AI Platform Training per l'addestramento, quindi eseguire il deployment del modello su AI Platform Prediction per ottenere previsioni. Il modello risultante classifica le immagini floreali in base alle specie (margherita, tulipano, rosa, girasole o dente di leone).
Prima di iniziare
Per completare questo tutorial nella riga di comando, utilizza Cloud Shell o un qualsiasi ambiente in cui è installata Google Cloud CLI.
Completa i seguenti passaggi per configurare un account Google Cloud, abilitare le API richieste e installare e attivare Google Cloud CLI:
- Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
Abilita le API AI Platform Training & Prediction and Compute Engine.
- Installa Google Cloud CLI.
-
Per initialize gcloud CLI, esegui questo comando:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
Abilita le API AI Platform Training & Prediction and Compute Engine.
- Installa Google Cloud CLI.
-
Per initialize gcloud CLI, esegui questo comando:
gcloud init
Autorizza la tua Cloud TPU ad accedere al progetto
Segui questi passaggi per autorizzare il nome dell'account di servizio Cloud TPU associato al tuo progetto Google Cloud:
Per recuperare il nome dell'account di servizio di Cloud TPU, chiama il numero
projects.getConfig
. Esempio:PROJECT_ID=PROJECT_ID curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://ml.googleapis.com/v1/projects/$PROJECT_ID:getConfig
Salva il valore dei campi
serviceAccountProject
etpuServiceAccount
restituiti dall'API.Inizializza l'account di servizio Cloud TPU:
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" -d '{}' \ https://serviceusage.googleapis.com/v1beta1/projects/<serviceAccountProject>/services/tpu.googleapis.com:generateServiceIdentity
Ora aggiungi l'account di servizio Cloud TPU come membro nel progetto con il ruolo Agente di servizio Cloud ML. Completa i seguenti passaggi nella console Google Cloud o utilizzando il comando gcloud
:
Console
- Accedi alla console Google Cloud e scegli il progetto in cui utilizzi la TPU.
- Scegli IAM e amministrazione > IAM.
- Fai clic sul pulsante Aggiungi per aggiungere un membro al progetto.
- Inserisci l'account di servizio TPU nella casella di testo Membri.
- Fai clic sull'elenco a discesa Ruoli.
- Abilita il ruolo Agente di servizio Cloud ML (Agenti di servizio > Agente di servizio Cloud ML).
gcloud
Imposta le variabili di ambiente contenenti l'ID progetto e l'account di servizio Cloud TPU:
PROJECT_ID=PROJECT_ID SVC_ACCOUNT=your-tpu-sa-123@your-tpu-sa.google.com.iam.gserviceaccount.com
Concedi il ruolo
ml.serviceAgent
all'account di servizio Cloud TPU:gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$SVC_ACCOUNT --role roles/ml.serviceAgent
Per maggiori dettagli sulla concessione dei ruoli agli account di servizio, consulta la documentazione IAM.
Configurazione
Abbiamo modificato il set di dati TensorFlow Flowers da utilizzare con questo tutorial e
lo abbiamo ospitato in un bucket Cloud Storage pubblico,
gs://cloud-samples-data/ai-platform/built-in/image/flowers/
.
Console
Seleziona l'algoritmo
Vai alla pagina Job di addestramento di AI Platform nella console Google Cloud:
Fai clic sul pulsante Nuovo job di addestramento. Tra le opzioni visualizzate di seguito, fai clic su Addestramento con algoritmi integrati. Viene visualizzata la pagina Crea un nuovo job di addestramento.
La creazione del job di formazione è suddivisa in quattro passaggi. Il primo passaggio è Algoritmo di addestramento. Seleziona Classificazione delle immagini e fai clic su Avanti.
Dati di addestramento
Nella sezione Dati di addestramento, seleziona i dati di addestramento per il set di dati di esempio, ospitato nel nostro bucket Cloud Storage pubblico:
Seleziona Utilizza più file archiviati in una directory Cloud Storage.
Per Percorso directory, compila: "cloud-samples-data/ai-platform/built-in/image/flowers/"
In Nome carattere jolly, compila "flowers_train*" per selezionare tutti i file di addestramento nella directory.
Di seguito viene visualizzato il percorso GCS completo: "gs://cloud-samples-data/ai-platform/built-in/image/flowers/flowers_train*"
Nella sezione Dati di convalida, seleziona i dati di convalida per il set di dati di esempio, ospitato nel nostro bucket Cloud Storage pubblico:
Seleziona Utilizza più file archiviati in una directory Cloud Storage.
Per Percorso directory, compila: "cloud-samples-data/ai-platform/built-in/image/flowers/"
In Nome carattere jolly, compila "flowers_validation*" per selezionare tutti i file di convalida nella directory.
Di seguito viene visualizzato il Percorso GCS completo: "gs://cloud-samples-data/ai-platform/built-in/image/flowers/flowers_validation*"
Specifica la directory di output nel tuo bucket Cloud Storage in cui vuoi che AI Platform Training archivi il modello addestrato, i checkpoint e altri output del job di addestramento. Puoi compilare il percorso esatto nel bucket oppure utilizzare il pulsante Sfoglia per selezionarlo.
gcloud
Configura le variabili di ambiente per l'ID progetto, il bucket Cloud Storage, il percorso Cloud Storage dei dati di addestramento e la selezione dell'algoritmo.
Gli algoritmi integrati di AI Platform Training sono all'interno di container Docker ospitati in Container Registry.
PROJECT_ID="YOUR_PROJECT_ID"
BUCKET_NAME="YOUR_BUCKET_NAME"
REGION="us-central1"
gcloud config set project $PROJECT_ID
gcloud config set compute/region $REGION
# Set paths to the training and validation data.
TRAINING_DATA_PATH="gs://cloud-samples-data/ai-platform/built-in/image/flowers/flowers_train*"
VALIDATION_DATA_PATH="gs://cloud-samples-data/ai-platform/built-in/image/flowers/flowers_validation*"
# Specify the Docker container for your built-in algorithm selection.
IMAGE_URI="gcr.io/cloud-ml-algos/image_classification:latest"
Invia un job di addestramento
Per inviare un job, devi specificare alcuni argomenti di addestramento di base e alcuni argomenti di base relativi all'algoritmo di classificazione delle immagini.
Argomenti generali per il job di addestramento:
Argomenti dei job di addestramento | |
---|---|
Argomento | Descrizione |
job-id |
ID univoco per il job di addestramento. Puoi utilizzarlo per trovare i log per lo stato del job di addestramento dopo l'invio. |
job-dir |
Percorso di Cloud Storage in cui AI Platform Training salva i file di addestramento dopo aver completato un job di addestramento con esito positivo. |
scale-tier |
Specifica i tipi di macchina per l'addestramento. Utilizza BASIC per selezionare
la configurazione di una sola macchina.
|
master-image-uri |
URI di Container Registry utilizzato per specificare il container Docker da usare per il job di addestramento. Utilizza il container per l'algoritmo integrato di classificazione delle immagini definito in precedenza come IMAGE_URI .
|
region |
Specifica la regione disponibile in cui eseguire il job di addestramento. Per
questo tutorial, puoi utilizzare la regione us-central1 .
|
Argomenti specifici dell'algoritmo di classificazione delle immagini integrato:
Argomenti degli algoritmi | |
---|---|
Argomento | Descrizione |
training_data_path |
Percorso di un pattern del percorso TFRecord utilizzato per l'addestramento. |
validation_data_path |
Percorso di un pattern del percorso TFRecord utilizzato per la convalida. |
pretrained_checkpoint_path |
Il percorso dei checkpoint preaddestrati. Puoi utilizzare alcuni checkpoint pubblicati. |
num_classes |
Il numero di classi nei dati di addestramento/convalida. |
max_steps |
Il numero di passaggi che verranno eseguiti dal job di addestramento. |
train_batch_size |
Il numero di immagini da utilizzare per ogni passaggio di addestramento. |
num_eval_images |
Il numero totale di immagini utilizzate per la valutazione. Se è pari a 0, tutte le immagini in validation_data_path verranno
utilizzate per la valutazione.
|
learning_rate_decay_type |
Il metodo con cui il tasso di apprendimento decade durante l'addestramento. |
warmup_learning_rate |
Il tasso di apprendimento all'inizio della fase di riscaldamento. |
warmup_steps |
Il numero di passaggi da eseguire durante la fase di riscaldamento o la durata della fase di riscaldamento in passi.
Il job di addestramento utilizza warmup_learning_rate durante la fase di
riscaldamento. Al termine della fase di riscaldamento, il job di addestramento utilizza
initial_learning_rate .
|
initial_learning_rate |
Il tasso di apprendimento iniziale dopo il completamento della fase di riscaldamento. |
stepwise_learning_rate_steps |
I passaggi per il decadimento/modificare i tassi di apprendimento per il tipo di decadimento del tasso di apprendimento graduale. Ad esempio, 100.200 significa che il tasso di apprendimento cambierà (rispetto a stepwise_learning_rate_levels ) al passaggio 100
e al passaggio 200. Tieni presente che verrà rispettato solo quando
learning_rate_decay_type è impostato su graduale.
|
stepwise_learning_rate_levels |
Il valore del tasso di apprendimento di ogni passaggio per il tipo di decadimento del tasso di apprendimento
graduale. Tieni presente che verrà rispettato solo quando
learning_rate_decay_type è impostato su graduale.
|
image_size |
Le dimensioni dell'immagine (larghezza e altezza) utilizzate per l'addestramento. |
optimizer_type |
L'ottimizzatore utilizzato per l'addestramento. Deve essere uno dei seguenti: {momentum, adam, rmsprop}
|
optimizer_arguments |
Gli argomenti dell'ottimizzatore. È un elenco separato da virgole di
coppie "nome=valore". Deve essere compatibile con optimizer_type . Esempi:
|
model_type |
Il tipo di architettura del modello utilizzato per addestrare i modelli. Può essere uno dei seguenti:
|
label_smoothing |
Parametro di smoothing dell'etichetta utilizzato in softmax_cross_entropy .
|
weight_decay |
Coefficiente di decadimento peso per la regolarizzazione L2.
loss = cross_entropy + params['weight_decay'] * l2_loss
|
Per un elenco dettagliato di tutti gli altri flag degli algoritmi di classificazione delle immagini, consulta il riferimento per la classificazione delle immagini integrato.
Console
Argomenti degli algoritmi
Nella prima parte della scheda Argomenti dell'algoritmo, inserisci i seguenti valori:
- Numero di corsi: 5
- Numero massimo di passi: 15.000
- Dimensione batch di addestramento: 128
- Numero di immagini di valutazione: 1
Nella sezione Modello della scheda Argomenti dell'algoritmo:
- In Tipo di modello, seleziona Efficientnet-b4.
- Lascia vuoto il campo Percorso checkpoint preaddestrato.
- Lascia i valori predefiniti per le opzioni Perfezionamento etichetta e Decadimento peso.
Impostazioni del job
Nella scheda Impostazioni lavoro:
- Inserisci un ID job univoco (ad esempio "image_classification_example").
- Inserisci una regione disponibile (ad es. "us-central1").
- Per selezionare i tipi di macchina, seleziona "PERSONALIZZATO" per il livello di scalabilità.
Una sezione per mostrare le specifiche personalizzate del cluster.
- Per Tipo principale, seleziona complex_model_m.
- In Tipo di worker, seleziona cloud_tpu. Il numero di worker è 1 per impostazione predefinita.
Fai clic su Fine per inviare il job di addestramento.
gcloud
Imposta tutti gli argomenti per il job di addestramento e l'algoritmo, prima di utilizzare
gcloud
per inviare il job:DATASET_NAME="flowers" ALGORITHM="image_classification" MODEL_NAME="${DATASET_NAME}_${ALGORITHM}_model" # Give a unique name to your training job. DATE="$(date '+%Y%m%d_%H%M%S')" JOB_ID="${MODEL_NAME}_${DATE}" # Make sure you have access to this Cloud Storage bucket. JOB_DIR="gs://${BUCKET_NAME}/algorithms_training/${MODEL_NAME}/${DATE}"
Invia il job:
gcloud ai-platform jobs submit training $JOB_ID \ --region=$REGION \ --config=config.yaml \ --master-image-uri=$IMAGE_URI \ -- \ --training_data_path=$TRAINING_DATA_PATH \ --validation_data_path=$VALIDATION_DATA_PATH \ --job-dir=$JOB_DIR \ --max_steps=30000 \ --train_batch_size=128 \ --num_classes=5 \ --num_eval_images=100 \ --initial_learning_rate=0.128 \ --warmup_steps=1000 \ --model_type='efficientnet-b4'
Una volta inviato correttamente il job, puoi visualizzare i log utilizzando i seguenti comandi
gcloud
:gcloud ai-platform jobs describe $JOB_ID gcloud ai-platform jobs stream-logs $JOB_ID
Comprendi la directory dei job
Dopo il completamento corretto di un job di addestramento, AI Platform Training
crea un modello addestrato nel tuo bucket Cloud Storage, insieme ad altri
artefatti. All'interno di JOB_DIR
puoi trovare la seguente struttura di directory:
- model/ (una directory
SaveModel di TensorFlow
che contiene anche un file
deployment_config.yaml
)- saved_model.pb
- deployment_config.yaml
- Valuta/
- events.out.tfevents.[timestamp].cmle-training-[timestamp]
- event.out.tfevents...
- ...
- variabili/
- variables.data-00000-of-00001
- variables.index
La directory del job contiene anche vari file di checkpoint dei modelli.
Verifica che la struttura di directory in JOB_DIR
corrisponda a:
gsutil ls -a $JOB_DIR/*
Esegui il deployment del modello addestrato
AI Platform Training organizza i tuoi modelli addestrati utilizzando le risorse dei model e della model. Un modello AI Platform Training è un container per le versioni del modello di machine learning.
Per eseguire il deployment di un modello, devi creare una risorsa del modello in AI Platform Training, creare una versione del modello, quindi utilizzare il modello e la versione per richiedere previsioni online.
Per ulteriori informazioni su come eseguire il deployment dei modelli in AI Platform Training, vedi come eseguire il deployment di un modello TensorFlow.
Console
Nella pagina Job, puoi trovare un elenco di tutti i job di addestramento. Fai clic sul nome del job di addestramento appena inviato ("image_classification" o sul nome del job che hai utilizzato).
Nella pagina Dettagli job puoi visualizzare l'avanzamento generale del job o fare clic su Visualizza log per una visualizzazione più dettagliata del suo avanzamento.
Se il job ha esito positivo, viene visualizzato il pulsante Esegui il deployment del modello in alto. Fai clic su Esegui il deployment del modello.
Seleziona Esegui il deployment come nuovo modello e inserisci un nome per il modello, ad esempio "algorithms_image_classification_model". Quindi, fai clic su Conferma.
Nella pagina Crea versione, inserisci un nome di versione, ad esempio "v1", e lascia le impostazioni predefinite per tutti gli altri campi. Fai clic su Salva.
gcloud
Il processo di addestramento con l'algoritmo di classificazione delle immagini integrato produce un file, deployment_config.yaml
, che semplifica il deployment del modello su AI Platform Training per le previsioni.
Copia il file nella directory locale e visualizzane i contenuti:
gsutil cp $JOB_DIR/model/deployment_config.yaml . cat deployment_config.yaml
Il tuo file
deployment_config.yaml
dovrebbe apparire simile al seguente:deploymentUri: gs://BUCKET_NAME/algorithms_training/flowers_image_classification/model framework: TENSORFLOW labels: global_step: '1000' job_id: flowers_image_classification_20190227060114 runtimeVersion: '1.14'
Crea il modello e la versione in AI Platform Training:
gcloud ai-platform models create $MODEL_NAME --regions $REGION # Create a model and a version using the file above. VERSION_NAME="v_${DATE}" gcloud ai-platform versions create $VERSION_NAME \ --model $MODEL_NAME \ --config deployment_config.yaml
La creazione della versione richiede alcuni minuti.
Ricevi previsioni online
Quando richiedi previsioni, devi assicurarti che i dati di input siano formattati come JSON.
Scarica i file degli artefatti di addestramento:
gsutil cp $JOB_DIR/artifacts/* .
Prepara l'input di previsione per un'immagine.
Per inviare una richiesta di previsione online utilizzando Google Cloud CLI, come in questo esempio, scrivi ogni istanza in una riga in un file JSON delimitato da una nuova riga.
Esegui i comandi seguenti nel terminale per creare un input per una singola istanza che puoi inviare ad AI Platform Prediction:
Il seguente script Python codifica una singola immagine utilizzando
base64
, la formatta per la previsione, aggiunge una chiave di istanza e scrive il risultato in un file denominatoprediction_instances.json
:import json import base64 import tensorflow as tf IMAGE_URI='gs://cloud-samples-data/ai-platform/built-in/image/tutorial_examples/daisy.jpg' with tf.gfile.Open(IMAGE_URI, 'rb') as image_file: encoded_string = base64.b64encode(image_file.read()).decode('utf-8') image_bytes = {'b64': str(encoded_string)} instances = {'image_bytes': image_bytes, 'key': '1'} with open("prediction_instances.json","w") as f: f.write(json.dumps(instances))
Invia la richiesta di previsione:
gcloud ai-platform predict --model $MODEL_NAME \ --version $VERSION_NAME \ --json-instances prediction_instances.json
Molto probabilmente, l'output di previsione include la classe daisy
, che indica che il modello di cui è stato eseguito il deployment ha classificato l'immagine di input come daisy. Poiché l'addestramento non è deterministico, il modello può differire.
Informazioni sui dati
Il set di dati Flows utilizzato in questo esempio per l'addestramento è fornito dal team TensorFlow.
Passaggi successivi
- Scopri di più sull'utilizzo dell'algoritmo di classificazione delle immagini integrato.