Addestramento di EfficientNet su Cloud TPU (TF 2.x)


Questo tutorial mostra come addestrare un modello Keras EfficientNet su Cloud TPU utilizzando tf.distribute.TPUStrategy.

Se non hai familiarità con Cloud TPU, ti consigliamo vivamente di seguire la quickstart per scoprire come creare una Cloud TPU e una VM di Compute Engine.

Obiettivi

  • Crea un bucket Cloud Storage in cui inserire il set di dati e l'output del modello.
  • Prepara un set di dati imagenet falso simile al set di dati ImageNet.
  • Esegui il job di addestramento.
  • Verifica i risultati dell'output.

Costi

In questo documento vengono utilizzati i seguenti componenti fatturabili di Google Cloud:

  • Compute Engine
  • Cloud TPU
  • Cloud Storage

Per generare una stima dei costi in base all'utilizzo previsto, utilizza il Calcolatore prezzi. I nuovi utenti di Google Cloud possono essere idonei a una prova senza costi aggiuntivi.

Prima di iniziare

Prima di iniziare questo tutorial, verifica che il tuo progetto Google Cloud sia configurato correttamente.

  1. 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.
  2. Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  3. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  4. Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  5. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  6. Questa procedura dettagliata utilizza i componenti fatturabili di Google Cloud. Consulta la pagina dei prezzi di Cloud TPU per stimare i costi. Assicurati di pulire le risorse che hai creato quando hai finito di utilizzarle per evitare addebiti inutili.

Addestramento su singolo dispositivo Cloud TPU

