Execute código PyTorch em fatias de TPU
Antes de executar os comandos neste documento, certifique-se de que seguiu as instruções em Configure uma conta e um projeto do Cloud TPU.
Depois de ter o código PyTorch em execução numa única VM da TPU, pode dimensionar o código executando-o numa divisão da TPU. As fatias de TPU são várias placas de TPU ligadas entre si através de ligações de rede de alta velocidade dedicadas. Este documento é uma introdução à execução de código PyTorch em fatias de TPU.
Crie uma fatia da Cloud TPU
Defina algumas variáveis de ambiente para facilitar a utilização dos comandos.
export PROJECT_ID=your-project-id export TPU_NAME=your-tpu-name export ZONE=europe-west4-b export ACCELERATOR_TYPE=v5p-32 export RUNTIME_VERSION=v2-alpha-tpuv5
Descrições das variáveis de ambiente
Variável Descrição PROJECT_ID
O seu Google Cloud ID do projeto. Use um projeto existente ou crie um novo. TPU_NAME
O nome da TPU. ZONE
A zona na qual criar a VM da TPU. Para mais informações sobre as zonas suportadas, consulte o artigo Regiões e zonas de TPUs. ACCELERATOR_TYPE
O tipo de acelerador especifica a versão e o tamanho do Cloud TPU que quer criar. Para mais informações sobre os tipos de aceleradores suportados para cada versão da TPU, consulte o artigo Versões da TPU. RUNTIME_VERSION
A versão do software do Cloud TPU. Crie a VM da TPU executando o seguinte comando:
$ gcloud compute tpus tpu-vm create ${TPU_NAME} \ --zone=${ZONE} \ --project=${PROJECT_ID} \ --accelerator-type=${ACCELERATOR_TYPE} \ --version=${RUNTIME_VERSION}
Instale o PyTorch/XLA na sua fatia
Depois de criar a fatia de TPU, tem de instalar o PyTorch em todos os anfitriões na fatia de TPU. Pode fazê-lo através do comando gcloud compute tpus tpu-vm ssh
com os parâmetros --worker=all
e --commamnd
.
Se os seguintes comandos falharem devido a um erro de ligação SSH, pode dever-se ao facto de as VMs de TPU não terem endereços IP externos. Para aceder a uma VM da TPU sem um endereço IP externo, siga as instruções em Estabeleça ligação a uma VM da TPU sem um endereço IP público.
Instale o PyTorch/XLA em todos os trabalhadores da VM da TPU:
gcloud compute tpus tpu-vm ssh ${TPU_NAME} \ --zone=${ZONE} \ --project=${PROJECT_ID} \ --worker=all \ --command="pip install torch~=2.5.0 torch_xla[tpu]~=2.5.0 torchvision -f https://storage.googleapis.com/libtpu-releases/index.html"
Clonar o XLA em todos os trabalhadores da VM da TPU:
gcloud compute tpus tpu-vm ssh ${TPU_NAME} \ --zone=${ZONE} \ --project=${PROJECT_ID} \ --worker=all \ --command="git clone https://github.com/pytorch/xla.git"
Execute um script de preparação na sua fatia de TPU
Execute o script de preparação em todos os trabalhadores. O script de preparação usa uma estratégia de divisão em partições de programa único e vários dados (SPMD). Para mais informações sobre SPMD, consulte o guia do utilizador de SPMD do PyTorch/XLA.
gcloud compute tpus tpu-vm ssh ${TPU_NAME} \ --zone=${ZONE} \ --project=${PROJECT_ID} \ --worker=all \ --command="PJRT_DEVICE=TPU python3 ~/xla/test/spmd/test_train_spmd_imagenet.py \ --fake_data \ --model=resnet50 \ --num_epochs=1 2>&1 | tee ~/logs.txt"
A preparação demora cerca de 15 minutos. Quando estiver concluído, deve ver uma mensagem semelhante à seguinte:
Epoch 1 test end 23:49:15, Accuracy=100.00 10.164.0.11 [0] Max Accuracy: 100.00%
Limpar
Quando terminar de usar a VM de TPU, siga estes passos para limpar os recursos.
Desligue-se da instância do Cloud TPU, se ainda não o tiver feito:
(vm)$ exit
O comando deve agora ser
username@projectname
, o que indica que está no Cloud Shell.Elimine os seus recursos do Cloud TPU.
$ gcloud compute tpus tpu-vm delete \ --zone=${ZONE}
Verifique se os recursos foram eliminados executando
gcloud compute tpus tpu-vm list
. A eliminação pode demorar vários minutos. O resultado do seguinte comando não deve incluir nenhum dos recursos criados neste tutorial:$ gcloud compute tpus tpu-vm list --zone=${ZONE}