Questo tutorial mostra come preaddestrare RobeRTa di FairSeq su una Cloud TPU. In particolare, segue il tutorial di FairSeq, preaddestrando il modello nel set di dati wikitext-103 pubblico.
Obiettivi
- Creare e configurare l'ambiente PyTorch
- Prepara il set di dati
- Eseguire il job di addestramento
- Verificare di poter visualizzare 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.
Prima di iniziare
Prima di iniziare questo tutorial, verifica che il tuo progetto Google Cloud sia configurato correttamente.
- 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.
-
Nella pagina del selettore dei progetti in Google Cloud Console, seleziona o crea un progetto Google Cloud.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Cloud. Scopri come verificare se la fatturazione è abilitata su un progetto.
-
Nella pagina del selettore dei progetti in Google Cloud Console, seleziona o crea un progetto Google Cloud.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Cloud. Scopri come verificare se la fatturazione è abilitata su un progetto.
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.
Configurare un'istanza di Compute Engine
Apri una finestra di Cloud Shell.
Crea una variabile per l'ID del tuo progetto.
export PROJECT_ID=project-id
Configura l'interfaccia a riga di comando di Google Cloud 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 di Cloud Shell, viene visualizzata una pagina
Authorize Cloud Shell
. Fai clic suAuthorize
in fondo alla pagina per consentire agcloud
di effettuare chiamate API GCP con le tue credenziali.Da Cloud Shell, avvia la risorsa Compute Engine richiesta per questo tutorial.
gcloud compute instances create roberta-tutorial \ --zone=us-central1-a \ --machine-type=n1-standard-16 \ --image-family=torch-xla \ --image-project=ml-images \ --boot-disk-size=200GB \ --scopes=https://www.googleapis.com/auth/cloud-platform
Connettiti alla nuova istanza di Compute Engine.
gcloud compute ssh roberta-tutorial --zone=us-central1-a
Avvia una risorsa Cloud TPU
Dalla macchina virtuale Compute Engine, avvia una risorsa Cloud TPU utilizzando il seguente comando:
(vm) $ gcloud compute tpus create roberta-tutorial \ --zone=us-central1-a \ --network=default \ --version=pytorch-1.11 \ --accelerator-type=v3-8
Identifica l'indirizzo IP per la risorsa Cloud TPU.
(vm) $ gcloud compute tpus describe --zone=us-central1-a roberta-tutorial
Creare e configurare l'ambiente PyTorch
Avvia un ambiente
conda
.(vm) $ conda activate torch-xla-1.11
Configura le variabili di ambiente per la risorsa Cloud TPU.
(vm) $ export TPU_IP_ADDRESS=ip-address
(vm) $ export XRT_TPU_CONFIG="tpu_worker;0;$TPU_IP_ADDRESS:8470"
Configura i dati
Per installare FairSeq, esegui questo comando:
(vm) $ pip install --editable /usr/share/torch-xla-1.11/tpu-examples/deps/fairseq
Crea una directory, pytorch-tutorial-data per archiviare i dati del modello.
(vm) $ mkdir $HOME/pytorch-tutorial-data (vm) $ cd $HOME/pytorch-tutorial-data
Segui le istruzioni riportate nella sezione README "Pre-elaborazione dei dati" di FairSeq RoBERTa. La preparazione del set di dati richiede circa 10 minuti.
Addestra il modello
Per addestrare il modello, devi prima configurare alcune variabili di ambiente:
(vm) $ export TOTAL_UPDATES=125000 # Total number of training steps (vm) $ export WARMUP_UPDATES=10000 # Warmup the learning rate over this many updates (vm) $ export PEAK_LR=0.0005 # Peak learning rate, adjust as needed (vm) $ export TOKENS_PER_SAMPLE=512 # Max sequence length (vm) $ export UPDATE_FREQ=16 # Increase the batch size 16x (vm) $ export DATA_DIR=${HOME}/pytorch-tutorial-data/data-bin/wikitext-103
Quindi, esegui lo script seguente:
(vm) $ python3 \
/usr/share/torch-xla-1.10/tpu-examples/deps/fairseq/train.py $DATA_DIR \
--task=masked_lm --criterion=masked_lm \
--arch=roberta_base --sample-break-mode=complete \
--tokens-per-sample=512 \
--optimizer=adam \
--adam-betas='(0.9,0.98)' \
--adam-eps=1e-6 \
--clip-norm=0.0 \
--lr-scheduler=polynomial_decay \
--lr=0.0005 \
--warmup-updates=10000 \
--dropout=0.1 \
--attention-dropout=0.1 \
--weight-decay=0.01 \
--update-freq=16 \
--train-subset=train \
--valid-subset=valid \
--num_cores=8 \
--metrics_debug \
--save-dir=checkpoints \
--log_steps=30 \
--log-format=simple \
--skip-invalid-size-inputs-valid-test \
--suppress_loss_report \
--input_shapes 16x512 18x480 21x384 \
--max-epoch=1
Lo script di addestramento viene eseguito per circa 15 minuti e, al termine, genera un messaggio simile al seguente:
saved checkpoint /home/user/checkpoints/checkpoint1.pt (epoch 1 @ 119 updates) (writing took 25.19265842437744 seconds) | done training in 923.8 seconds
Verifica i risultati dell'output
Al termine del job di addestramento, puoi trovare i punti di controllo del modello nella seguente directory:
$HOME/checkpoints
Esegui la pulizia
Esegui una pulizia per evitare che al tuo account vengano addebitati costi non necessari dopo aver utilizzato le risorse create:
Disconnettiti dall'istanza di Compute Engine, se non l'hai ancora fatto:
(vm) $ exit
Il tuo prompt dovrebbe ora essere
user@projectname
, a indicare che ti trovi in Cloud Shell.In Cloud Shell, utilizza l'interfaccia a riga di comando di Google Cloud per eliminare l'istanza di Compute Engine.
$ gcloud compute instances delete roberta-tutorial --zone=us-central1-a
Utilizza l'interfaccia a riga di comando di Google Cloud per eliminare la risorsa Cloud TPU.
$ gcloud compute tpus delete roberta-tutorial --zone=us-central1-a
Passaggi successivi
Prova i lab di PyTorch:
- Introduzione a PyTorch su Cloud TPU
- Addestramento MNIST sulle TPU
- Addestramento ResNet18 sulle TPU con set di dati Cifar10
- Inferenza con modello ResNet50 preaddestrato
- Trasferimento di tipo neurale veloce
- MultiCore Training AlexNet su Fashion MNIST
- AlexNet, il corso di formazione per singolo core su Fashion MNIST