Questo tutorial contiene una descrizione di alto livello del modello MNIST, istruzioni per scaricare il codice di esempio di TPU TensorFlow MNIST e una guida per l'esecuzione del codice su Cloud TPU.
Disclaimer
Questo tutorial utilizza un set di dati di terze parti. Google non fornisce alcuna dichiarazione, o altre garanzie circa la validità o qualsiasi altro aspetto di questo del set di dati.
Descrizione del modello
Il set di dati MNIST contiene un gran numero di immagini di cifre scritte a mano libera comprese tra 0 e 9, nonché le etichette che identificano il cifra in ogni immagine.
Questo tutorial addestra un modello di machine learning per classificare le immagini in base al set di dati MNIST. Dopo l'addestramento, il modello classifica le immagini in arrivo in 10 categorie (da 0 a 9) in base a ciò che ha appreso sulle immagini scritte a mano dal set di dati MNIST. Puoi quindi inviare al modello un'immagine che non ha rilevato e il modello identifica la cifra nell'immagine in base a ciò che il modello appreso durante l'addestramento.
Il set di dati MNIST è stato suddiviso in tre parti:
- 60.000 esempi di dati di addestramento
- 10.000 esempi di dati di test
- 5000 esempi di dati di convalida
Il modello è composto da una combinazione di sette strati:
- Convoluzione 2 x
- 2 x max pooling
- 2 volte più denso (completamente connesso)
- 1 interruzione
La perdita viene calcolata utilizzando l'entropia incrociata categorica.
Questa versione del modello MNIST utilizza l'API Keras, un modo consigliato per creare e eseguire un modello di machine learning su una Cloud TPU.
Keras semplifica il processo di sviluppo del modello nascondendo la maggior parte dell'implementazione a basso livello, il che ti consente anche di passare da TPU ad altre piattaforme di test come GPU o CPU.
Obiettivi
- Crea un bucket Cloud Storage per contenere il set di dati e l'output del modello.
- Esegui il job di addestramento.
- Verifica i risultati dell'output.
Costi
In questo documento utilizzi i seguenti componenti fatturabili di Google Cloud:
- Compute Engine
- Cloud TPU
- Cloud Storage
Per generare una stima dei costi basata sull'utilizzo previsto,
utilizza il Calcolatore prezzi.
Prima di iniziare
Questa sezione fornisce informazioni sulla configurazione del bucket Cloud Storage di una VM di Compute Engine.
Apri una finestra di Cloud Shell.
Crea una variabile per l'ID del progetto.
export PROJECT_ID=project-id
Configura Google Cloud CLI per utilizzare il progetto in cui vuoi creare con Cloud TPU.
gcloud config set project ${PROJECT_ID}
La prima volta che esegui questo comando in una nuova VM Cloud Shell, Pagina
Authorize Cloud Shell
visualizzata. Fai clic suAuthorize
nella parte inferiore della pagina per consentire agcloud
di effettuare chiamate alle API Google Cloud con le tue credenziali.Creare un account di servizio per il progetto Cloud TPU.
gcloud beta services identity create --service tpu.googleapis.com --project $PROJECT_ID
Il comando restituisce un account di servizio Cloud TPU con il seguente formato:
service-PROJECT_NUMBER@cloud-tpu.iam.gserviceaccount.com
Crea un bucket Cloud Storage utilizzando il seguente comando:
gcloud storage buckets create gs://bucket-name \ --project=${PROJECT_ID} \ --location=us-central1
Questo bucket Cloud Storage archivia i dati che utilizzi per addestrare il modello e i risultati dell'addestramento. Il comando
gcloud
utilizzato in questo tutorial configura le autorizzazioni predefinite per l'account di servizio Cloud TPU passaggio precedente. Per autorizzazioni più granulari, rivedi il autorizzazioni a livello di accesso.Crea una VM TPU utilizzando il comando
gcloud
.$ gcloud compute tpus tpu-vm create mnist-tutorial \ --zone=us-central1-b \ --accelerator-type=v3-8 \ --version=tpu-vm-tf-2.17.0-pjrt \
Descrizioni flag di comando
zone
- La zona in cui prevedi di creare la tua Cloud TPU.
accelerator-type
- Il tipo di acceleratore specifica la versione e le dimensioni della Cloud TPU che vuoi creare. Per ulteriori informazioni sui tipi di acceleratori supportati per ogni versione di TPU, consulta Versioni TPU.
version
- La versione software di Cloud TPU.
Per ulteriori informazioni sul comando
gcloud
, consulta la documentazione di riferimento di gcloud.Connettiti all'istanza Compute Engine tramite SSH. Quando sei connesso alla VM, il prompt della shell cambia da
username@projectname
ausername@vm-name
:gcloud compute tpus tpu-vm ssh mnist-tutorial --zone=us-central1-b
Crea una variabile di ambiente per il nome della TPU.
(vm)$ export TPU_NAME=local
Installa i requisiti di TensorFlow.
(vm)$ pip3 install -r /usr/share/tpu/models/official/requirements.txt
Addestra il modello
Il codice sorgente per il modello MNIST TPU è disponibile su GitHub.
Imposta le seguenti variabili. Sostituisci bucket-name con il tuo bucket nome:
(vm)$ export STORAGE_BUCKET=gs://bucket-name (vm)$ export MODEL_DIR=${STORAGE_BUCKET}/mnist (vm)$ export DATA_DIR=${STORAGE_BUCKET}/data
Imposta la variabile di ambiente
PYTHONPATH
.(vm)$ export PYTHONPATH="${PYTHONPATH}:/usr/share/tpu/models"
Durante la creazione della TPU, se imposti il parametro
--version
su una versione che termina con-pjrt
, imposta le seguenti variabili di ambiente per abilitare il runtime PJRT:(vm)$ export NEXT_PLUGGABLE_DEVICE_USE_C_API=true (vm)$ export TF_PLUGGABLE_DEVICE_LIBRARY_PATH=/lib/libtpu.so
Passa alla directory in cui si trova il modello:
(vm)$ cd /usr/share/tpu/models/official/legacy/image_classification
Esegui lo script di addestramento MNIST:
(vm)$ python3 mnist_main.py \ --tpu=${TPU_NAME} \ --model_dir=${MODEL_DIR} \ --data_dir=${DATA_DIR} \ --train_epochs=10 \ --distribution_strategy=tpu \ --download
Descrizioni dei flag dei comandi
tpu
- Il nome del Cloud TPU. Se non specificato durante l'impostazione per la VM di Compute Engine e Cloud TPU, il nome predefinito è il tuo nome utente.
model_dir
- Il bucket Cloud Storage in cui vengono visualizzati i punti di controllo e i riepiloghi archiviati durante l'addestramento. Puoi utilizzare una cartella esistente per caricare i checkpoint generati in precedenza creati su una TPU delle stesse dimensioni e della stessa versione di TensorFlow.
data_dir
- Il percorso Cloud Storage dell'input di addestramento. In questo esempio è impostato sul set di dati fake_imagenet.
train_epochs
- Il numero di epoche in cui addestrare il modello.
distribution_strategy
- Per addestrare il modello ResNet su una Cloud TPU, imposta
distribution_strategy
atpu
. download
- Se impostato su
true
, lo script viene scaricato e pre-elaborato il set di dati MNIST, se non è già stato scaricato.
Lo script di addestramento viene eseguito in meno di cinque minuti su una Cloud TPU v3-8 e mostra un output simile al seguente:
Run stats: { 'accuracy_top_1': 0.9762369990348816, 'eval_loss': 0.07863274961709976, 'loss': 0.1111728847026825, 'training_accuracy_top_1': 0.966645359992981 }
Esegui la pulizia
Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial, elimina il progetto che contiene le risorse oppure mantieni il progetto ed elimina le singole risorse.
Se non l'hai ancora fatto, disconnetti dall'istanza Compute Engine:
(vm)$ exit
Il tuo prompt dovrebbe ora essere
username@projectname
, a indicare che ti trovi in Cloud Shell.Elimina le tue risorse Cloud TPU e Compute Engine.
$ gcloud compute tpus tpu-vm delete mnist-tutorial \ --zone=us-central1-b
Verifica che le risorse siano state eliminate eseguendo
gcloud compute tpus tpu-vm list
. L'eliminazione potrebbe richiedere alcuni minuti. L'output del comando seguente non devono includere nessuna delle risorse create in questo tutorial:$ gcloud compute tpus tpu-vm list --zone=us-central1-b
Elimina il bucket Cloud Storage utilizzando il seguente comando. Sostituisci bucket-name con il nome del tuo bucket Cloud Storage.
$ gcloud storage rm gs://bucket-name --recursive
Passaggi successivi
I tutorial su TensorFlow Cloud TPU in genere addestrano il modello utilizzando una un set di dati di esempio. I risultati di questo addestramento non sono utilizzabili per l'inferenza. A per l'inferenza, puoi addestrare i dati su una o il tuo set di dati. Modelli TensorFlow addestrati su Cloud TPU richiedono generalmente che i set di dati siano TFRecord.
Puoi utilizzare lo strumento di conversione dei set di dati sample per convertire un'immagine in formato TFRecord. Se non utilizzi un modello di classificazione delle immagini, dovrai convertire autonomamente il tuo set di dati in formato TFRecord. Per ulteriori informazioni, consulta TFRecord e tf.Example.
Ottimizzazione degli iperparametri
Per migliorare le prestazioni del modello con il tuo set di dati, puoi ottimizzare i suoi parametri iperbolici. Puoi trovare informazioni sugli iperparametri comuni a tutti i modelli supportati da TPU su GitHub. Puoi trovare informazioni sugli iperparametri specifici del modello nella fonte per ciascuno un modello di machine learning. Per ulteriori informazioni sull'ottimizzazione degli iperparametri, consulta la Panoramica dell'ottimizzazione degli iperparametri e Ottimizzare gli iperparametri.
Inferenza
Una volta addestrato il modello, puoi utilizzarlo per l'inferenza (chiamato anche previsione). Puoi utilizzare lo strumento di conversione per l'inferenza Cloud TPU per preparare e ottimizzare un modello TensorFlow per l'inferenza su Cloud TPU v5e. Per ulteriori informazioni sull'inferenza su Cloud TPU v5e, consulta l'introduzione all'inferenza su Cloud TPU v5e.
- Esegui una colab di Cloud TPU che dimostra come addestrare un modello di classificazione delle immagini come immagini.
- Esplora gli altri tutorial su Cloud TPU.
- Scopri come utilizzare gli strumenti di monitoraggio TPU in TensorBoard.
- Verifica le prestazioni su un modello su larga scala eseguendo il sample ResNet.