Trasformatore di addestramento su Cloud TPU (TF 2.x)

Se non hai dimestichezza con Cloud TPU, ti consigliamo vivamente di consultare la guida rapida per scoprire come creare una TPU e una VM di Compute Engine.

Questo tutorial mostra come addestrare un modello di Transformer su Cloud TPU. Transformer è un'architettura di rete neurale che risolve la sequenza di problemi di sequenza utilizzando meccanismi di attenzione. A differenza dei tradizionali modelli seq2seq neurali, Transformer non prevede connessioni ricorrenti. Il meccanismo di attenzione apprende le dipendenze tra i token in due sequenze. Poiché i valori di attenzione vengono applicati a tutti i token nelle sequenze, il modello Transformer è in grado di acquisire facilmente le dipendenze a lunga distanza.

La struttura complessiva del trasformatore segue lo schema standard del codificatore. Il codificatore utilizza l'autoattenzione per calcolare una rappresentazione della sequenza di input. Il decodificatore genera la sequenza di output un token alla volta, prendendo in considerazione l'output del codificatore e i token emessi dal decodificatore precedente.

Il modello applica anche incorporamenti sui token di input e di output e aggiunge una codifica posizionale costante. La codifica posizionale aggiunge informazioni sulla posizione di ciascun token.

Obiettivi

  • Crea un bucket Cloud Storage per contenere l'output del set di dati e il modello.
  • Scarica ed elabora il set di dati utilizzato per addestrare il modello.
  • Esegui il job di addestramento.
  • Verifica i risultati dell'output.

Costi

Questo tutorial utilizza i seguenti componenti fatturabili di Google Cloud:

  • Compute Engine
  • Cloud TPU

Per generare una stima dei costi in base all'utilizzo previsto, utilizza il Calcolatore prezzi. I nuovi utenti di Google Cloud possono beneficiare di una prova gratuita.

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 dei progetti in Google Cloud Console, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  3. Assicurati che la fatturazione sia attivata per il tuo progetto Cloud. Scopri come verificare se la fatturazione è abilitata su un progetto.

  4. Nella pagina del selettore dei progetti in Google Cloud Console, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  5. Assicurati che la fatturazione sia attivata per il tuo progetto Cloud. Scopri come verificare se la fatturazione è abilitata su un progetto.

  6. Questa procedura dettagliata utilizza componenti fatturabili di Google Cloud. Consulta la pagina Prezzi di Cloud TPU per una stima dei costi. Assicurati di pulire le risorse che crei quando hai finito di utilizzarle per evitare addebiti inutili.

Addestramento dispositivo Cloud TPU singolo

Questa sezione fornisce informazioni sulla configurazione delle bucket Cloud Storage, delle VM e delle risorse Cloud TPU per l'addestramento di singoli dispositivi.

  1. Apri una finestra di Cloud Shell.

    Apri Cloud Shell

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

    export PROJECT_ID=project-id
  3. Configura l'interfaccia a riga di comando di Google Cloud per utilizzare il progetto in cui vuoi creare una Cloud TPU.

    gcloud config set project ${PROJECT_ID}

    La prima volta che esegui questo comando in una nuova VM di 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 GCP con le tue credenziali.

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

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

    $ gcloud beta services identity create --service tpu.googleapis.com --project $PROJECT_ID
    

    Il comando restituisce un account di servizio Cloud TPU con il formato seguente:

    service-PROJECT_NUMBER@cloud-tpu.iam.gserviceaccount.com
    

  5. Crea un bucket Cloud Storage utilizzando il seguente comando:

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

    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 per configurare la TPU configura anche le autorizzazioni predefinite per l'account di servizio Cloud TPU configurato nel passaggio precedente. Se vuoi autorizzazioni più granulari, consulta le autorizzazioni per il livello di accesso.

Prepara il set di dati