Questa sezione descrive come configurare le risorse Cloud TPU e addestrare il modello EfficientNet utilizzando un singolo dispositivo Cloud TPU.

  1. Apri una finestra di Cloud Shell.

    Apri Cloud Shell

  2. Crea una variabile per l'ID del progetto.

    export PROJECT_ID=project-id
    
  3. Configura Google Cloud CLI per utilizzare il progetto in cui vuoi creare Cloud TPU.

    gcloud config set project ${PROJECT_ID}
    

    La prima volta che esegui questo comando in una nuova VM Cloud Shell, viene visualizzata una pagina Authorize Cloud Shell. Fai clic su Authorize in fondo alla pagina per consentire a gcloud di effettuare chiamate API con le tue credenziali.

    Per maggiori informazioni sul comando gcloud, consulta la documentazione di riferimento gcloud.

  4. Creare un account di servizio per il progetto Cloud TPU.

    Gli account di servizio consentono al servizio Cloud TPU di accedere ad altri servizi Google Cloud.

    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
    

  5. Esporta variabili di configurazione TPU

    Imposta la zona in cui addestrerai il modello e archivierai tutti i dati relativi all'addestramento.

    $ export ZONE=europe-west4-a
    
  6. Crea un bucket Cloud Storage utilizzando il comando seguente:

    gsutil mb -p ${PROJECT_ID} -c standard -l europe-west4 gs://bucket-name/
    

    Questo bucket Cloud Storage archivia i dati utilizzati per addestrare il modello e i risultati dell'addestramento. Il comando gcloud compute tpus execution-groups utilizzato in questo tutorial configura le autorizzazioni predefinite per l'account di servizio Cloud TPU che hai configurato nel passaggio precedente. Se vuoi autorizzazioni più granulari, rivedi le autorizzazioni a livello di accesso.

    La località del bucket deve trovarsi nella stessa regione della VM (Compute Engine) e del nodo Cloud TPU.

  7. Prepara il set di dati o utilizza fake_imagenet

    ImageNet è un database di immagini. Le immagini nel database sono organizzate in una gerarchia, con centinaia e migliaia di immagini raffiguranti ogni nodo.

    Questo tutorial utilizza una versione dimostrativa del set di dati completo ImageNet, definito fake_imagenet. Questa versione dimostrativa consente di testare il tutorial, riducendo al contempo i requisiti di spazio di archiviazione e di tempo normalmente associati all'esecuzione di un modello sull'intero database ImageNet.

    Il set di dati finger_imagenet si trova in questa posizione su Cloud Storage:

    gs://cloud-tpu-test-datasets/fake_imagenet

    Il set di dati finger_imagenet è utile solo per capire come utilizzare una Cloud TPU e convalidare le prestazioni end-to-end. I valori relativi all'accuratezza e il modello salvato non saranno significativi.

    Se vuoi utilizzare il set di dati ImageNet completo, consulta Download, pre-elaborazione e caricamento del set di dati ImageNet.

  8. Avvia le risorse TPU utilizzando il comando gcloud. Il comando da utilizzare dipende dall'utilizzo di VM TPU o nodi TPU. Per ulteriori informazioni sull'architettura delle due VM, consulta Architettura di sistema.

    VM TPU

    $ gcloud compute tpus tpu-vm create efficientnet-tutorial \
    --zone=${ZONE} \
    --accelerator-type=v3-8 \
    --version=tpu-vm-tf-2.16.1-pjrt
    

    Descrizioni flag comando

    zone
    La zona in cui prevedi di creare la Cloud TPU.
    accelerator-type
    Il tipo di acceleratore specifica la versione e le dimensioni della Cloud TPU che vuoi creare. Per maggiori informazioni sui tipi di acceleratori supportati per ogni versione di TPU, consulta Versioni TPU.
    version
    La versione software di Cloud TPU.

    Nodo TPU

    gcloud compute tpus execution-groups create \
    --name=efficientnet-tutorial \
    --zone=${ZONE} \
    --disk-size=300 \
    --machine-type=n1-standard-16 \
    --tf-version=2.12.0 \
    --accelerator-type=v3-8
    

    Descrizioni flag comando

    project
    L'ID del tuo progetto Google Cloud
    name
    Il nome della Cloud TPU da creare.
    zone
    La zona in cui prevedi di creare la Cloud TPU.
    disk-size
    Le dimensioni del disco rigido in GB della VM creata dal comando gcloud.
    machine-type
    Il tipo di macchina della VM di Compute Engine da creare.
    tf-version
    La versione di Tensorflow gcloud viene installata sulla VM.
    accelerator-type
    Il tipo di Cloud TPU da creare.

    Per maggiori informazioni sul comando gcloud, consulta la documentazione di riferimento gcloud.

  9. Se non hai eseguito automaticamente l'accesso all'istanza di Compute Engine, accedi eseguendo il comando ssh riportato di seguito. Quando hai eseguito l'accesso alla VM, il prompt della shell cambia da username@projectname a username@vm-name:

    VM TPU

    gcloud compute tpus tpu-vm ssh efficientnet-tutorial --zone=${ZONE}
    

    Nodo TPU

    gcloud compute ssh efficientnet-tutorial --zone=${ZONE}
    
  10. Imposta la variabile del nome di Cloud TPU.

    VM TPU

    (vm)$ export TPU_NAME=local
    

    Nodo TPU

    (vm)$ export TPU_NAME=efficientnet-tutorial
    
  11. Imposta le variabili dei bucket Cloud Storage

    Sostituisci bucket-name con il nome del tuo bucket Cloud Storage:

    (vm)$ export STORAGE_BUCKET=gs://bucket-name
    
    (vm)$ export MODEL_DIR=${STORAGE_BUCKET}/efficientnet-2x
    (vm)$ export DATA_DIR=gs://cloud-tpu-test-datasets/fake_imagenet
    

    L'applicazione di addestramento prevede che i tuoi dati di addestramento siano accessibili in Cloud Storage. L'applicazione di addestramento usa il tuo bucket Cloud Storage per archiviare i checkpoint durante l'addestramento.

  12. 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
    
  13. Installa i requisiti di TensorFlow.

    Il comando da utilizzare varia a seconda che tu stia utilizzando VM TPU o nodi TPU.

    VM TPU

    (vm)$ pip3 install -r /usr/share/tpu/models/official/requirements.txt
    

    Nodo TPU

    (vm)$ pip3 install --user -r /usr/share/models/official/requirements.txt
    
  14. Lo script di addestramento EfficientNet richiede pacchetti aggiuntivi (solo VM TPU). Installali ora:

    VM TPU

    (vm)$ sudo pip3 install tensorflow-addons
    (vm)$ sudo pip3 install tensorflow-model-optimization>=0.1.3
    
  15. Imposta alcune variabili di ambiente obbligatorie:

    VM TPU

    (vm)$ export PYTHONPATH="${PYTHONPATH}:/usr/share/tpu/models"
    

    Nodo TPU

    (vm)$ export PYTHONPATH="${PYTHONPATH}:/usr/share/models"
    

    Il modello EfficientNet è preinstallato sulla VM di Compute Engine.

  16. Passa alla directory in cui è archiviato il modello:

    VM TPU

    (vm)$ cd /usr/share/tpu/models/official/legacy/image_classification
    

    Nodo TPU

    (vm)$ cd /usr/share/models/official/legacy/image_classification
    
  17. Addestrare il modello. Utilizza un set di dati true_imagenet e addestra EfficientNet per un'epoca.

    (vm)$ python3 classifier_trainer.py \
      --mode=train_and_eval \
      --model_type=efficientnet \
      --dataset=imagenet \
      --tpu=${TPU_NAME} \
      --data_dir=${DATA_DIR} \
      --model_dir=${MODEL_DIR} \
      --config_file=configs/examples/efficientnet/imagenet/efficientnet-b0-tpu.yaml \
      --params_override="train.epochs=1, train_dataset.builder=records, validation_dataset.builder=records"
    

    Descrizioni flag comando

    mode
    Uno tra train, eval o train_and_eval.
    model_type
    Il tipo di modello. Ad esempio, efficientnet.
    dataset
    Il nome del set di dati. Ad esempio, imagenet.
    tpu
    Il nome della Cloud TPU su cui eseguire l'addestramento o la valutazione.
    data_dir
    Specifica il percorso di Cloud Storage per l'input di addestramento. In questo esempio, è impostato sul set di dati fake_imagenet.
    model_dir
    Il percorso di Cloud Storage in cui vengono archiviati i checkpoint e i riepiloghi durante l'addestramento del modello. Puoi riutilizzare una cartella esistente per caricare i checkpoint generati in precedenza e per archiviare ulteriori checkpoint, purché questi ultimi siano stati creati utilizzando una Cloud TPU delle stesse dimensioni e della stessa versione di TensorFlow.
    config_file
    Il percorso del file json contenente il modello EfficientNet preaddestrato. Questo file contiene l'architettura del modello.
    params_override
    Una stringa JSON che sostituisce i parametri di script predefiniti. Per ulteriori informazioni sui parametri dello script, consulta /usr/share/models/official/legacy/detection/main.py.

    Questa operazione addestrerà EfficientNet per 1 epoca e verrà completata su un nodo Cloud TPU v3-8 in circa 40 minuti. Al termine dello script di addestramento, viene visualizzato un output simile al seguente:

    Run stats:
    {
      'accuracy_top_1': 0.0010172526817768812,
      'eval_loss': 7.104171276092529,
      'loss': 7.113735675811768,
      'training_accuracy_top_1': 0.0009773431811481714,
      'step_timestamp_log': [
        'BatchTimestamp<batch_index: 0,
        timestamp: 1604960724.2224622>',
        'BatchTimestamp<batch_index: 1251,
        timestamp: 1604961281.3745298>'
      ],
      'train_finish_time': 1604961342.6359076,
      'avg_exp_per_second': 2071.493269569079
    }
    

    Per addestrare EfficientNet alla convergenza nel set di dati ImageNet, eseguilo per 90 epoche, come mostrato nello script seguente. Formazione e valutazione vengono svolte insieme. Ogni epoca ha 1251 passaggi per un totale di 112.590 passaggi di addestramento e 48 passaggi di valutazione.

    (vm)$ python3 classifier_trainer.py \
         --mode=train_and_eval \
         --model_type=efficientnet \
         --dataset=imagenet \
         --tpu=${TPU_NAME} \
         --data_dir=${DATA_DIR} \
         --model_dir=${MODEL_DIR} \
         --config_file=configs/examples/efficientnet/imagenet/efficientnet-b0-tpu.yaml \
         --params_override="train_dataset.builder=records, validation_dataset.builder=records"
    

    Descrizioni flag comando

    mode
    Uno tra train, eval o train_and_eval.
    model_type
    Il tipo di modello. Ad esempio, efficientnet e così via.
    dataset
    Il nome del set di dati. Ad esempio, imagenet.
    tpu
    Il nome della Cloud TPU per l'addestramento o la valutazione.
    data_dir
    Specifica il percorso di Cloud Storage per l'input di addestramento. In questo esempio, è impostato sul set di dati fake_imagenet.
    model_dir
    Il percorso di Cloud Storage in cui vengono archiviati i checkpoint e i riepiloghi durante l'addestramento del modello. Puoi riutilizzare una cartella esistente per caricare checkpoint generati in precedenza e per archiviare checkpoint aggiuntivi, purché questi ultimi siano stati creati utilizzando una Cloud TPU delle stesse dimensioni e versione di TensorFlow.
    config_file
    Il percorso del file JSON contenente il modello EfficientNet preaddestrato. Questo file contiene l'architettura del modello.
    params_override
    Una stringa JSON che sostituisce i parametri di script predefiniti. Per maggiori informazioni sui parametri dello script, consulta /usr/share/models/official/legacy/detection/main.py.

    Poiché l'addestramento è stato eseguito sul set di dati Fake_imagenet, i risultati di output non riflettono l'output effettivo che verrebbe visualizzato se l'addestramento venisse eseguito su un set di dati reale.

    Hai completato l'addestramento su un solo dispositivo. Segui questi passaggi per eliminare le risorse TPU attuali per un singolo dispositivo.

  18. Disconnettiti dall'istanza Compute Engine:

    (vm)$ exit
    

    Il prompt dovrebbe ora essere username@projectname, a indicare che ti trovi in Cloud Shell.

  19. Elimina la risorsa TPU.

    VM TPU

    $ gcloud compute tpus tpu-vm delete efficientnet-tutorial \
    --zone=${ZONE}
    

    Descrizioni flag comando

    zone
    La zona in cui si trovava la tua Cloud TPU.

    Nodo TPU

    $ gcloud compute tpus execution-groups delete efficientnet-tutorial \
    --tpu-only \
    --zone=${ZONE}
    

    Descrizioni flag comando

    tpu-only
    Elimina solo la Cloud TPU. La VM rimane disponibile.
    zone
    La zona che contiene la TPU da eliminare.

