Pretraining Wav2Vec2 su Cloud TPU con PyTorch

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Questo tutorial mostra come preaddestrare il modello Wav2Vec2 di FairSeq su un dispositivo Cloud TPU con PyTorch. Puoi applicare lo stesso pattern ad altri modelli di classificazione delle immagini ottimizzati per TPU che utilizzano PyTorch e il set di dati ImageNet.

Il modello di questo tutorial si basa sul documento wav2vec 2.0: A Framework for Self-Supervised Learning of Speechpresentations .

Obiettivi

  • Crea e configura l'ambiente PyTorch.
  • Scarica dati di LibriSpeech open source.
  • Eseguire il job di addestramento.

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, controlla che il tuo progetto Google Cloud sia configurato correttamente.

  1. Nella pagina del selettore dei progetti in Google Cloud Console, seleziona o crea un progetto. Nota: se non hai intenzione di mantenere le risorse che crei in questa procedura, crea un progetto anziché selezionarne uno esistente. Dopo aver completato questi passaggi, puoi eliminare il progetto rimuovendo tutte le risorse associate.
  2. Vai alla pagina del selettore di progetti e assicurati che la fatturazione sia attivata per il tuo progetto Cloud. Scopri come verificare che la fatturazione sia abilitata per il tuo progetto.
  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. Controlla la pagina dei prezzi di Cloud TPU per stimare i costi. Assicurati di ripulire le risorse che crei quando le hai completate per evitare addebiti inutili.

Configura un'istanza di Compute Engine

  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 in modo da 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.

  4. Da Cloud Shell, avvia la risorsa Compute Engine richiesta per questo tutorial.

    gcloud compute instances create wav2vec2-tutorial \
      --zone=us-central1-a \
      --machine-type=n1-standard-64 \
      --image-family=torch-xla \
      --image-project=ml-images  \
      --boot-disk-size=200GB \
      --scopes=https://www.googleapis.com/auth/cloud-platform
    
  5. Connettiti alla nuova istanza di Compute Engine.

    gcloud compute ssh wav2vec2-tutorial --zone=us-central1-a
    

Avvia una risorsa Cloud TPU

  1. Nella macchina virtuale Compute Engine, imposta la versione PyTorch.

    (vm) $ export PYTORCH_VERSION=1.13
    
  2. Avvia una risorsa Cloud TPU utilizzando il comando seguente:

    (vm) $ gcloud compute tpus create wav2vec2-tutorial \
    --zone=us-central1-a \
    --network=default \
    --version=pytorch-1.13 \
    --accelerator-type=v3-8
    
  3. Identifica l'indirizzo IP della risorsa Cloud TPU eseguendo il comando seguente:

    (vm) $ gcloud compute tpus describe wav2vec2-tutorial --zone=us-central1-a
    

    Questo comando mostrerà le informazioni sulla TPU. Cerca la riga con l'etichetta ipAddress. Sostituisci ip-address con l'indirizzo IP nel seguente comando:

    (vm) $ export TPU_IP_ADDRESS=ip-address
    (vm) $ export XRT_TPU_CONFIG="tpu_worker;0;$TPU_IP_ADDRESS:8470"
    

Creare e configurare l'ambiente PyTorch

  1. Avvia un ambiente conda.

    (vm) $ conda activate torch-xla-1.13
    
  2. Configura le variabili di ambiente per la risorsa Cloud TPU.

Scaricare e preparare i dati

Visita il sito web di OpenSLR per vedere i set di dati alternativi che potresti utilizzare in questa attività. In questo tutorial, utilizzeremo dev-clean.tar.gz, in quanto ha il tempo di pre-elaborazione più breve.

  1. Wav2Vec2 richiede alcune dipendenze, installale ora.

    (vm) $ pip install omegaconf hydra-core soundfile
    (vm) $ sudo apt-get install libsndfile-dev
    
  2. Scarica il set di dati.

    (vm) $ curl https://www.openslr.org/resources/12/dev-clean.tar.gz --output dev-clean.tar.gz
    
  3. Estrai i file compressi. I tuoi file sono archiviati nella cartella LibriSpeech.

    (vm) $ tar xf dev-clean.tar.gz
    
  4. Scarica e installa l'ultimo modello fairseq.

    (vm) $ git clone --recursive https://github.com/pytorch/fairseq.git
    (vm) $ cd fairseq
    (vm) $ pip install --editable .
    (vm) $ cd -
  5. Prepara il set di dati. Questo script crea una cartella denominata manifest/ con il puntatore del mouse sui dati non elaborati (in LibriSpeech/).

    (vm) $ python fairseq/examples/wav2vec/wav2vec_manifest.py LibriSpeech/ --dest manifest/

Esegui il job di addestramento

  1. Esegui il modello sui dati di LibriSpeech. Sono necessarie circa 2 ore per l'esecuzione di questo script.

    (vm) $ fairseq-hydra-train \
    task.data=${HOME}/manifest \
    optimization.max_update=400000 \
    dataset.batch_size=4 \
    common.log_format=simple \
    --config-dir fairseq/examples/wav2vec/config/pretraining   \
    --config-name wav2vec2_large_librivox_tpu.yaml
    

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 tuo prompt dovrebbe ora essere user@projectname, a indicare che ti trovi in Cloud Shell.

  2. In Cloud Shell, utilizza Google Cloud CLI per eliminare l'istanza VM di Compute Engine e la TPU:

    $ gcloud compute tpus delete wav2vec2-tutorial --zone=us-central1-a
    

Passaggi successivi

Scalabilità sui pod Cloud TPU

Fai riferimento al tutorial sui modelli PyTorch di addestramento sui pod di Cloud TPU per scalare l'attività di pre-addestramento di questo tutorial sui potenti pod di Cloud TPU.

Prova i colab PyTorch: