Questo tutorial mostra come eseguire il fine tuning di un modello linguistico di grandi dimensioni (LLM) utilizzando le unità di elaborazione tensoriale (TPU) su Google Kubernetes Engine (GKE) con JAX. Il fine-tuning ti consente di adattare un foundation model come Gemma 3 a un'attività o un dominio specifico. Questo processo migliora la precisione e l'accuratezza del modello aggiornandone i parametri con il tuo set di dati specializzato.
Questa guida è un buon punto di partenza se hai bisogno del controllo granulare, della personalizzazione, della scalabilità, della resilienza, della portabilità e dell'economicità di Kubernetes gestito durante la messa a punto dei tuoi workload AI/ML.
Sfondo
Utilizzando le TPU su GKE con Jax per il fine-tuning di un LLM, puoi creare una soluzione di fine-tuning affidabile e pronta per la produzione con tutti i vantaggi di Kubernetes gestito.
Gemma
Gemma è un insieme di modelli multimodali di AI/ML generativa, leggeri e disponibili apertamente, rilasciati con una licenza aperta. Questi modelli di AI sono disponibili per l'esecuzione in applicazioni, hardware, dispositivi mobili o servizi ospitati. Gemma 3 introduce la multimodalità e supporta l'input di visione-linguaggio e gli output di testo. Gestisce finestre contestuali fino a 128.000 token e supporta oltre 140 lingue. Gemma 3 offre anche funzionalità migliorate per matematica, ragionamento e chat, tra cui output strutturati e chiamate di funzioni.
Puoi utilizzare i modelli Gemma per la generazione di testo oppure puoi anche ottimizzarli per attività specializzate.
Per saperne di più, consulta la documentazione di Gemma.
TPU
Le TPU sono circuiti integrati specifici per le applicazioni (ASIC) che Google ha sviluppato su misura per accelerare i modelli di machine learning e AI creati utilizzando framework come TensorFlow, PyTorch e JAX.
Prima di utilizzare le TPU in GKE, ti consigliamo di completare il seguente percorso di apprendimento:
- Scopri di più sulla disponibilità della versione TPU attuale con l'architettura di sistema di Cloud TPU.
- Scopri di più sulle TPU in GKE.
JAX
JAX è un framework di machine learning ad alte prestazioni progettato per essere utilizzato con TPU e GPU. JAX fornisce un'API per la creazione e l'addestramento di modelli di machine learning.
Per saperne di più, consulta il repository JAX.
Obiettivi
Questo tutorial illustra i seguenti passaggi:
- Crea un cluster GKE Autopilot o Standard con la topologia TPU consigliata, in base alle caratteristiche del modello. Durante questo tutorial, esegui il fine tuning sui pool di nodi single-host.
- Aggiungi dati a un bucket Cloud Storage e montalo nel container tramite Cloud Storage FUSE.
- Esegui il deployment del job di perfezionamento dell'LLM su GKE.
- Monitora il job di perfezionamento e visualizza i log.
Prima di iniziare
- Accedi al tuo account Google Cloud . 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 workload.
-
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the required API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the required API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Assicurati di disporre dei seguenti ruoli nel progetto: roles/container.admin,roles/iam.serviceAccountAdmin,roles/storage.admin
Controlla i ruoli
-
Nella console Google Cloud vai alla pagina IAM.
Vai a IAM - Seleziona il progetto.
-
Nella colonna Entità, trova tutte le righe che identificano te o un gruppo di cui fai parte. Per scoprire a quali gruppi appartieni, contatta il tuo amministratore.
- Per tutte le righe che ti specificano o ti includono, controlla la colonna Ruolo per verificare se l'elenco dei ruoli include i ruoli richiesti.
Concedi i ruoli
-
Nella console Google Cloud vai alla pagina IAM.
Vai a IAM - Seleziona il progetto.
- Fai clic su Concedi l'accesso.
-
Nel campo Nuove entità, inserisci il tuo identificatore dell'utente. In genere si tratta dell'indirizzo email di un Account Google.
- Fai clic su Seleziona un ruolo, quindi cerca il ruolo.
- Per concedere altri ruoli, fai clic su Aggiungi un altro ruolo e aggiungi ogni ruolo successivo.
- Fai clic su Salva.
-
- Assicurati di disporre di una quota sufficiente per 16 chip TPU Trillium (v6e). In questo tutorial utilizzi una configurazione pool di nodi che richiede 16 chip e istanze on demand.
- Assicurati di avere un repository Docker. Se non ne hai uno, crea un repository standard in Artifact Registry.
Prepara l'ambiente
In questo tutorial utilizzerai Cloud Shell per
gestire le risorse ospitate su Google Cloud. Cloud Shell è preinstallato con il software necessario per questo tutorial, tra cui kubectl e Google Cloud CLI.
Per configurare l'ambiente con Cloud Shell:
Nella console Google Cloud , avvia una sessione Cloud Shell e fai clic su
Attiva Cloud Shell. Questa azione avvia una sessione nel riquadro inferiore della console Google Cloud .
Imposta le variabili di ambiente predefinite:
gcloud config set project PROJECT_ID gcloud config set billing/quota_project PROJECT_ID export PROJECT_ID=$(gcloud config get project) export CLUSTER_NAME=CLUSTER_NAME export REGION=CONTROL_PLANE_LOCATION export ZONE=ZONE export GCS_BUCKET_NAME=BUCKET_NAMESostituisci i seguenti valori:
PROJECT_ID: il tuo Google Cloud ID progetto.CLUSTER_NAME: il nome del tuo cluster GKE.CONTROL_PLANE_LOCATION: la regione di Compute Engine in cui si trovano il cluster GKE e i nodi TPU. La regione deve contenere zone in cui sono disponibili i tipi di macchina TPU Trillium (v6e).ZONE: una zona all'interno della regioneCONTROL_PLANE_LOCATIONselezionata in cui sono disponibili i tipi di macchine TPU Trillium (v6e). Per elencare le zone in cui sono disponibili le TPU TPU Trillium (v6e), esegui il comando seguente:gcloud compute accelerator-types list --filter="name~ct6e" --format="value(zone)"BUCKET_NAME: il nome del bucket Cloud Storage che contiene i dati di addestramento.
Clona il repository di esempio:
git clone https://github.com/GoogleCloudPlatform/kubernetes-engine-samples.git cd kubernetes-engine-samplesVai alla directory di lavoro:
cd ai-ml/llm-training-jax-tpu-gemma3
Creare e configurare risorse Google Cloud
In questa sezione, creerai e configurerai le risorse Google Cloud .
Crea un cluster GKE
Puoi eseguire il fine tuning di un LLM sulle TPU in un cluster GKE Autopilot o Standard. Ti consigliamo di utilizzare un cluster Autopilot per un'esperienza Kubernetes completamente gestita. Per scegliere la modalità operativa GKE più adatta ai tuoi workload, consulta Scegliere una modalità operativa GKE.
Autopilot
Crea un cluster GKE Autopilot che utilizzi Workload Identity Federation for GKE e in cui sia abilitato Cloud Storage FUSE.
gcloud container clusters create-auto ${CLUSTER_NAME} \
--location=${REGION}
La creazione del cluster potrebbe richiedere diversi minuti.
Standard
Crea un cluster GKE Standard regionale che utilizzi Workload Identity Federation for GKE e in cui sia abilitato Cloud Storage FUSE.
gcloud container clusters create ${CLUSTER_NAME} \ --enable-ip-alias \ --addons GcsFuseCsiDriver \ --machine-type=n2-standard-4 \ --num-nodes=2 \ --workload-pool=${PROJECT_ID}.svc.id.goog \ --location=${REGION}La creazione del cluster potrebbe richiedere diversi minuti.
Crea un pool di nodi a singolo host:
gcloud container node-pools create jax-tpu-nodepool \ --cluster=${CLUSTER_NAME} \ --machine-type=ct6e-standard-1t \ --num-nodes=1 \ --location=${REGION} \ --node-locations=${ZONE} \ --workload-metadata=GKE_METADATA
GKE crea un pool di nodi TPU Trillium con una topologia 1x1 e un nodo. Il flag --workload-metadata=GKE_METADATA configura il pool di nodi in modo che utilizzi il server metadati GKE.
Installare JobSet
Configura
kubectlper comunicare con il cluster:gcloud container clusters get-credentials ${CLUSTER_NAME} --location=${REGION}Installa l'ultima versione rilasciata di JobSet:
kubectl apply --server-side -f https://github.com/kubernetes-sigs/jobset/releases/download/JOBSET_VERSION/manifests.yamlSostituisci
JOBSET_VERSIONcon l'ultima versione rilasciata di JobSet. Ad esempio:v0.11.0.Verifica l'installazione di JobSet:
kubectl get pods -n jobset-systemL'output è simile al seguente:
NAME READY STATUS RESTARTS AGE jobset-controller-manager-6c56668494-l4dhc 1/1 Running 0 4m45sPotresti dover aggiungere altri nodi se JobSet è in attesa di risorse.
Configurare Cloud Storage FUSE
Per ottimizzare l'LLM, devi fornire dati di addestramento. In questo tutorial, utilizzerai il set di dati TinyStories di Hugging Face. Questo set di dati contiene racconti brevi generati sinteticamente da GPT-3.5 e GPT-4, che utilizzano un vocabolario limitato.
Questa sezione descrive i passaggi per configurare Cloud Storage FUSE in modo da leggere i dati da un bucket Cloud Storage.
Scarica il set di dati:
wget https://huggingface.co/datasets/roneneldan/TinyStories/resolve/main/TinyStories-train.txt?download=true -O TinyStories-train.txtCarica i dati in un nuovo bucket Cloud Storage:
gcloud storage buckets create gs://${GCS_BUCKET_NAME} \ --location=${REGION} \ --enable-hierarchical-namespace \ --uniform-bucket-level-access gcloud storage cp TinyStories-train.txt gs://${GCS_BUCKET_NAME}Per consentire al tuo workload di leggere i dati tramite Cloud Storage FUSE, crea un account di servizio Kubernetes (KSA) e aggiungi le autorizzazioni richieste. Esegui lo script
permissionsetup.sh:Dopo aver eseguito questo script, le seguenti risorse vengono configurate nel tuo progettoGoogle Cloud e nel cluster GKE:
- Nel tuo progetto viene creato un nuovo account di servizio IAM denominato
gcs-fuse-sa. - Al service account Google (GSA) creato Google Cloud (
gcs-fuse-sa) viene concesso il ruoloroles/storage.objectViewersul bucket Cloud Storage specificato da${GCS_BUCKET_NAME}. Questa autorizzazione consente al GSA di leggere gli oggetti dal bucket. - Nel tuo cluster GKE viene creato un nuovo KSA denominato
jaxserviceaccountnello spazio dei nomidefault. - Il criterio IAM del service account Google è aggiornato per concedere il ruolo
roles/iam.workloadIdentityUseral service account Kubernetes. Questa autorizzazione consente al KSA di rappresentare il GSA. Il KSA è annotato per essere collegato al GSA. Questa annotazione indica a GKE quale account di servizio Google deve essere rappresentato dal KSA utilizzando Workload Identity.
Qualsiasi pod in esecuzione nello spazio dei nomi
defaultdel cluster GKE che utilizza il account di serviziojaxserviceaccountora potrà autenticarsi come GSAgcs-fuse-sa. Questi pod avranno accesso in lettura agli oggetti archiviati nel bucketgs://${GCS_BUCKET_NAME}, il che è essenziale per consentire al job di perfezionamento di accedere al set di dati utilizzando Cloud Storage FUSE.
- Nel tuo progetto viene creato un nuovo account di servizio IAM denominato
Crea lo script di ottimizzazione
In questa sezione, esplorerai lo script di addestramento che esegue un'operazione di fine tuning su un modello Gemma 3. Questo script utilizza Gemma3Tokenizer.
Esamina il seguente script di Gemma3LLMTrain.py ottimizzazione:
In questo script, vale quanto segue:
- Un
Gemma3Tokenizerconverte i dati di testo in token che il modello può elaborare. - La funzione
load_and_preprocess_datalegge i dati di addestramento da un file, li suddivide in singole storie e utilizza il tokenizer per convertire il testo in sequenze di token con padding. - La funzione
generate_textaccetta il modello, i relativi parametri e un prompt per generare il testo. - La funzione
train_stepdefinisce una singola iterazione di addestramento che include il passaggio in avanti, il calcolo della perdita (utilizzando l'entropia incrociata), il calcolo del gradiente e gli aggiornamenti dei parametri. - La funzione
train_modelscorre il set di dati per un numero specificato di epoche, che chiama la funzionetrain_stepper ogni batch. - La funzione
run_trainingorchestra l'intero processo di caricamento dei dati, inizializzazione del modello Gemma 3 (Gemma3_270M) e dell'ottimizzatore, caricamento dei parametri preaddestrati, configurazione dello sharding dei dati per l'elaborazione parallela, esecuzione di una generazione di test, esecuzione del ciclo di addestramento ed esecuzione di una generazione di testo finale per dimostrare l'effetto del fine tuning. - Lo script utilizza la libreria
argparseper accettare gli argomenti della riga di comando per i parametrimaxlen,batch_sizeedatacount.
Ora che hai esplorato lo script di perfezionamento, inseriscilo in un container per eseguirlo su GKE.
Containerizza lo script di ottimizzazione
Prima di eseguire lo script di perfezionamento in un cluster GKE, devi inserirlo in un container. Questo tutorial utilizza un'immagine AI JAX come immagine di base.
Apri
Dockerfilenella stessa directory del fileGemma3LLMTrain.py:Questo Dockerfile installa le dipendenze necessarie e copia il file
Gemma3LLMTrain.pynel container.Crea l'immagine Docker ed eseguine il push in un repository di immagini:
export REPOSITORY=REPOSITORY_NAME export IMAGE_NAME="jax-gemma3-training" export IMAGE_TAG="latest" export DOCKERFILE_PATH="./Dockerfile" export IMAGE_URI="${REGION}-docker.pkg.dev/${PROJECT_ID}/${REPOSITORY}/${IMAGE_NAME}:${IMAGE_TAG}" docker build -t "${IMAGE_URI}" -f "${DOCKERFILE_PATH}" . gcloud auth configure-docker "${REGION}-docker.pkg.dev" -q docker push "${IMAGE_URI}"Sostituisci
REPOSITORY_NAMEcon il nome del tuo repository Artifact Registry.Aggiungi associazioni di ruoli al account di servizio:
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format 'get(projectNumber)') gcloud artifacts repositories add-iam-policy-binding ${REPOSITORY} \ --project=${PROJECT_ID} \ --location=${REGION} \ --member="serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \ --role="roles/artifactregistry.reader"
Con l'immagine nel repository, ora puoi eseguire il deployment del job di perfezionamento in un cluster GKE.
Esegui il deployment del job di ottimizzazione dell'LLM
Questa sezione mostra come eseguire il deployment del job di perfezionamento dell'LLM nel cluster GKE.
Apri il file manifest
training_singlehost.yaml:Applica il manifest:
envsubst < training_singlehost.yaml | kubectl apply -f -
GKE crea un job che avvia un pod su un nodo TPU Trillium (v6e). Questo pod esegue lo script di perfezionamento Python, che
accede ai dati di perfezionamento dal bucket Cloud Storage specificato
montato nel percorso /data utilizzando Cloud Storage FUSE. Lo script esegue quindi il fine tuning del
modello Gemma.
Monitora il job di addestramento
In questa sezione, monitori l'avanzamento del job di perfezionamento e le relative prestazioni.
Visualizzare l'avanzamento dell'ottimizzazione
Elenca i pod:
# Find the Pods kubectl get podsSegui l'output del log:
kubectl logs -f pods/POD_NAMESostituisci
POD_NAMEcon il nome del tuo pod.L'output è simile al seguente:
Global device count: 1 Batch size: 128, Max length: 256, Data count: 96000 I1028 00:12:55.925999 1387 google_auth_provider.cc:181] Running on GCE, using service account ... Generating response for: Once upon a time, there was a girl named Amy. Response: Amy lived in a small house. The house was in a big field. Amy liked to play in the big field. She Start training model Loss after batch 0: 10.25 Loss after batch 10: 4.3125 . . . Loss after batch 740: 1.41406 Completed training model. Total time for training 294.6791355609894 seconds Generating response for: Once upon a time, there was a girl named Amy. Response: She loved to play with her toys. One day, Amy's mom told her that she had to go to the store toAnalizza l'output:
- La riga
Global device count: 1indica i core TPU utilizzati. - Il modello genera un testo ragionevole prima di questa esecuzione di ottimizzazione perché carica da un checkpoint preaddestrato.
- L'output generato dopo l'ottimizzazione mostra una maggiore somiglianza con l'inizio di un racconto, il che indica che il modello sta apprendendo dal nuovo set di dati.
- Il perfezionamento sull'intero set di dati dovrebbe produrre risultati ancora più raffinati.
- La riga
Osservare le metriche
Visualizza il rendimento del job di perfezionamento controllando le metriche di TPU e CPU. Per visualizzare le metriche di osservabilità per il cluster, segui i passaggi descritti in Visualizzare le metriche di osservabilità di cluster e carichi di lavoro.
Configurazioni di ottimizzazione alternative
Questa sezione descrive configurazioni alternative per il tuo workload di fine tuning.
Selezione del modello
Questo tutorial ha utilizzato il modello Gemma3_270M, un modello piccolo che rientra in un pool di nodi TPU Trillium (v6e) a host singolo. Per i modelli più grandi che
richiedono più memoria e risorse di calcolo per il perfezionamento, puoi utilizzare configurazioni di pool di nodi multihost o
multislice.
Per un elenco completo dei modelli disponibili, consulta la documentazione di Gemma.
Configurazioni del node pool
Questo tutorial ha utilizzato un pool di nodi single-host. Puoi anche creare node pool TPU multi-host o node pool multislice, a seconda delle tue esigenze.
Le seguenti schede mostrano come creare pool di nodi multihost e multislices:
Multi-host
In Cloud Shell, esegui questo comando:
gcloud container node-pools create jax-tpu-multihost1 \ --cluster=${CLUSTER_NAME} \ --machine-type=ct6e-standard-4t \ --num-nodes=2 \ --tpu-topology=2x4 \ --location=${REGION} \ --node-locations=${ZONE}GKE crea un pool di nodi TPU Trillium con una topologia
2x4e due nodi.Apri la definizione del job
training_multihost_jobset.yaml:Esegui il deployment del job di ottimizzazione:
envsubst < training_multihost_jobset.yaml | kubectl apply -f -
Multislice
In Cloud Shell, esegui questo comando:
gcloud container node-pools create jax-tpu-multihost1 \ --cluster=${CLUSTER_NAME} \ --machine-type=ct6e-standard-4t \ --num-nodes=2 \ --tpu-topology=2x4 \ --location=${REGION} \ --node-locations=${ZONE} gcloud container node-pools create jax-tpu-multihost2 \ --cluster=${CLUSTER_NAME} \ --machine-type=ct6e-standard-4t \ --num-nodes=2 \ --tpu-topology=2x4 \ --location=${REGION} \ --node-locations=${ZONE}GKE crea due node pool TPU Trillium. Ogni node pool ha una topologia
2x4e due nodi.Apri la definizione del job
training_multislice_jobset.yaml:Esegui il deployment del job di ottimizzazione:
envsubst < training_multislice_jobset.yaml | kubectl apply -f -
Analisi e ottimizzazione del rendimento
Per analizzare e ottimizzare il rendimento della messa a punto del machine learning, puoi utilizzare XProf. XProf è una suite di strumenti che profila e ispeziona i carichi di lavoro ML creati con JAX, TensorFlow o PyTorch/XLA. Mostrando le tracce di esecuzione, l'utilizzo della memoria e altri dati, XProf ti consente di ottimizzare i modelli e la configurazione dell'addestramento per una maggiore efficienza e un addestramento più rapido.
Per analizzare le prestazioni del carico di lavoro di fine tuning utilizzando XProf, completa i seguenti passaggi in questa sezione:
- Installa il pacchetto
xprof. Modifica lo script di addestramento per avviare il server XProf. - Modifica il manifest del job Kubernetes in modo da includere un montaggio del volume per i log XProf.
- Concedi al account di servizio le autorizzazioni per scrivere i log XProf in un bucket Cloud Storage.
- Esegui XProf all'interno del pod e configura l'inoltro delle porte per accedere alla dashboard XProf.
Installa il pacchetto XProf
Vai alla directory che contiene gli esempi di XProf:
cd ai-ml/llm-training-jax-tpu-gemma3/xprof-enabledCrea l'immagine Docker ed eseguine il push in un repository di immagini:
export REPOSITORY=REPOSITORY_NAME export IMAGE_NAME="jax-gemma3-training-xp" export IMAGE_TAG="latest" export DOCKERFILE_PATH="./Dockerfile" export IMAGE_URI="${REGION}-docker.pkg.dev/${PROJECT_ID}/${REPOSITORY}/${IMAGE_NAME}:${IMAGE_TAG}" docker build -t "${IMAGE_URI}" -f "${DOCKERFILE_PATH}" . gcloud auth configure-docker "${REGION}-docker.pkg.dev" -q docker push "${IMAGE_URI}"Sostituisci
REPOSITORY_NAMEcon il nome del tuo repository Artifact Registry.Esegui lo script
Dockerfile:Questo Dockerfile installa le dipendenze di XProf.
Copia lo script di perfezionamento nel container.
In questa sezione, crea e applica un manifest di Kubernetes Job che includa i mount del volume necessari per i log XProf.
Apri la definizione del job
training_singlehost.yaml:Applica il manifest:
envsubst < training_singlehost.yaml | kubectl apply -f -
Concedi all'account di servizio le autorizzazioni per scrivere i log XProf
Per consentire all'account di servizio di scrivere e leggere, aggiungi il ruolo
"roles/storage.objectUser":export GSA_NAME="GSA_NAME" # Same as used in initial setup # Automatically get the current project ID export PROJECT_ID=$(gcloud config get-value project) # Cloud Storage Bucket details export XPROF_GCS_BUCKET_NAME="XPROF_GCS_BUCKET_NAME" # Derived Variables export GSA_EMAIL="${GSA_NAME}@${PROJECT_ID}.iam.gserviceaccount.com" gcloud storage buckets add-iam-policy-binding "gs://${XPROF_GCS_BUCKET_NAME}" \ --member="serviceAccount:${GSA_EMAIL}" \ --role="roles/storage.objectUser" \ --project="${PROJECT_ID}"Sostituisci quanto segue:
GSA_NAME: il nome del service account Google a cui concedere il ruolo.XPROF_GCS_BUCKET_NAME: il nome del bucket a cui concedere il ruolo.
Esegui XProf all'interno del pod:
kubectl exec POD_NAME -c training-container -it -- bash # exec into the container xprof --port 9001 --logdir /xprof # start xprofSostituisci
POD_NAMEcon il nome del tuo pod.
Accedere alla dashboard XProf
Configura port forwarding al server XProf nel pod:
kubectl port-forward POD_NAME 9001:9001Nella barra degli indirizzi del browser, inserisci quanto segue:
http://localhost:9001/Si apre XProf Trace Viewer.
Nella finestra TensorBoard, fai clic su Acquisisci profilo.
Nel campo URL dei servizi del profilo o nome TPU, inserisci
localhost:9002.Per acquisire maggiori dettagli, in Host Trace (TraceMe) Level, seleziona verbose e attiva la registrazione delle tracce Python.
Per visualizzare la dashboard, fai clic su Acquisizione.
TensorBoard acquisisce il profilo e ti consente di analizzare le prestazioni dello script di addestramento. Il grafico mostra la sequenza temporale di esecuzione per i profili di rendimento di TPU e CPU:
Per ulteriori opzioni di profilazione per analizzare le prestazioni del workload di addestramento, consulta la documentazione di JAX sulla profilazione del calcolo.
Ottimizzazione negli ambienti di produzione
Questo tutorial ti ha mostrato come testare l'addestramento basato su JAX in un ambiente distribuito. Per la messa a punto ottimizzata degli LLM in produzione, utilizza la libreria Maxtext. Se ti interessano i modelli di diffusione, utilizza le implementazioni Maxdiffusion.
Per i workload di addestramento o messa a punto di lunga durata in produzione, configura il checkpointing del workload per ridurre al minimo la perdita di avanzamento in caso di errore. Per saperne di più sulla configurazione del checkpointing multilivello, consulta Addestra modelli di machine learning su larga scala su GKE con il checkpointing multilivello.
Esegui la pulizia
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.
Elimina le singole risorse
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 eseguendo i seguenti comandi:
Elimina le risorse che hai creato in questo tutorial:
gcloud container clusters delete ${CLUSTER_NAME} --location=${REGION} gcloud storage rm --recursive gs://${GCS_BUCKET_NAME} gcloud artifacts docker images delete ${IMAGE_URI} --delete-tagsSe non hai bisogno dei dati generati da XProf, rimuovi il bucket Cloud Storage utilizzato da XProf:
gcloud storage rm --recursive gs://${XPROF_GCS_BUCKET_NAME}
Passaggi successivi
- Scopri di più sulle TPU in GKE.
- Esplora il repository JAX.