A questo punto, puoi concludere questo tutorial ed eseguire la pulizia oppure puoi continuare ed esplorare l'esecuzione del modello sui pod di Cloud TPU.

Scala il tuo modello con i pod di Cloud TPU

L'addestramento del modello sui pod di Cloud TPU può richiedere alcune modifiche allo script di addestramento. Per informazioni, consulta Addestramento sui pod TPU.

Addestramento pod di Cloud TPU

Questa sezione fornisce informazioni sulla configurazione di un bucket Cloud Storage e risorse Cloud TPU per l'addestramento dei pod.

  1. Apri una finestra di Cloud Shell.

    Apri Cloud Shell

  2. Crea una variabile per l'ID del progetto.

    export PROJECT_ID=project-id
    
  3. Configura Google Cloud CLI per utilizzare il progetto in cui vuoi creare Cloud TPU.

    gcloud config set project ${PROJECT_ID}
    

    La prima volta che esegui questo comando in una nuova VM Cloud Shell, viene visualizzata una pagina Authorize Cloud Shell. Fai clic su Authorize in fondo alla pagina per consentire a gcloud di effettuare chiamate API Google Cloud con le tue credenziali.

  4. Creare un account di servizio per il progetto Cloud TPU.

    Gli account di servizio consentono al servizio Cloud TPU di accedere ad altri servizi Google Cloud.

    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
    

  5. Crea un bucket Cloud Storage utilizzando il comando seguente o utilizza un bucket creato in precedenza per il tuo progetto:

    gsutil mb -p ${PROJECT_ID} -c standard -l europe-west4 gs://bucket-name
    

    Questo bucket Cloud Storage archivia i dati utilizzati 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 che hai configurato nel passaggio precedente. Se vuoi autorizzazioni più granulari, rivedi le autorizzazioni a livello di accesso.

    La località del bucket deve trovarsi nella stessa regione della VM TPU.

  6. Esporta variabili di configurazione TPU

    Imposta la zona in cui addestrerai il modello e archivierai tutti i dati relativi all'addestramento.

    $ export ZONE=europe-west4-a

  7. Prepara il set di dati o utilizza fake_imagenet

    ImageNet è un database di immagini. Le immagini nel database sono organizzate in una gerarchia, con centinaia e migliaia di immagini raffiguranti ogni nodo.

    L'addestramento predefinito dei pod accede a una versione dimostrativa del set di dati completo ImageNet, denominata fake_imagenet. Questa versione dimostrativa consente di testare l'addestramento dei pod, riducendo al contempo i requisiti di spazio di archiviazione e tempo generalmente associati all'addestramento di un modello sul database completo ImageNet.

    Il set di dati finger_imagenet è utile solo per capire come utilizzare una Cloud TPU e convalidare le prestazioni end-to-end. I valori relativi all'accuratezza e il modello salvato non saranno significativi.

    Se vuoi utilizzare il set di dati ImageNet completo, consulta Download, pre-elaborazione e caricamento del set di dati ImageNet.

  8. Avvia le risorse Cloud TPU utilizzando il comando gcloud.

    Il comando da utilizzare varia a seconda che tu stia utilizzando una VM TPU o un nodo TPU. Per ulteriori informazioni sull'architettura delle due VM, consulta Architettura di sistema. Per maggiori informazioni sul comando gcloud, consulta la documentazione di riferimento gcloud. Questo tutorial specifica un pod v3-32. Per altre opzioni relative ai pod, consulta Versioni TPU.

    VM TPU

    $ gcloud compute tpus tpu-vm create efficientnet-tutorial \
      --zone=${ZONE} \
      --accelerator-type=v3-32 \
      --version=tpu-vm-tf-2.16.1-pod-pjrt
    

    Descrizioni flag comando

    zone
    La zona in cui prevedi di creare la Cloud TPU.
    accelerator-type
    Il tipo di acceleratore specifica la versione e le dimensioni della Cloud TPU che vuoi creare. Per maggiori informazioni sui tipi di acceleratori supportati per ogni versione di TPU, consulta Versioni TPU.
    version
    La versione software di Cloud TPU.

    Nodo TPU

    (vm)$ gcloud compute tpus execution-groups  create --name=efficientnet-tutorial \
     --accelerator-type=v3-32  \
     --zone=${ZONE} \
     --tf-version=2.12.0
    

    Descrizioni flag comando

    name
    Il nome della Cloud TPU da creare.
    accelerator-type
    Il tipo di Cloud TPU da creare.
    zone
    La zona in cui prevedi di creare la Cloud TPU.
    tf-version
    La versione di Tensorflow gcloud viene installata sulla VM.
    tpu-only
    Crea solo una Cloud TPU. Per impostazione predefinita, il comando gcloud crea una VM e una Cloud TPU.
  9. Se non hai eseguito automaticamente l'accesso all'istanza di Compute Engine, accedi eseguendo il comando ssh riportato di seguito. Quando hai eseguito l'accesso alla VM, il prompt della shell cambia da username@projectname a username@vm-name:

    VM TPU

    $ gcloud compute tpus tpu-vm ssh efficientnet-tutorial --zone=${ZONE}
    

    Nodo TPU

    $ gcloud compute ssh efficientnet-tutorial --zone=${ZONE}
    

    Mentre continui con queste istruzioni, esegui ogni comando che inizia con (vm)$ nella finestra della sessione VM.

  10. Esporta variabili di configurazione TPU:

    (vm)$ export STORAGE_BUCKET=gs://bucket-name
    
    (vm)$ export TPU_NAME=efficientnet-tutorial
    (vm)$ export DATA_DIR=gs://cloud-tpu-test-datasets/fake_imagenet
    (vm)$ export MODEL_DIR=${STORAGE_BUCKET}/efficientnet-2x-pod
    

    L'applicazione di addestramento prevede che i tuoi dati di addestramento siano accessibili in Cloud Storage. L'applicazione di addestramento usa il tuo bucket Cloud Storage per archiviare i checkpoint durante l'addestramento.

  11. Installa i requisiti di TensorFlow.

    VM TPU

    (vm)$ pip3 install -r /usr/share/tpu/models/official/requirements.txt
    

    Nodo TPU

    (vm)$ pip3 install -r /usr/share/models/official/requirements.txt
    
  12. Imposta alcune variabili di ambiente obbligatorie:

    VM TPU

    (vm)$ export PYTHONPATH="/usr/share/tpu/models:${PYTHONPATH}"
    (vm)$ export TPU_LOAD_LIBRARY=0
    

    Nodo TPU

    (vm)$ export PYTHONPATH="${PYTHONPATH}:/usr/share/models"
    

    Il modello EfficientNet è preinstallato sulla VM di Compute Engine.

  13. Passa alla directory in cui è archiviato il modello:

    VM TPU

    (vm)$ cd /usr/share/tpu/models/official/legacy/image_classification/
    

    Nodo TPU

    (vm)$ cd /usr/share/models/official/legacy/image_classification/
    
  14. Addestrare il modello.

    (vm)$ python3 classifier_trainer.py \
    --mode=train_and_eval \
    --model_type=efficientnet \
    --dataset=imagenet \
    --tpu=${TPU_NAME} \
    --data_dir=${DATA_DIR} \
    --model_dir=${MODEL_DIR} \
    --config_file=configs/examples/efficientnet/imagenet/efficientnet-b0-tpu.yaml \
    --params_override="train.epochs=1, train_dataset.builder=records, validation_dataset.builder=records"
    

    Descrizioni flag comando

    mode
    Se impostato su train_and_eval, questo script addestra e valuta il modello. Se impostato su export_only, questo script esporta un modello salvato.
    model_type
    Il tipo di modello. Ad esempio, efficientnet e così via.
    dataset
    Il nome del set di dati. Ad esempio, imagenet.
    tpu
    Utilizza il nome specificato nella variabile TPU_NAME.
    data_dir
    Specifica il percorso di Cloud Storage per l'input di addestramento. In questo esempio, è impostato sul set di dati fake_imagenet.
    model_dir
    Il percorso di Cloud Storage in cui vengono archiviati i checkpoint e i riepiloghi durante l'addestramento del modello. Puoi riutilizzare una cartella esistente per caricare i checkpoint generati in precedenza e per archiviare ulteriori checkpoint, purché questi ultimi siano stati creati utilizzando una Cloud TPU delle stesse dimensioni e della stessa versione di TensorFlow.
    config_file
    Il percorso del file json contenente il modello EfficientNet preaddestrato. Questo file contiene l'architettura del modello.
    params_override
    Una stringa JSON che sostituisce i parametri di script predefiniti. Per ulteriori informazioni sui parametri dello script, consulta /usr/share/models/official/legacy/detection/main.py.