Per ridurre i costi complessivi, consigliamo di utilizzare una VM di Compute Engine per eseguire download o pre-elaborazione dei dati a lunga esecuzione.

  1. Apri una finestra di Cloud Shell.

    Apri Cloud Shell

  2. Crea una VM di Compute Engine per scaricare e pre-elaborare i dati.

    gcloud compute tpus execution-groups create --name=transformer-tutorial \
      --disk-size=300 \
      --machine-type=n1-standard-8 \
      --zone=europe-west4-a \
      --tf-version=2.8.0 \
      --vm-only
  3. Se non riesci a connetterti automaticamente all'istanza di Compute Engine, esegui l'accesso eseguendo questo comando ssh. Dopo aver eseguito l'accesso alla VM, il prompt di shell cambia da username@projectname a username@vm-name:

    gcloud compute ssh transformer-tutorial --zone=europe-west4-a

    Mentre continui a seguire queste istruzioni, esegui ciascun comando che inizia con (vm)$ nella tua istanza di Compute Engine.

  4. Esporta variabili di configurazione TPU

    Esporta l'ID progetto, il nome che vuoi utilizzare per le risorse TPU e la zona in cui imparerai ad addestrare il modello e ad archiviare tutti i dati relativi all'addestramento.

    $ export TPU_NAME=transformer-tutorial
    $ export ZONE=europe-west4-a

  5. Esporta le variabili del bucket Cloud Storage. Sostituisci bucket-name con il nome del tuo bucket:

    (vm)$ export STORAGE_BUCKET=gs://bucket-name
    (vm)$ export GCS_DATA_DIR=${STORAGE_BUCKET}/data/transformer
    (vm)$ export DATA_DIR=${HOME}/transformer/data
    
  6. Installa i requisiti di TensorFlow e imposta la variabile di ambiente PYTHONPATH.

    (vm)$ pip3 install -r /usr/share/models/official/requirements.txt
    (vm)$ export PYTHONPATH="${PYTHONPATH}:/usr/share/models"
    
  7. Passa alla directory in cui è memorizzato il modello:

    (vm)$ cd /usr/share/models/official/legacy/transformer
  8. Scarica ed esegui il pre-elaborazione dei set di dati

    (vm)$ python3 data_download.py --data_dir=${DATA_DIR}
    (vm)$ gsutil cp -r ${DATA_DIR} ${GCS_DATA_DIR}
    

    data_download.py scarica e pre-elabora i set di dati WMT di addestramento e valutazione. Una volta scaricati ed estratti i dati, i dati di addestramento vengono utilizzati per generare un vocabolario di token secondari. Le stringhe di valutazione e di addestramento vengono tokenizzate e i dati risultanti vengono suddivisi in partizionati, ordinati e salvati come TFRecord.

    Vengono scaricati 1,75 GB di dati compressi. In totale, i file non elaborati (file compressi, estratti e combinati) occupano 8, 4 GB di spazio su disco. I file TFRecord e il vocabolario risultanti sono 722 MB. Lo script salva 460.000 casi e richiede circa 40 minuti per essere eseguiti.

  9. Pulisci le risorse VM

    Dopo aver convertito il set di dati in TFRecords e copiato nel DATA_DIR nel tuo bucket Cloud Storage, puoi eliminare l'istanza di Compute Engine.

    Disconnetti dall'istanza Compute Engine:

    (vm)$ exit
    

    Il tuo prompt dovrebbe ora essere username@projectname, a indicare che sei di nuovo in Cloud Shell.

  10. Elimina la tua istanza di Compute Engine.

    $ gcloud compute instances delete transformer-tutorial \
        --zone=europe-west4-a

