Questo tutorial mostra come ottimizzare un modello linguistico di grandi dimensioni (LLM) Gemma 4 su un cluster Google Kubernetes Engine (GKE) single-host e multi-GPU su Google Cloud. Questo cluster utilizza un'istanza di macchina virtuale (VM) A4 singola con 8 GPU NVIDIA B200 collegate.
I due processi principali descritti in questo tutorial sono i seguenti:
- Esegui il deployment di un cluster GKE ad alte prestazioni utilizzando GKE Autopilot. Nell'ambito di questo deployment, utilizzi Cloud Build per creare un'immagine container personalizzata con il software necessario preinstallato.
- Dopo il deployment del cluster, esegui un job di ottimizzazione che utilizza Fully Sharded Data Parallel (FSDP) per suddividere il modello in shard su tutte e otto le GPU di un singolo nodo A4 (
a4-highgpu-8g). Il job utilizza l'insieme di script che accompagnano questo tutorial e sfrutta la libreria Hugging Face Accelerate.
Questo tutorial è rivolto a machine learning engineer, ricercatori, amministratori e operatori di piattaforme, nonché a specialisti di dati e AI interessati a eseguire il deployment di cluster GKE su Google Cloud per addestrare LLM.
Obiettivi
Accedi al modello Gemma 4 utilizzando Hugging Face.
Prepara l'ambiente.
Crea un cluster GKE A4 ed eseguine il deployment.
Ottimizza il modello Gemma 4 utilizzando la libreria Hugging Face Accelerate con Fully Sharded Data Parallel (FSDP).
Monitorare il job.
Eseguire la pulizia.
Costi
In questo documento vengono utilizzati i seguenti componenti fatturabili di Google Cloud:
- Compute Engine
- Google Kubernetes Engine (GKE)
- Artifact Registry
- Cloud Build
- Cloud Storage
- Cloud Logging
Per generare una stima dei costi in base all'utilizzo previsto, utilizza il Calcolatore prezzi.
Prima di iniziare
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 hai già questa autorizzazione tramite il ruolo Proprietario (roles/owner). In caso contrario, puoi ottenere questa autorizzazione tramite il ruolo Amministratore di Service Usage (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 Attiva il account di servizio predefinito per il tuo progetto Google Cloud :
export PROJECT_NUMBER="$(gcloud projects describe "YOUR_PROJECT_ID" --format "value(project_number)")" gcloud iam service-accounts enable "${PROJECT_NUMBER}-compute@" \ --project=YOUR_PROJECT_ID
Concedi i ruoli necessari al account di servizio predefinito per eseguire il workload di ottimizzazione:
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@" \ --role="${role}" 1>/dev/null done unset ROLES
Per verificare che i ruoli siano stati concessi, esegui questo comando:
gcloud projects get-iam-policy YOUR_PROJECT_ID \ --flatten="bindings[].members" \ --filter="bindings.members:serviceAccount:${PROJECT_NUMBER}-compute@" \ --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
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) - Artifact Registry Administrator (
roles/artifactregistry.admin) - Cloud Build Editor (
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.
Accedi a Gemma 4 utilizzando Hugging Face
Per utilizzare Hugging Face per accedere a Gemma 4, segui questi passaggi:
- Accedi a Hugging Face
- Crea un token di accesso
writeHugging Face.
Fai clic su Il tuo profilo > Impostazioni > Token di accesso > +Crea nuovo token - Copia e salva il valore del token
write access. Lo utilizzerai più avanti in questo tutorial.
prepara l'ambiente
Per preparare l'ambiente, imposta quanto segue:
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 tuo 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 Hugging Face che hai creato nella sezione precedente.
YOUR_ARTIFACT_REGISTRY_LOCATION: la regione Google Cloud in cui vuoi creare il repository Artifact Registry. Per ridurre al minimo la latenza di pull delle immagini, ti consigliamo di utilizzare la stessa regione che hai utilizzato per YOUR_REGION.
Crea un cluster GKE in modalità Autopilot
Per creare un cluster GKE in modalità Autopilot, esegui questo comando:
La creazione del cluster GKE potrebbe richiedere un po' di tempo. Per verificare che Google Cloud abbia terminato la creazione del cluster, vai a Cluster Kubernetes nella console Google Cloud .
Crea un secret di Kubernetes per le credenziali di Hugging Face
Per creare un secret di Kubernetes per le credenziali di Hugging Face, segui questi passaggi:
Configura
kubectlper comunicare con il tuo cluster GKE:Crea un secret di Kubernetes per archiviare il token Hugging Face:
Prepara il workload
Per preparare il workload, segui questi passaggi:
Crea script del workload
Per creare gli script utilizzati dal workload di ottimizzazione, segui questi passaggi:
Crea una directory per gli script del workload. Utilizza questa directory come directory di lavoro.
Crea il file
cloudbuild.yamlper utilizzare Google Cloud Build. Questo file crea il container del workload e lo archivia in Artifact Registry:Crea un file
Dockerfileper eseguire il job di ottimizzazione:Crea il file
accel_fsdp_gemma4_config.yaml. Questo file di configurazione indica a Hugging Face Accelerate di suddividere il job di ottimizzazione tra le otto GPU locali sul tuo singolo host utilizzando FSDP:Crea il file
finetune.yaml:Crea il file
finetune.py:
Utilizza Docker e Cloud Build per creare un container di ottimizzazione
Crea un repository Docker di Artifact Registry:
Nella directory
llm-finetuning-gemmache hai creato in un passaggio precedente, esegui questo comando per creare l'immagine di ottimizzazione ed eseguirne il push ad Artifact Registry.Esporta l'URL dell'immagine. Lo utilizzerai in un passaggio successivo di questo tutorial:
Avvia il workload di ottimizzazione
Per avviare il workload di ottimizzazione, segui questi passaggi:
Applica il manifest di ottimizzazione per creare il job di ottimizzazione:
Poiché utilizzi i cluster in modalità GKE Autopilot, l'avvio del nodo abilitato per la GPU potrebbe richiedere alcuni minuti.
Monitora il job eseguendo questo comando:
Una volta che i pod sono in esecuzione, controlla i log del job:
La risorsa del job scarica i dati del modello, quindi ottimizza il modello su tutte e otto le GPU. Il download richiede circa cinque minuti. Al termine del download, il processo di ottimizzazione richiede circa 45 minuti. Il job salva un checkpoint ogni 20 passaggi e invia l'adattatore Low-Rank Adaptation (LoRA) ottimizzato a un repository Hugging Face privato denominato
gemma-31b-text-to-sql.Al termine del job, recupera l'URL del modello ottimizzato su Hugging Face, quindi aprilo nel browser:
Monitora il workload
Puoi monitorare l'utilizzo delle GPU nel tuo cluster GKE per verificare che il job di ottimizzazione venga eseguito in modo efficiente. Per farlo, apri il seguente link nel browser:
Quando monitori il workload, puoi visualizzare quanto segue:
- Utilizzo delle GPU: per un job di ottimizzazione integro, dovresti vedere l'utilizzo di tutte e 8 le GPU aumentare e stabilizzarsi a un livello elevato durante l'addestramento.
- Durata del job: il completamento del job dovrebbe richiedere circa 45 minuti sul cluster A4 specificato.
Esegui la pulizia
Per evitare che ti vengano addebitati costi aggiuntivi, elimina le risorse create durante questo tutorial.
Elimina le risorse
Per eliminare il job di ottimizzazione, esegui questo comando:
Per eliminare il cluster GKE, esegui questo comando:
Per eliminare il repository Artifact Registry, esegui questo comando: