Inferenza MaxDiffusion su TPU v6e
Questo tutorial mostra come pubblicare i modelli MaxDiffusion su TPU v6e. In questo tutorial, genererai immagini utilizzando il modello Stable Diffusion XL.
Prima di iniziare
Preparati a eseguire il provisioning di una TPU v6e con 4 chip:
Segui la guida Configurare l'ambiente Cloud TPU per configurare un progetto Google Cloud , configurare Google Cloud CLI, abilitare l'API Cloud TPU e assicurarti di avere accesso all'utilizzo delle Cloud TPU.
Autenticati con Google Cloud e configura il progetto e la zona predefiniti per Google Cloud CLI.
gcloud auth login gcloud config set project PROJECT_ID gcloud config set compute/zone ZONE
Garantisci la capacità
Quando è tutto pronto per proteggere la capacità TPU, consulta Quote di Cloud TPU per saperne di più sulle quote di Cloud TPU. Se hai altre domande sulla protezione della capacità, contatta il team di vendita o di gestione account Cloud TPU.
Esegui il provisioning dell'ambiente Cloud TPU
Puoi eseguire il provisioning delle VM TPU con GKE, con GKE e XPK, o come risorse in coda.
Prerequisiti
- Verifica che il tuo progetto disponga di una quota
TPUS_PER_TPU_FAMILYsufficiente, che specifica il numero massimo di chip a cui puoi accedere all'interno del tuo progettoGoogle Cloud . - Verifica che il tuo progetto disponga di una quota TPU sufficiente per:
- Quota VM TPU
- Quota di indirizzi IP
- Quota Hyperdisk bilanciato
- Autorizzazioni di progetto dell'utente
- Se utilizzi GKE con XPK, consulta Autorizzazioni di Cloud Console per l'utente o il service account per le autorizzazioni necessarie per eseguire XPK.
Esegui il provisioning di una TPU v6e
gcloud alpha compute tpus queued-resources create QUEUED_RESOURCE_ID \ --node-id TPU_NAME \ --project PROJECT_ID \ --zone ZONE \ --accelerator-type v6e-4 \ --runtime-version v2-alpha-tpuv6e \ --service-account SERVICE_ACCOUNT
Utilizza i comandi list o describe
per eseguire query sullo stato della risorsa in coda.
gcloud alpha compute tpus queued-resources describe QUEUED_RESOURCE_ID \ --project=PROJECT_ID --zone=ZONE
Per un elenco completo degli stati delle richieste di risorse in coda, consulta la documentazione relativa alle risorse in coda.
Connettiti alla TPU utilizzando SSH
gcloud compute tpus tpu-vm ssh TPU_NAME
Crea un ambiente Conda
Crea una directory per Miniconda:
mkdir -p ~/miniconda3
Scarica lo script del programma di installazione di Miniconda:
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
Installa Miniconda:
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
Rimuovi lo script del programma di installazione di Miniconda:
rm -rf ~/miniconda3/miniconda.sh
Aggiungi Miniconda alla variabile
PATH:export PATH="$HOME/miniconda3/bin:$PATH"
Ricarica
~/.bashrcper applicare le modifiche alla variabilePATH:source ~/.bashrc
Crea un nuovo ambiente Conda:
conda create -n tpu python=3.10
Attiva l'ambiente Conda:
source activate tpu
Configurare MaxDiffusion
Clona il repository GitHub di MaxDiffusion e vai alla directory MaxDiffusion:
git clone https://github.com/google/maxdiffusion.git && cd maxdiffusion
Passa al branch
mlperf-4.1:git checkout mlperf4.1
Installa MaxDiffusion:
pip install -e .
Installa le dipendenze:
pip install -r requirements.txt
Installa JAX:
pip install jax[tpu]==0.4.34 jaxlib==0.4.34 ml-dtypes==0.2.0 -i https://us-python.pkg.dev/ml-oss-artifacts-published/jax/simple/ -f https://storage.googleapis.com/jax-releases/libtpu_releases.html
Installa dipendenze aggiuntive:
pip install huggingface_hub==0.25 absl-py flax tensorboardX google-cloud-storage torch tensorflow transformers
Genera immagini
Imposta le variabili di ambiente per configurare il runtime TPU:
LIBTPU_INIT_ARGS="--xla_tpu_rwb_fusion=false --xla_tpu_dot_dot_fusion_duplicated=true --xla_tpu_scoped_vmem_limit_kib=65536"
Genera immagini utilizzando il prompt e le configurazioni definite in
src/maxdiffusion/configs/base_xl.yml:python -m src.maxdiffusion.generate_sdxl src/maxdiffusion/configs/base_xl.yml run_name="my_run"
Una volta generate le immagini, assicurati di pulire le risorse TPU.
Esegui la pulizia
Elimina la TPU:
gcloud compute tpus queued-resources delete QUEUED_RESOURCE_ID \ --project PROJECT_ID \ --zone ZONE \ --force \ --async