Addestra un modello di traduzione inglese-tedesco su una singola Cloud TPU

  1. Avvia una VM di Compute Engine e Cloud TPU utilizzando il comando gcloud. Il comando da utilizzare varia a seconda che tu stia utilizzando VM TPU o nodi TPU. Per ulteriori informazioni sulla due architetture VM, consulta la sezione Architettura di sistema.

    VM TPU

    $ gcloud alpha compute tpus tpu-vm create transformer-tutorial \
     --zone=europe-west4-a \
     --accelerator-type=v3-8 \
     --version=tpu-vm-tf-2.8.0
    

    Descrizioni flag comando

    zone
    La zona in cui prevedi di creare Cloud TPU.
    accelerator-type
    Il tipo di Cloud TPU da creare.
    version
    La versione del software Cloud TPU.

    Nodo TPU

    $ gcloud compute tpus execution-groups create \
    --name=transformer-tutorial \
    --disk-size=300 \
    --machine-type=n1-standard-8 \
    --zone=europe-west4-a \
    --tf-version=2.8.0
    

    Descrizioni flag comando

    disk-size
    La dimensione del disco per la VM in GB.
    machine_type
    Il tipo di macchina della VM creata dal comando gcloud.
    tf-version
    La versione di Tensorflow gcloud compute tpus execution-groups viene installata sulla VM.
  2. Se non hai eseguito automaticamente l'accesso all'istanza Compute Engine, esegui l'accesso eseguendo questo comando ssh.

    VM TPU

    gcloud alpha compute tpus tpu-vm ssh transformer-tutorial --zone=europe-west4-a
    

    Nodo TPU

    gcloud compute ssh transformer-tutorial --zone=europe-west4-a
    
  3. Esporta le variabili relative all'archiviazione dei dati.

    (vm)$ export STORAGE_BUCKET=gs://bucket-name
    (vm)$ export GCS_DATA_DIR=${STORAGE_BUCKET}/data/transformer
    (vm)$ export DATA_DIR=${HOME}/transformer/data
    (vm)$ export PARAM_SET=big
    (vm)$ export MODEL_DIR=${STORAGE_BUCKET}/transformer/model_${PARAM_SET}
    
  4. Installare i requisiti di Tensorflow.

    VM TPU

    (vm)$ pip3 install -r /usr/share/tpu/models/official/requirements.txt
    (vm)$  export PYTHONPATH="/usr/share/tpu/models:$PYTHONPATH"
    

    Nodo TPU

    (vm)$ pip3 install --user -r /usr/share/models/official/requirements.txt
    (vm)$ export PYTHONPATH="/usr/share/models:$PYTHONPATH"
    
  5. Esporta una variabile Cloud TPU.

    VM TPU

    (vm)$ export TPU_NAME=local

    Nodo TPU

    (vm)$ export TPU_NAME=transformer-tutorial

  6. Passa alla directory di addestramento.

    VM TPU

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

    Nodo TPU

    (vm)$ cd /usr/share/models/official/legacy/transformer
  7. Esegui lo script di addestramento:

    (vm)$ python3 transformer_main.py \
        --tpu=${TPU_NAME} \
        --model_dir=${MODEL_DIR} \
        --data_dir=${GCS_DATA_DIR} \
        --vocab_file=${GCS_DATA_DIR}/vocab.ende.32768 \
        --bleu_source=${GCS_DATA_DIR}/newstest2014.en \
        --bleu_ref=${GCS_DATA_DIR}/newstest2014.de \
        --batch_size=6144 \
        --train_steps=2000 \
        --static_batch=true \
        --use_ctl=true \
        --param_set=big \
        --max_length=64 \
        --decode_batch_size=32 \
        --decode_max_length=97 \
        --padded_decode=true \
        --distribution_strategy=tpu
    

    Descrizioni flag comando

    tpu
    Il nome della Cloud TPU. Viene impostata specificando la variabile di ambiente (TPU_NAME).
    model_dir
    Il bucket Cloud Storage, in cui i punti di controllo e i riepiloghi vengono archiviati durante l'addestramento. Puoi utilizzare una cartella esistente per caricare i punti di controllo generati in precedenza creati su una TPU delle stesse dimensioni e della stessa versione di TensorFlow.
    data_dir
    Il percorso Cloud Storage di input dell'addestramento. È impostato sul set di dati false_imagenet in questo esempio.
    vocab_file
    Un file contenente il vocabolario per la traduzione.
    bleu_source
    Un file contenente le frasi di origine per la traduzione.
    bleu_ref
    Un file contenente il riferimento per le frasi di traduzione.
    train_steps
    Il numero di passaggi per addestrare il modello. Un passaggio consente di elaborare un gruppo di dati. Questo include sia un pass in avanti che una propagazione della schiena.
    batch_size
    Le dimensioni del batch di addestramento.
    static_batch
    Indica se i batch nel set di dati hanno forme statiche.
    use_ctl
    Indica se lo script viene eseguito con un loop di addestramento personalizzato.
    param_set
    Il parametro impostato da utilizzare durante la creazione e l'addestramento del modello. I parametri definiscono la forma di input, la configurazione del modello e altre impostazioni.
    max_length
    La lunghezza massima di un esempio nel set di dati.
    decode_batch_size
    La dimensione globale del batch utilizzata per la decodifica automatica di Transformer su Cloud TPU.
    decode_max_length
    La lunghezza massima della sequenza dei dati di decodifica/eval. Questo viene utilizzato dalla decodifica automatica di Transformer su una Cloud TPU per ridurre al minimo la quantità di spaziatura interna richiesta.
    padded_decode
    Indica se la decodifica in regressione automatica viene eseguita con i dati di input aggiunti a decode_max_length. Tor TPU/XLA-GPU in esecuzione, questo flag deve essere impostato a causa del requisito della forma statica.
    distribution_strategy
    Per addestrare il modello ResNet su una Cloud TPU, imposta distribution_strategy su tpu.

    Per impostazione predefinita, il modello valuta ogni 2000 passi. Per addestrare la convergenza, imposta train_steps su 200000. Puoi aumentare il numero di passaggi di addestramento o specificare la frequenza di esecuzione delle valutazioni impostando questi parametri:

    • --train_steps: imposta il numero totale di passaggi di addestramento da eseguire.
    • --steps_between_evals: numero di passaggi di addestramento da eseguire tra una valutazione e l'altra.

    L'addestramento e la valutazione richiedono circa 7 minuti su una Cloud TPU v3-8. Al termine della formazione e della valutazione, viene visualizzato un messaggio simile al seguente:

    INFO:tensorflow:Writing to file /tmp/tmpej76vasn
    I0218 20:07:26.020797 140707963950912 translate.py:184] Writing to file /tmp/tmpej76vasn
    I0218 20:07:35.099256 140707963950912 transformer_main.py:118] Bleu score (uncased): 0.99971704185009
    I0218 20:07:35.099616 140707963950912 transformer_main.py:119] Bleu score (cased): 0.9768599644303322
    

    Hai completato la formazione su un solo dispositivo. Per eliminare le risorse TPU su un singolo dispositivo, procedi nel seguente modo.

  8. Disconnetti dall'istanza Compute Engine:

    (vm)$ exit
    

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

  9. Elimina la risorsa TPU.

    VM TPU

    $ gcloud alpha compute tpus tpu-vm delete transformer-tutorial \
    --zone=europe-west4-a
    

    Descrizioni flag comando

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

    Nodo TPU

    $ gcloud compute tpus execution-groups delete transformer-tutorial \
    --zone=europe-west4-a
    

    Descrizioni flag comando

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

A questo punto, puoi concludere questo tutorial e ripulire oppure continuare ed esplorare il modello sui pod di Cloud TPU.

Scala il tuo modello con i pod di Cloud TPU

L'addestramento del tuo modello su pod di Cloud TPU potrebbe richiedere alcune modifiche allo script di addestramento. Per informazioni, consulta la pagina relativa all'addestramento sui pod di TPU.

Le seguenti istruzioni presuppongono che tu abbia già aperto Cloud Shell, configurato il tuo progetto TPU e creato un bucket Cloud Storage come spiegato nell'inizio del tutorial.

Addestramento pod TPU

  1. Apri una finestra di Cloud Shell.

    Apri Cloud Shell

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

    export PROJECT_ID=project-id
    
  3. Configura l'interfaccia a riga di comando di Google Cloud per utilizzare il progetto in cui vuoi creare una Cloud TPU.

    gcloud config set project ${PROJECT_ID}
    

    La prima volta che esegui questo comando in una nuova VM di 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 GCP con le tue credenziali.

  4. Crea 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 formato seguente:

    service-PROJECT_NUMBER@cloud-tpu.iam.gserviceaccount.com
    

  5. Crea un bucket Cloud Storage utilizzando il comando seguente, oppure utilizza un bucket che hai creato in precedenza per il tuo progetto:

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

    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 configurato nel passaggio precedente. Se vuoi autorizzazioni più granulari, consulta le autorizzazioni per il livello di accesso.

Avvia le risorse VM TPU

  1. Avvia un pod di TPU usando il comando gcloud. Questo tutorial specifica un pod v3-32. Per altre opzioni pod, consulta la pagina dei tipi di TPU disponibili.

    VM TPU

    $ gcloud alpha compute tpus tpu-vm create transformer-tutorial \
    --zone=europe-west4-a \
    --accelerator-type=v3-32 \
    --version=tpu-vm-tf-2.8.0-pod
    

    Descrizioni flag comando

    zone
    La zona in cui prevedi di creare Cloud TPU.
    accelerator-type
    Il tipo di Cloud TPU da creare.
    version
    La versione del software Cloud TPU.

    Nodo TPU

    (vm)$ gcloud compute tpus execution-groups create \
    --name=transformer-tutorial \
    --accelerator-type=v3-32 \
    --zone=europe-west4-a \
    --tf-version=2.8.0
    

    Descrizioni flag comando

    tpu-only
    Crea solo Cloud TPU. Per impostazione predefinita, il comando gcloud compute tpus execution-groups crea una VM e una Cloud TPU.
    accelerator-type
    Il tipo di Cloud TPU da creare.
    zone
    La zona in cui prevedi di creare Cloud TPU. Deve essere la stessa zona utilizzata per la VM di Compute Engine. Ad esempio, europe-west4-a.
    tf-version
    La versione di Tensorflow gcloud viene installata sulla VM.
    name
    Il nome della Cloud TPU da creare.
  2. Se non hai eseguito automaticamente l'accesso all'istanza Compute Engine, esegui l'accesso eseguendo questo comando ssh. Dopo aver eseguito l'accesso alla VM, il prompt di shell cambia da username@projectname a username@vm-name:

    VM TPU

    gcloud alpha compute tpus tpu-vm ssh transformer-tutorial --zone=europe-west4-a
    

    Nodo TPU

    gcloud compute ssh transformer-tutorial --zone=europe-west4-a
    

Installare Tensorflow e le dipendenze

  1. Installa i requisiti di TensorFlow.

      (vm)$ pip3 install -r /usr/share/tpu/models/official/requirements.txt
      (vm)$  export PYTHONPATH="/usr/share/tpu/models:$PYTHONPATH"
      

  2. Esporta la variabile PYTHONPATH.

    VM TPU

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

    Nodo TPU

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

Configurare e avviare l'addestramento del pod

  1. Esporta le variabili di configurazione di Cloud TPU:

    (vm)$ export STORAGE_BUCKET=gs://bucket-name
    (vm)$ export GCS_DATA_DIR=${STORAGE_BUCKET}/data/transformer
    (vm)$ export DATA_DIR=${HOME}/transformer/data
    (vm)$ export PARAM_SET=big
    (vm)$ export TPU_LOAD_LIBRARY=0
    (vm)$ export RESNET_PRETRAIN_DIR=gs://cloud-tpu-checkpoints/retinanet/resnet50-checkpoint-2018-02-07
    (vm)$ export TRAIN_FILE_PATTERN=${DATA_DIR}/train-*
    (vm)$ export EVAL_FILE_PATTERN=${DATA_DIR}/val-*
    (vm)$ export VAL_JSON_FILE=${DATA_DIR}/instances_val2017.json
    (vm)$ export MODEL_DIR=${STORAGE_BUCKET}/transformer/model_${PARAM_SET}_pod
    (vm)$ export TPU_NAME=transformer-tutorial
    
  2. Passa alla directory di addestramento:

    VM TPU

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

    Nodo TPU

    (vm)$ cd /usr/share/models/official/legacy/transformer
  3. Esegui lo script di addestramento:

    (vm)$ python3 transformer_main.py \
        --tpu=${TPU_NAME} \
        --model_dir=${MODEL_DIR} \
        --data_dir=${GCS_DATA_DIR} \
        --vocab_file=${GCS_DATA_DIR}/vocab.ende.32768 \
        --bleu_source=${GCS_DATA_DIR}/newstest2014.en \
        --bleu_ref=${GCS_DATA_DIR}/newstest2014.de \
        --batch_size=6144 \
        --train_steps=2000 \
        --static_batch=true \
        --use_ctl=true \
        --param_set=big \
        --max_length=64 \
        --decode_batch_size=32 \
        --decode_max_length=97 \
        --padded_decode=true \
        --distribution_strategy=tpu

    Descrizioni flag comando

    tpu
    Il nome della Cloud TPU. Viene impostata specificando la variabile di ambiente (TPU_NAME).

     <dt><code>model_dir</code></dt>
     <dd>The Cloud Storage bucket where checkpoints and summaries are
       stored during training. You can use an existing folder to load previously
       generated checkpoints created on a TPU of the same size and
       TensorFlow version.</dd>
    
     <dt><code>data_dir</code></dt>
     <dd>The Cloud Storage path of training input. It is set to the
       fake_imagenet dataset in this example.</dd>
    
     <dt><code>vocab_file</code></dt>
     <dd>A file that contains the vocabulary for translation.</dd>
    
     <dt><code>bleu_source</code></dt>
     <dd>A file that contains source sentences for translation.</dd>
    
     <dt><code>bleu_ref</code></dt>
     <dd>A file that contains the reference for the translation sentences.</dd>
    
     <dt><code>train_steps</code></dt>
     <dd>The number of steps to train the model. One step processes one batch
       of data. This includes both a forward pass and back propagation.</dd>
    
     <dt><code>batch_size</code></dt>
     <dd>The training batch size.</dd>
    
     <dt><code>static_batch</code></dt>
     <dd>Specifies whether the batches in the dataset has static shapes.</dd>
    
     <dt><code>use_ctl</code></dt>
     <dd>Specifies whether the script runs with a custom training loop.</dd>
    
     <dt><code>param_set</code></dt>
     <dd>The parameter set to use when creating and training the model. The
      parameters define the input shape, model configuration, and other
      settings.</dd>
    
     <dt><code>max_length</code></dt>
     <dd>The maximum length of an example in the dataset.</dd>
    
     <dt><code>decode_batch_size</code></dt>
     <dd>The global batch size used for Transformer auto-regressive decoding
       on a Cloud TPU.</dd>
    
     <dt><code>decode_max_length</code></dt>
     <dd>The maximum sequence length of the decode/eval data. This is used by
       the Transformer auto-regressive decoding on a Cloud TPU to minimize
       the amount of required data padding.</dd>
    
     <dt><code>padded_decode</code></dt>
     <dd>Specifies whether the auto-regressive decoding runs with input data
       padded to the decode_max_length. Tor TPU/XLA-GPU runs, this flag must
       be set due to the static shape requirement.</dd>
    
     <dt><code>distribution_strategy</code></dt>
     <dd>To train the ResNet model on a Cloud TPU, set <code>distribution_strategy</code>
       to <code>tpu</code>.</dd>
    </dl>
    

Per impostazione predefinita, il modello valuta ogni 2000 passi. Per addestrare la convergenza, imposta train_steps su 200000. Puoi aumentare il numero di passaggi di addestramento o specificare la frequenza di esecuzione delle valutazioni impostando questi parametri:

  • --train_steps: imposta il numero totale di passaggi di addestramento da eseguire.
  • --steps_between_evals: numero di passaggi di addestramento da eseguire tra una valutazione e l'altra.

