Esegui i workload TPU in un container Docker
I container Docker semplificano la configurazione delle applicazioni combinando il codice e tutte le dipendenze necessarie in un unico pacchetto distribuibile. Puoi eseguire container Docker all'interno delle VM TPU per semplificare la configurazione e la condivisione delle tue applicazioni Cloud TPU. Questo documento descrive come configurare un container Docker per ogni framework ML supportato da Cloud TPU.
Addestra un modello PyTorch in un container Docker
PyTorch su Cloud TPU descrive le librerie PyTorch per TPU e rimanda alla documentazione per ottenere i pacchetti Python e le immagini Docker. Puoi utilizzare TorchTPU direttamente (consulta Inizia a utilizzare GKE per l'immagine container della release pubblica) o utilizzare la libreria di riferimento TorchTitan per creare ed eseguire workload di addestramento containerizzati.
Addestra un modello JAX in un container Docker
Prima di eseguire i comandi riportati di seguito, crea le seguenti variabili di ambiente:
export PROJECT_ID=your-project-id export TPU_NAME=your-tpu-name export ZONE=us-west4-a export ACCELERATOR_TYPE=v5litepod-8 export RUNTIME_VERSION=v2-alpha-tpuv5-lite
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 ulteriori informazioni sui tipi di acceleratori supportati per ogni versione di TPU, consulta Versioni di TPU.RUNTIME_VERSION: la versione software di Cloud TPU.
Dispositivo TPU
Crea la VM TPU
gcloud compute tpus tpu-vm create $TPU_NAME \ --zone=$ZONE \ --accelerator-type=$ACCELERATOR_TYPE \ --version=$RUNTIME_VERSIONConnettiti alla VM TPU tramite SSH
gcloud compute tpus tpu-vm ssh $TPU_NAME --zone=$ZONEAvvia il daemon Docker nella VM TPU
sudo systemctl start dockerAvvia il container Docker
sudo docker run --net=host -ti --rm --name your-container-name \ --privileged us-central1-docker.pkg.dev/tpu-pytorch-releases/docker/xla:r2.6.0_3.10_tpuvm_cxx11 \ bashInstalla JAX
pip install jax[tpu]Installa FLAX
pip install --upgrade clu git clone https://github.com/google/flax.git pip install --user -e flaxInstalla i pacchetti
tensorflowetensorflow-datasetspip install tensorflow pip install tensorflow-datasetsEsegui lo script di addestramento FLAX MNIST
cd flax/examples/mnist python3 main.py --workdir=/tmp/mnist \ --config=configs/default.py \ --config.learning_rate=0.05 \ --config.num_epochs=5
Al termine dello script di addestramento, esegui la pulizia delle risorse.
- Digita
exitper uscire dal container Docker - Digita
exitper uscire dalla VM TPU Elimina la VM TPU
gcloud compute tpus tpu-vm delete $TPU_NAME --zone=$ZONE
Sezione TPU
Quando esegui il codice JAX su una sezione TPU, devi eseguirlo su tutti i worker TPU contemporaneamente. Un modo per farlo è utilizzare il comando gcloud compute tpus tpu-vm ssh con i flag --worker=all e --command. La procedura seguente mostra come creare un'immagine Docker per semplificare la configurazione di ogni worker TPU.
Crea un file denominato
Dockerfilenella directory attuale e incolla il seguente testoFROM python:3.10 RUN pip install jax[tpu] RUN pip install --upgrade clu RUN git clone https://github.com/google/flax.git RUN pip install --user -e flax RUN pip install tensorflow RUN pip install tensorflow-datasets WORKDIR ./flax/examples/mnistPrepara un Artifact Registry
gcloud artifacts repositories create your-repo \ --repository-format=docker \ --location=europe-west4 --description="Docker repository" \ --project=$PROJECT_ID gcloud artifacts repositories list \ --project=$PROJECT_ID gcloud auth configure-docker europe-west4-docker.pkg.devCrea l'immagine Docker
docker build -t your-image-name .Aggiungi un tag all'immagine Docker prima di eseguirne il push ad Artifact Registry. Per ulteriori informazioni sull'utilizzo di Artifact Registry, consulta Utilizza le immagini container.
docker tag your-image-name europe-west4-docker.pkg.dev/$PROJECT_ID/your-repo/your-image-name:your-tagEsegui il push dell'immagine Docker in Artifact Registry
docker push europe-west4-docker.pkg.dev/$PROJECT_ID/your-repo/your-image-name:your-tagCrea una VM TPU
gcloud compute tpus tpu-vm create $TPU_NAME \ --zone=$ZONE \ --accelerator-type=$ACCELERATOR_TYPE \ --version=$RUNTIME_VERSIONEstrai l'immagine Docker da Artifact Registry su tutti i worker TPU
gcloud compute tpus tpu-vm ssh $TPU_NAME --worker=all \ --zone=$ZONE \ --command='sudo usermod -a -G docker ${USER}'gcloud compute tpus tpu-vm ssh $TPU_NAME --worker=all \ --zone=$ZONE \ --command="gcloud auth configure-docker europe-west4-docker.pkg.dev --quiet"gcloud compute tpus tpu-vm ssh $TPU_NAME --worker=all \ --zone=$ZONE \ --command="docker pull europe-west4-docker.pkg.dev/$PROJECT_ID/your-repo/your-image-name:your-tag"Esegui il container su tutti i worker TPU
gcloud compute tpus tpu-vm ssh $TPU_NAME --worker=all \ --zone=$ZONE \ --command="docker run -ti -d --privileged --net=host --name your-container-name europe-west4-docker.pkg.dev/$PROJECT_ID/your-repo/your-image-name:your-tag bash"Esegui lo script di addestramento su tutti i worker TPU
gcloud compute tpus tpu-vm ssh $TPU_NAME --worker=all \ --zone=$ZONE \ --command="docker exec --privileged your-container-name python3 main.py --workdir=/tmp/mnist \ --config=configs/default.py \ --config.learning_rate=0.05 \ --config.num_epochs=5"
Al termine dello script di addestramento, esegui la pulizia delle risorse.
Arresta il container su tutti i worker
gcloud compute tpus tpu-vm ssh $TPU_NAME --worker=all \ --zone=$ZONE \ --command="docker kill your-container-name"Elimina la VM TPU
gcloud compute tpus tpu-vm delete $TPU_NAME \ --zone=$ZONE