La procedura addestra il modello sul set di dati finger_imagenet a 1 epoca (312 passaggi di addestramento totali e 12 passaggi di valutazione). Questo addestramento richiede circa 2 minuti su una Cloud TPU v3-32. Al termine dell'addestramento e della valutazione, viene visualizzato un messaggio simile al seguente:

Run stats:
{
  'accuracy_top_1': 0.0009969075908884406,
  'eval_loss': 7.105168342590332,
  'loss': 7.114983081817627,
  'training_accuracy_top_1': 0.0010031675919890404,
  'step_timestamp_log': [
    'BatchTimestamp<batch_index: 0,
    timestamp: 1605041621.4997303>',
    'BatchTimestamp<batch_index: 312,
    timestamp: 1605041970.8633356>'
  ],
  'train_finish_time': 1605042032.2274444,
  'avg_exp_per_second': 3111.5120716536226
}

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.

  1. Disconnettiti dall'istanza di Compute Engine, se non lo hai già fatto:

    (vm)$ exit
    

    Il prompt dovrebbe ora essere username@projectname, a indicare che ti trovi in Cloud Shell.

  2. Elimina le risorse Cloud TPU e Compute Engine.

    VM TPU

    $ gcloud compute tpus tpu-vm delete efficientnet-tutorial \
    --zone=${ZONE}
    

    Nodo TPU

    $ gcloud compute tpus execution-groups delete efficientnet-tutorial \
    --zone=${ZONE}
    
  3. Verifica che le risorse siano state eliminate eseguendo gcloud compute tpus execution-groups list. L'eliminazione potrebbe richiedere diversi minuti. L'output del comando seguente non deve includere nessuna delle risorse TPU create in questo tutorial:

    $ gcloud compute tpus execution-groups list --zone=${ZONE}
    
  4. Elimina il bucket Cloud Storage utilizzando gsutil, come illustrato di seguito. Sostituisci bucket-name con il nome del tuo bucket Cloud Storage.

    $ gsutil rm -r gs://bucket-name
    