L'addestramento e la valutazione richiedono circa 7 minuti su una Cloud TPU v3-32. Al termine dell'addestramento e della valutazione, vengono visualizzati messaggi simili ai seguenti:

I0415 00:28:33.108577 140097002981184 transformer_main.py:311] Train Step: 2000/2000 / loss = 5.139615058898926
I0415 00:28:33.108953 140097002981184 keras_utils.py:148] TimeHistory: 120.39 seconds, 102065.86 examples/second between steps 0 and 2000
.
.
.
I0415 00:32:01.785520 140097002981184 transformer_main.py:116] Bleu score (uncased): 0.8316259831190109
I0415 00:32:01.786150 140097002981184 transformer_main.py:117] Bleu score (cased): 0.7945530116558075

Questo script di addestramento viene addestrato per 2000 passi ed esegue la valutazione ogni 2000 passi. Questa particolare addestramento e valutazione richiede circa 8 minuti su un pod Cloud TPU v3-32. Al termine della formazione e della valutazione, viene visualizzato un messaggio simile al seguente:

INFO:tensorflow:Writing to file /tmp/tmpdmlanxcf
I0218 21:09:19.100718 140509661046592 translate.py:184] Writing to file /tmp/tmpdmlanxcf
I0218 21:09:28.043537 140509661046592 transformer_main.py:118] Bleu score (uncased): 1.799112930893898
I0218 21:09:28.043911 140509661046592 transformer_main.py:119] Bleu score (cased): 1.730366237461567

Per addestrare la convergenza, imposta train_steps su 200000. Puoi aumentare il numero di passaggi di addestramento o specificare la frequenza di esecuzione delle valutazioni impostando questi parametri:

  • --train_steps: imposta il numero totale di passaggi di addestramento da eseguire.
  • --steps_between_evals: numero di passaggi di addestramento da eseguire tra le valutazioni.

Al termine della formazione e della valutazione, viene visualizzato un messaggio simile al seguente:

0509 00:27:59.984464 140553148962624 translate.py:184] Writing to file /tmp/tmp_rk3m8jp
I0509 00:28:11.189308 140553148962624 transformer_main.py:119] Bleu score (uncased): 1.3239131309092045
I0509 00:28:11.189623 140553148962624 transformer_main.py:120] Bleu score (cased): 1.2855342589318752

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 l'hai ancora fatto:

    (vm)$ exit
    

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

  2. Elimina le risorse Cloud TPU e Compute Engine. Il comando da utilizzare per eliminare le risorse dipende dalla presenza o meno di VM TPU o nodi TPU. Per ulteriori informazioni, consulta la sezione Architettura di sistema.

    VM TPU

    $ gcloud alpha compute tpus tpu-vm delete transformer-tutorial \
    --zone=europe-west4-a
    

    Nodo TPU

    $ gcloud compute tpus execution-groups delete transformer-tutorial \
    --zone=europe-west4-a
    
  3. Esegui gsutil come mostrato, sostituendo bucket-name con il nome del bucket Cloud Storage creato per questo tutorial:

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

Passaggi successivi

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

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

Ottimizzazione degli iperparametri

Per migliorare le prestazioni del modello con il tuo set di dati, puoi regolare gli iperparametri di questo modello. Puoi trovare informazioni sugli iperparametri in comune in tutti i modelli supportati da TPU su GitHub. Puoi trovare informazioni sugli iperparametri specifici del modello nel codice sorgente di ciascun modello. Per ulteriori informazioni sull'ottimizzazione degli iperparametri, consulta Panoramica dell'ottimizzazione degli iperparametri, Utilizzo del servizio di ottimizzazione degli iperparametri e Perfezionamento degli iperparametri.

Inferenza

Dopo aver addestrato il modello, puoi utilizzarlo per inferenza (chiamato anche previsione). AI Platform è una soluzione basata su cloud per lo sviluppo, l'addestramento e il deployment di modelli di machine learning. Una volta eseguito il deployment di un modello, puoi utilizzare il servizio AI Platform Prediction.