Questo tutorial mostra come eseguire il fine-tuning di un modello linguistico di grandi dimensioni (google/gemma-4-31b-it) Gemma 4 da 31 miliardi di parametri su un cluster Google Kubernetes Engine (GKE) Autopilot multi-host e multi-GPU su Google Cloud. Questo
cluster utilizza due istanze di macchine virtuali (VM) A4 (a4-highgpu-8g) con un
totale di 16 GPU NVIDIA B200.
Le tre procedure principali descritte in questo tutorial sono le seguenti:
- Esegui il deployment di un cluster GKE multihost in modalità Autopilot.
- Crea un'immagine container personalizzata con le dipendenze di messa a punto richieste utilizzando Cloud Build.
- Orchestra un carico di lavoro di messa a punto distribuito su più host su tutte le 16 GPU utilizzando JobSet di Kubernetes e la libreria Hugging Face Accelerate con Fully Sharded Data Parallel v2 (FSDP v2), eseguendo il push dei checkpoint su Hugging Face Hub.
Questo tutorial è rivolto a machine learning (ML) engineer, ricercatori, amministratori e operatori di piattaforme e specialisti di dati e AI che eseguono il deployment di cluster GKE su Google Cloud per ottimizzare i LLM su più host.
Obiettivi
Accedi al modello Gemma 4 utilizzando Hugging Face.
Prepara l'ambiente.
Crea e implementa un cluster GKE multihost A4.
Perfeziona il modello Gemma 4 31B su 16 GPU utilizzando Kubernetes
JobSete Hugging Face Accelerate con FSDP v2.Monitorare il job.
Visualizza i pesi dell'adattatore ottimizzato su Hugging Face Hub.
Eseguire la pulizia.
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.
Prima di iniziare
Per ottenere le autorizzazioni necessarie per completare questo tutorial, chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto:
- Amministratore Kubernetes Engine (
roles/container.admin) - Compute Admin (
roles/compute.admin) - Storage Admin (
roles/storage.admin) - Amministratore Artifact Registry (
roles/artifactregistry.admin) - Editor Cloud Build (
roles/cloudbuild.builds.editor) - Utente Service Account (
roles/iam.serviceAccountUser) - Amministratore service account (
roles/iam.serviceAccountAdmin) - Project IAM Admin (
roles/resourcemanager.projectIamAdmin) - Amministratore Service Usage (
roles/serviceusage.serviceUsageAdmin)
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.
Abilita le API richieste, se non sono già abilitate:
Ruoli richiesti per abilitare le API
Per abilitare le API, devi disporre dell'autorizzazione
serviceusage.services.enable. Se hai creato il progetto, probabilmente disponi già di questa autorizzazione tramite il ruolo Proprietario (roles/owner). In caso contrario, puoi ottenere questa autorizzazione tramite il ruolo Amministratore utilizzo servizi (roles/serviceusage.serviceUsageAdmin). Scopri come concedere i ruoli.gcloud services enable compute.googleapis.com
container.googleapis.com artifactregistry.googleapis.com cloudbuild.googleapis.com logging.googleapis.com cloudresourcemanager.googleapis.com servicenetworking.googleapis.com Abilita il account di servizio Compute Engine predefinito per il tuo progettoGoogle Cloud :
export PROJECT_NUMBER="$(gcloud projects describe "YOUR_PROJECT_ID" --format "value(project_number)")" gcloud iam service-accounts enable "${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \ --project=YOUR_PROJECT_IDConcedi i ruoli IAM con privilegi minimi necessari al account di servizio Compute Engine predefinito per creare l'immagine container e eseguire il carico di lavoro di fine tuning:
ROLES=( "roles/artifactregistry.writer" "roles/cloudbuild.builds.builder" "roles/logging.logWriter" "roles/monitoring.metricWriter" "roles/monitoring.viewer" "roles/stackdriver.resourceMetadata.writer" "roles/storage.objectViewer" ) for role in "${ROLES[@]}"; do gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \ --member="serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \ --role="${role}" 1>/dev/null done unset ROLESVerifica che i ruoli siano stati concessi al account di servizio Compute Engine predefinito:
echo "Displaying roles for ${PROJECT_NUMBER}-compute@developer.gserviceaccount.com:" gcloud projects get-iam-policy YOUR_PROJECT_ID \ --flatten="bindings[].members" \ --filter="bindings.members:serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \ --format="table(bindings.role)"Crea credenziali di autenticazione locali per il tuo account utente:
gcloud auth application-default login
Attiva OS Login per il tuo progetto:
gcloud compute project-info add-metadata \ --metadata=enable-oslogin=TRUE \ --project=YOUR_PROJECT_ID
Accedere a Gemma 4 utilizzando Hugging Face
Per utilizzare Hugging Face per accedere a Gemma 4, completa i seguenti passaggi:
- Accedi a Hugging Face e accetta il contratto di licenza di Gemma 4.
- Crea un token di accesso
writedi Hugging Face.
Fai clic su Il tuo profilo > Impostazioni > Token di accesso > +Crea nuovo token. - Copia e salva il valore del token di accesso
write. Utilizzi questo token per scaricare il modello di base e fare il push dei checkpoint dell'adattatore ottimizzato all'hub Hugging Face prima che GKE faccia lo scale down dei nodi GPU.
prepara l'ambiente
Per preparare l'ambiente, imposta le seguenti variabili di ambiente:
Sostituisci quanto segue:
YOUR_PROJECT_ID: l'ID del progetto Google Cloud in cui vuoi creare il cluster GKE.
YOUR_CLUSTER_NAME: il nome del cluster GKE da creare.
YOUR_REGION: la regione in cui vuoi creare il cluster GKE. Puoi creare il cluster solo nella regione in cui esiste la prenotazione.
YOUR_RESERVATION_NAME: l'identificatore della capacità riservata.
YOUR_HF_TOKEN: il token di accesso
writedi Hugging Face che hai creato nella sezione precedente.YOUR_ARTIFACT_REGISTRY_LOCATION: la Google Cloud regione (ad esempio,
us-central1) in cui vuoi creare il repository Artifact Registry. Per ridurre al minimo la latenza di pull delle immagini, utilizza la stessa regione che hai specificato per YOUR_REGION.YOUR_NUMBER_OF_NODES: il numero di nodi VM A4 nel tuo job di perfezionamento. Per questo tutorial multi-host con 16 GPU NVIDIA B200 in due istanze
a4-highgpu-8g, imposta questo valore su2.
Crea un cluster GKE multihost in modalità Autopilot
Crea un cluster GKE multihost in modalità Autopilot:
La creazione del cluster GKE potrebbe richiedere diversi minuti. Per verificare che Google Cloud abbia terminato la creazione del cluster, vai a Cluster Kubernetes nella console Google Cloud .
Configura kubectl per comunicare con il tuo cluster GKE
Configura kubectl per comunicare con il cluster GKE:
Crea un secret Kubernetes per le credenziali di Hugging Face
Crea un secret Kubernetes per archiviare il token Hugging Face:
Prepara il workload
Per preparare il workload:
Crea script del workload
Per creare i file di configurazione e gli script utilizzati dal tuo workload di fine tuning, completa i seguenti passaggi:
Crea una directory per gli script del workload. Usa questa directory come directory di lavoro.
Crea il file
cloudbuild.yamlper creare l'immagine container del tuo workload con Cloud Build ed eseguirne il push su Artifact Registry:Crea un file
Dockerfileper definire l'ambiente e installare le dipendenze necessarie per completare il job di perfezionamento:Crea il file
accel_fsdp_gemma4_config.yaml. Questa configurazione indirizza Hugging Face Accelerate per partizionareGemma4TextDecoderLayersu 16 GPU su due host utilizzando FSDP v2:Crea il manifest
finetune.yamlKubernetesJobSet:Crea lo script di fine-tuning supervisionato
finetune.py:
Utilizza Docker e Cloud Build per creare un container di fine tuning
Crea un repository Docker Artifact Registry:
Installa le definizioni di risorse personalizzate (CRD)
JobSetrichieste per orchestrare i workload multihost:Nella directory
llm-finetuning-gemmache hai creato in un passaggio precedente, invia la build del container a Cloud Build:Esporta l'URL dell'immagine container multihost. Lo utilizzerai in un passaggio successivo di questo tutorial, quando esegui il deployment del manifest
JobSet:
Avvia il workload di perfezionamento
Per eseguire il deployment e monitorare il carico di lavoro di fine tuning distribuito, completa i seguenti passaggi:
Sostituisci le variabili di ambiente nel manifest di fine tuning per creare il job di fine tuning:
Poiché il cluster viene eseguito in modalità GKE Autopilot, potrebbero essere necessari alcuni minuti per eseguire il provisioning dei due nodi A4 abilitati per la GPU e estrarre l'immagine container.
Osserva i pod worker finché entrambi non passano allo stato
Running:Dopo che i pod worker passano a
Running, trasmetti in streaming i log di addestramento:
Monitora il workload
Puoi monitorare l'utilizzo della GPU nel cluster GKE per verificare che tutte le 16 GPU di entrambi gli host A4 stiano elaborando attivamente i passaggi di addestramento. Genera e apri il link di osservabilità nel browser:
Quando monitori il carico di lavoro, prevedi il seguente comportamento:
- Utilizzo della GPU: per un job di messa a punto distribuita integro, puoi aspettarti di vedere l'utilizzo della GPU su tutte le 16 GPU NVIDIA B200 aumentare e stabilizzarsi tra il 95% e il 100% durante i passaggi di addestramento.
- Durata del job: in due nodi
a4-highgpu-8g(16 GPU B200), il job di perfezionamento di 3 epoche richiede circa 2 ore e mezza per essere completato.
Visualizzare i pesi dell'adattatore ottimizzato
Al termine dell'addestramento, visualizza i pesi dell'adattatore LoRA ottimizzato e
i checkpoint su Hugging Face Hub all'indirizzo
https://huggingface.co/YOUR_HF_USERNAME/gemma-31b-text-to-sql.
Esegui la pulizia
Per evitare addebiti aggiuntivi, elimina le risorse create durante questo tutorial.
Eliminare le risorse
Elimina l'ottimizzazione
JobSet:Elimina il cluster GKE:
Elimina il repository Artifact Registry: