Esegui codice PyTorch sulle sezioni di pod di TPU
PyTorch/XLA richiede che tutte le VM TPU possano accedere al codice e ai dati del modello. Puoi utilizzare uno script di avvio per scaricare il software necessario per distribuire i dati del modello a tutte le VM TPU.
Se colleghi le VM TPU a un Virtual Private Cloud (VPC) devi aggiungere una regola firewall nel progetto per consentire il traffico in entrata per le porte 8470 - 8479. Per ulteriori informazioni sull'aggiunta di regole firewall, consulta Utilizzo delle regole firewall
Configura l'ambiente
In Cloud Shell, esegui questo comando per assicurarti di essere con la versione corrente di
gcloud
:$ gcloud components update
Se devi installare
gcloud
, usa il seguente comando:$ sudo apt install -y google-cloud-sdk
Crea alcune variabili di ambiente:
$ export PROJECT_ID=project-id $ export TPU_NAME=tpu-name $ export ZONE=us-central2-b $ export RUNTIME_VERSION=tpu-ubuntu2204-base $ export ACCELERATOR_TYPE=v4-32
Crea la VM TPU
$ gcloud compute tpus tpu-vm create ${TPU_NAME} \ --zone=${ZONE} \ --project=${PROJECT_ID} \ --accelerator-type=${ACCELERATOR_TYPE} \ --version ${RUNTIME_VERSION}
Configura ed esegui lo script di addestramento
Aggiungi il certificato SSH al progetto:
ssh-add ~/.ssh/google_compute_engine
Installa PyTorch/XLA su tutti i worker VM TPU
gcloud compute tpus tpu-vm ssh ${TPU_NAME} \ --zone=${ZONE} \ --project=${PROJECT_ID} \ --worker=all --command=" pip install torch~=2.4.0 torch_xla[tpu]~=2.4.0 torchvision -f https://storage.googleapis.com/libtpu-releases/index.html"
Clona XLA su tutti i worker VM TPU
gcloud compute tpus tpu-vm ssh ${TPU_NAME} \ --zone=${ZONE} \ --project=${PROJECT_ID} \ --worker=all --command="git clone -b r2.4 https://github.com/pytorch/xla.git"
Esegui lo script di addestramento su tutti i worker
gcloud compute tpus tpu-vm ssh ${TPU_NAME} \ --zone=${ZONE} \ --project=${PROJECT_ID} \ --worker=all \ --command="PJRT_DEVICE=TPU python3 ~/xla/test/test_train_mp_imagenet.py \ --fake_data \ --model=resnet50 \ --num_epochs=1 2>&1 | tee ~/logs.txt"
L'addestramento richiede circa 5 minuti. Al termine, dovresti visualizzare un messaggio simile al seguente:
Epoch 1 test end 23:49:15, Accuracy=100.00 10.164.0.11 [0] Max Accuracy: 100.00%
Esegui la pulizia
Al termine dell'utilizzo della VM TPU, segui questi passaggi per ripulire le risorse.
Se non l'hai ancora fatto, disconnetti dall'istanza Compute Engine:
(vm)$ exit
Il tuo prompt ora dovrebbe essere
username@projectname
, a indicare che ti trovi in in Cloud Shell.Elimina le risorse Cloud TPU e Compute Engine.
$ gcloud compute tpus tpu-vm delete \ --zone=${ZONE}
Verifica che le risorse siano state eliminate eseguendo
gcloud compute tpus execution-groups list
. La l'eliminazione potrebbe richiedere diversi minuti. L'output del seguente comando non deve includere nessuna delle risorse create in questo tutorial:$ gcloud compute tpus tpu-vm list --zone=${ZONE}