Passaggi successivi

I tutorial su TensorFlow Cloud TPU in genere addestrano il modello utilizzando un set di dati di esempio. I risultati di questo addestramento non sono utilizzabili per l'inferenza. Per utilizzare un modello per l'inferenza, puoi addestrare i dati su un set di dati disponibile pubblicamente o sul tuo set di dati. I modelli TensorFlow addestrati sulle Cloud TPU in genere richiedono che i set di dati siano in formato TFRecord.

Puoi utilizzare l'esempio dello strumento di conversione del set di dati per convertire un set di dati di classificazione delle immagini nel formato TFRecord. Se non utilizzi un modello di classificazione delle immagini, dovrai convertire manualmente il set di dati nel formato TFRecord. Per ulteriori informazioni, consulta TFRecord e tf.Example.

Ottimizzazione degli iperparametri

Per migliorare le prestazioni del modello con il set di dati, puoi ottimizzare gli iperparametri del modello. Puoi trovare informazioni sugli iperparametri comuni a tutti i modelli supportati da TPU su GitHub. Puoi trovare informazioni sugli iperparametri specifici nel codice sorgente di ciascun modello. Per ulteriori informazioni sull'ottimizzazione degli iperparametri, consulta Panoramica dell'ottimizzazione degli iperparametri e degli iperparametri.

Inferenza

Una volta addestrato il modello, puoi utilizzarlo per l'inferenza (detta anche previsione). Puoi utilizzare lo strumento di conversione di 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 di Cloud TPU v5e.

  • Scopri come addestrare e valutare utilizzando i tuoi dati al posto dei set di dati fake_imagenet o ImageNet seguendo il tutorial sulla conversione del set di dati. Il tutorial spiega come utilizzare lo script di esempio del convertitore di dati per la classificazione delle immagini per convertire un set di dati non elaborato per la classificazione delle immagini in TFRecord utilizzabili dai modelli di Cloud TPU Tensorflow.

  • Esegui una colab di Cloud TPU che dimostri come eseguire un modello di classificazione delle immagini utilizzando i tuoi dati delle immagini.

  • Esplora gli altri tutorial su Cloud TPU.

  • Scopri come utilizzare gli strumenti di monitoraggio TPU in TensorBoard.