Formação da Resnet50 na Cloud TPU com o PyTorch

Este tutorial mostra como preparar o modelo ResNet-50 num dispositivo Cloud TPU com o PyTorch. Pode aplicar o mesmo padrão a outros modelos de classificação de imagens otimizados para TPUs que usam o PyTorch e o conjunto de dados ImageNet.

O modelo neste tutorial baseia-se na aprendizagem residual profunda para reconhecimento de imagens, que introduz pela primeira vez a arquitetura de rede residual (ResNet). O tutorial usa a variante de 50 camadas, a ResNet-50, e demonstra a preparação do modelo usando o PyTorch/XLA.

Objetivos

  • Prepare o conjunto de dados.
  • Execute a tarefa de preparação.
  • Valide os resultados da saída.

Custos

Neste documento, usa os seguintes componentes faturáveis do Google Cloud:

  • Compute Engine
  • Cloud TPU

Para gerar uma estimativa de custos com base na sua utilização prevista, use a calculadora de preços.

Os novos Google Cloud utilizadores podem ser elegíveis para uma avaliação gratuita.

Antes de começar

Antes de iniciar este tutorial, verifique se o seu Google Cloud projeto está configurado corretamente.

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  6. Esta explicação detalhada usa componentes faturáveis do Google Cloud. Consulte a página de preços do Cloud TPU para estimar os seus custos. Certifique-se de que limpa os recursos que criou quando terminar de os usar para evitar cobranças desnecessárias.

Crie uma VM da TPU

  1. Abra uma janela do Cloud Shell.

    Abra o Cloud Shell

  2. Crie uma VM da TPU

    gcloud compute tpus tpu-vm create your-tpu-name \
    --accelerator-type=v3-8 \
    --version=tpu-ubuntu2204-base \
    --zone=us-central1-a \
    --project=your-project
  3. Estabeleça ligação à VM de TPU através do SSH:

    gcloud compute tpus tpu-vm ssh  your-tpu-name --zone=us-central1-a
  4. Instale o PyTorch/XLA na sua VM da TPU:

    (vm)$ pip install torch torch_xla[tpu] torchvision -f https://storage.googleapis.com/libtpu-releases/index.html -f https://storage.googleapis.com/libtpu-wheels/index.html
  5. Clone o repositório do GitHub PyTorch/XLA

    (vm)$ git clone --depth=1 https://github.com/pytorch/xla.git
  6. Execute o script de preparação com dados falsos

    (vm) $ PJRT_DEVICE=TPU python3 xla/test/test_train_mp_imagenet.py --fake_data --batch_size=256 --num_epochs=1

Limpar

Para evitar incorrer em custos na sua conta do Google Cloud pelos recursos usados neste tutorial, elimine o projeto que contém os recursos ou mantenha o projeto e elimine os recursos individuais.

  1. Desligue-se da VM da TPU:

    (vm) $ exit

    O comando deve agora ser username@projectname, indicando que está no Cloud Shell.

  2. Elimine a VM da TPU.

    $ gcloud compute tpus tpu-vm delete your-tpu-name \
       --zone=us-central1-a

O que se segue?