Questo tutorial mostra come eseguire il fine-tuning supervisionato (SFT) su un cluster di Tensor Processing Unit (TPU) v6e multi-host utilizzando MaxText e Cluster Toolkit. Utilizza Cluster Toolkit per eseguire un workload di addestramento multi-host ed esportare i risultati nel formato Hugging Face per la pubblicazione.
Riepilogo del workload
L'esecuzione di questo workload SFT su Cloud TPU e GKE prevede i seguenti componenti:
- Modello: Gemma 4 31B (
google/gemma-4-31b-it), un modello open-weights avanzato. In questo tutorial, i pesi del modello vengono scaricati da Hugging Face, convertiti in un formato compatibile con MaxText ed è stato eseguito il deployment su un cluster GKE con infrastruttura Cloud TPU v6e (v6e-32). - Metodo di addestramento: SFT utilizzando MaxText. Il workload esegue una pipeline di ottimizzazione scalabile su Cloud TPU v6e utilizzando JAX. Ottimizza i parametri del modello in 1000 passaggi utilizzando l'addestratore SFT integrato di MaxText (
maxtext.trainers.post_train.sft.train_sft) e i set di dati di ottimizzazione delle istruzioni. - Set di dati e modello: UltraChat 200k (
HuggingFaceH4/ultrachat_200k), un set di dati di dialogo multi-turn di alta qualità e su larga scala. Il workload utilizza questo set di dati per ottimizzare il modello e migliorare le sue capacità di conversazione e di esecuzione delle istruzioni. - Infrastruttura e framework: GKE, gestito utilizzando Cluster Toolkit, su Cloud TPU v6e (
v6e-32, con una topologia4x8). Il framework è MaxText (tpu_post_training:0.2.4) con un backend JAX.
Obiettivi
- Installa Cluster Toolkit e le relative dipendenze.
- Esegui il deployment di un cluster Cluster Toolkit.
- Converti un modello Hugging Face nel formato MaxText.
- Esegui un workload di addestramento SFT sulla TPU.
- Converti il modello ottimizzato nel formato Hugging Face per la pubblicazione.
Costi
In questo documento vengono utilizzati i seguenti componenti fatturabili di Google Cloud:
Per generare una stima dei costi in base all'utilizzo previsto, utilizza il Calcolatore prezzi.
Al termine delle attività descritte in questo documento, puoi evitare l'addebito di ulteriori costi eliminando le risorse che hai creato. Per saperne di più, consulta Esegui la pulizia.
Prima di iniziare
Per utilizzare questo tutorial, devi disporre di un token di accesso a Hugging Face. Puoi creare un account senza costi su Hugging Face. Dopo aver creato un account, genera un token di accesso:
- Nella pagina Welcome to Hugging Face, fai clic sull'avatar del tuo account e seleziona Token di accesso.
- Nella pagina Token di accesso, fai clic su Crea nuovo token.
- Seleziona il tipo di token Lettura e inserisci un nome per il token.
- Viene visualizzato il token di accesso. Salva il token in un luogo sicuro.
- Nella scheda del modello
google/gemma-4-31b-itsu Hugging Face, accetta il contratto di licenza per il modello.
Per ottenere le autorizzazioni necessarie per completare questo tutorial, chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto:
-
Per completare questo tutorial:
- TPU Admin (
roles/tpu.admin) - Utente Service Account (
roles/iam.serviceAccountUser) - Compute Admin (
roles/compute.admin) - Storage Admin (
roles/storage.admin) - Amministratore Kubernetes Engine (
roles/container.admin) - Amministratore Service Account (
roles/iam.serviceAccountAdmin) - Project IAM Admin (
roles/resourcemanager.projectIamAdmin) - Amministratore Service Usage (
roles/serviceusage.serviceUsageAdmin)
- TPU Admin (
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
Configura le variabili di ambiente
Imposta le variabili di ambiente:
Sostituisci quanto segue:
YOUR_PROJECT_ID: l'ID del progetto Google Cloud.YOUR_REGION: la regione in cui si trova la prenotazione della TPU e in cui esegui il deployment del cluster.YOUR_ZONE: la zona in cui si trova la prenotazione della TPU e in cui esegui il deployment del cluster.YOUR_BUCKET_NAME: un nome univoco a livello globale per un bucket Cloud Storage.YOUR_RESERVATION_NAME: il nome della prenotazione TPU v6e.YOUR_HF_TOKEN: il tuo token di accesso a Hugging Face.
Per impostazione predefinita, lo script imposta MODEL_NAME su gemma4-31b (il nome del modello MaxText per google/gemma-4-31b-it) e CLUSTER_NAME su gke-tpu-v6e. Se personalizzi CLUSTER_NAME, il nome deve iniziare con una lettera minuscola, contenere solo lettere minuscole, numeri e trattini e avere una lunghezza massima di 20 caratteri, in modo che gli ID dei account di servizio generati non superino il limite di 30 caratteri.
Installa le dipendenze di Cluster Toolkit
Per completare questo tutorial da un client o una workstation Linux o macOS, segui i passaggi pertinenti in Installa le dipendenze nella documentazione di Cluster Toolkit.
Se utilizzi Cloud Shell, puoi saltare questa sezione.
Installa Cluster Toolkit
Scarica ed estrai il bundle predefinito per la versione specifica di Cluster Toolkit definita in CLUSTER_TOOLKIT_VERSION (v1.103.0) nella directory di lavoro attuale:
Autentica il tuo ambiente
Per assicurarti che Cluster Toolkit possa eseguire il provisioning delle risorse e il push delle immagini in Artifact Registry per tuo conto, autentica Google Cloud CLI e imposta le Credenziali predefinite dell'applicazione:
Crea il tuo cluster Cluster Toolkit
Per creare ed eseguire il deployment di un cluster Cluster Toolkit con 32 chip TPU v6e, completa i seguenti passaggi:
Crea un bucket Cloud Storage:
Esegui lo stage della configurazione del progetto iniziale e copia il progetto iniziale di deployment di esempio in una directory di lavoro isolata:
Aggiorna
tmp/gke-tpu-v6e-advanced.yamlper concedere al account di servizio del pool di nodi del cluster (gke-np-sa) il ruolo Storage Admin (roles/storage.admin) per scrivere i checkpoint nel bucket Cloud Storage, cambia il tipo di macchina del pool di nodi di sistema ine2-standard-8e assegna il node pool di sistema alla zona di destinazione per evitare esaurimenti di stock dei tipi di macchina regionali:Utilizza il comando
gcluster deployper eseguire il deployment del tuo cluster Cluster Toolkit utilizzando il progettotmp/gke-tpu-v6e-advanced.yamle passando le variabili richieste utilizzando il flag--vars:
Converti il modello nel formato MaxText
Per addestrare il modello nel formato MaxText, devi convertirlo dal formato Hugging Face al formato MaxText.
Per semplificare i comandi successivi, utilizza il comando
gcluster job configper configurare il progetto, il cluster e la località predefiniti:Utilizza il comando
gcluster job submitper convertire il modello dal formato Hugging Face al formato MaxText e archiviarlo nel tuo bucket Cloud Storage:Il comando include il flag
--await-job-completion, il che significa che attende nel terminale corrente fino al completamento della conversione.(Facoltativo) Per trasmettere in streaming i log di conversione mentre il job è in esecuzione, apri un terminale separato nella directory di lavoro in cui hai estratto
gclustered esegui il comandogcluster job logs:Nel terminale originale, verifica che i file del modello convertito siano disponibili nel bucket Cloud Storage:
Avvia il workload di addestramento
Al termine del processo di conversione, avvia il workload SFT:
Il comando include il flag
--await-job-completion, il che significa che attende nel terminale corrente fino al termine del job di addestramento.(Facoltativo) Per trasmettere in streaming i log di addestramento in tempo reale mentre il job è in esecuzione, apri un terminale separato nella directory di lavoro in cui hai estratto
gclustered esegui il comandogcluster job logs:Al termine della compilazione XLA iniziale, il coordinatore registra l'avanzamento dell'output per ogni passaggio dell'esecuzione di 1000 passaggi nel formato
completed step: <step>, seconds: ..., TFLOP/s/device: ..., loss: ..., con la perdita di addestramento che diminuisce da circa1.57al passaggio 5 a circa0.82al passaggio 1000. Prima di procedere alla sezione successiva, attendi il completamento del passaggio 1000 e che l'output del comando./gcluster job listmostri lo stato disftcomeSucceeded.Nel terminale originale, verifica che i checkpoint di addestramento SFT siano generati nel bucket Cloud Storage:
Converti il modello addestrato nel formato Hugging Face
Al termine del workload di addestramento, converti il modello nel formato Hugging Face:
Il comando include il flag
--await-job-completion, il che significa che attende nel terminale corrente fino al completamento della conversione.(Facoltativo) Per trasmettere in streaming i log di conversione in tempo reale mentre il job è in esecuzione, apri un terminale separato nella directory di lavoro in cui hai estratto
gclustered esegui il comandogcluster job logs:Nel terminale originale, verifica che i pesi finali di Hugging Face Safetensors siano generati nel bucket Cloud Storage:
Esegui la pulizia
Per evitare addebiti aggiuntivi, utilizza il comando gcluster destroy per eliminare le risorse create durante questo tutorial:
Passaggi successivi
- Per saperne di più su Cloud TPU, consulta Introduzione a Cloud TPU.
- Per i dettagli sull'architettura e sulla configurazione della TPU
v6e-32, consulta TPU v6e.