Addestramento di ResNet-50 su Cloud TPU con PyTorch

Questo tutorial mostra come addestrare il modello ResNet-50 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 in questo tutorial si basa su Deep Residual Learning for Image Recognition, che introduce per la prima volta l'architettura di rete residua (ResNet). Il tutorial utilizza la variante a 50 livelli, ResNet-50, e mostra l'addestramento del modello utilizzando PyTorch/XLA.

Obiettivi

  • Prepara il set di dati.
  • Esegui il job di addestramento.
  • Verifica i risultati dell'output.

Costi

In questo documento vengono utilizzati 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 Google Cloud utenti potrebbero avere diritto a una prova senza costi.

Prima di iniziare

Prima di iniziare questo tutorial, verifica che il tuo Google Cloud progetto sia configurato correttamente.

  1. Accedi al tuo Google Cloud account. 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 senza costi per l'esecuzione, il test e il deployment dei carichi di lavoro.
  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. Questa procedura dettagliata utilizza i componenti fatturabili di Google Cloud. Consulta la pagina Prezzi per Cloud TPU per una stima dei costi. Una volta terminato il loro utilizzo, assicurati di liberare spazio dalle risorse create per evitare addebiti superflui.

Crea una VM TPU

  1. Apri una finestra di Cloud Shell o del terminale.

    Apri Cloud Shell

  2. Definisci le variabili di ambiente per i parametri dei comandi Google Cloud CLI:

    export PROJECT_ID=your-project-id
    export TPU_NAME=your-tpu-name
    export ZONE=us-central1-b
    export ACCELERATOR_TYPE=v6e-8
    export RUNTIME_VERSION=v2-alpha-tpuv6e

    Descrizioni delle variabili di ambiente

    • PROJECT_ID: l'ID progetto. Google Cloud Utilizza un progetto esistente o creane uno nuovo.
    • TPU_NAME: il nome della TPU.
    • ZONE: La zona in cui creare la VM TPU. Per saperne di più sulle zone supportate, consulta Regioni e zone TPU.
    • ACCELERATOR_TYPE: Il tipo di acceleratore specifica la versione e le dimensioni della Cloud TPU che vuoi creare. Per saperne di più sui tipi di acceleratori supportati per ogni versione TPU, consulta Versioni TPU.
    • RUNTIME_VERSION: la versione software di Cloud TPU.

  3. Crea una VM TPU

     gcloud compute tpus tpu-vm create $TPU_NAME \
     --accelerator-type=$ACCELERATOR_TYPE \
     --version=$RUNTIME_VERSION \
     --zone=$ZONE \
     --project=$PROJECT_ID
    
  4. Connettiti alla VM TPU utilizzando SSH:

     gcloud compute tpus tpu-vm ssh  $TPU_NAME --zone=$ZONE
    

Installa PyTorch/XLA sulla VM TPU

  1. Crea un file denominato requirements.txt e aggiungi i seguenti contenuti:

    --find-links https://storage.googleapis.com/libtpu-releases/index.html
    --find-links https://storage.googleapis.com/libtpu-wheels/index.html
    torch~=2.6.0
    torch_xla[tpu]~=2.6.0
    torchvision
    ray[default]==2.40.0
    
  2. Installa le dipendenze:

    pip install -r requirements.txt
    
  3. Clona il repository GitHub PyTorch/XLA

    git clone --depth=1 https://github.com/pytorch/xla.git
    
  4. Esegui lo script di addestramento con dati fittizi

    PJRT_DEVICE=TPU python3 xla/test/test_train_mp_imagenet.py \
    --fake_data \
    --batch_size=256 \
    --num_epochs=1
    

Libera spazio

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 dalla VM TPU:

    exit
    
  2. Elimina la VM TPU.

    gcloud compute tpus tpu-vm delete $TPU_NAME \
        --zone=$ZONE
    

Passaggi successivi