Questo tutorial mostra come ottimizzare un modello linguistico di grandi dimensioni (LLM) Gemma 3 su un cluster GKE Autopilot multi-host su Google Cloud. Questo cluster utilizza due istanze di macchine virtuali (VM) A4 con un totale di 16 GPU NVIDIA B200.
I due processi principali descritti in questo tutorial sono i seguenti:
- Esegui il deployment di un cluster GKE multi-host ad alte prestazioni utilizzando GKE Autopilot. Nell'ambito di questo deployment, creerai un'immagine VM personalizzata con il software necessario preinstallato.
- Dopo aver eseguito il deployment del cluster, esegui un job di ottimizzazione distribuito utilizzando l'insieme di script che accompagnano questo tutorial. Il job utilizza 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 3 utilizzando Hugging Face.
Prepara l'ambiente.
Crea un cluster GKE A4 ed eseguine il deployment.
Ottimizza il modello Gemma 3 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:
Per generare una stima dei costi in base all'utilizzo previsto, utilizza il Calcolatore prezzi.
Prima di iniziare
-
Installa Google Cloud CLI.
-
Configura gcloud CLI per utilizzare la tua identità federata.
Per saperne di più, consulta Accedi a gcloud CLI con la tua identità federata.
-
Per inizializzare gcloud CLI, esegui questo comando:
gcloud init -
Crea o seleziona un progetto Google Cloud .
Ruoli richiesti per selezionare o creare un progetto
- Seleziona un progetto: la selezione di un progetto non richiede un ruolo IAM specifico. Puoi selezionare qualsiasi progetto per cui ti è stato concesso un ruolo.
-
Crea un progetto: per creare un progetto, devi disporre del ruolo Autore progetto (
roles/resourcemanager.projectCreator), che contiene l'autorizzazioneresourcemanager.projects.create. Scopri come concedere i ruoli.
-
Crea un progetto Google Cloud :
gcloud projects create PROJECT_ID
Sostituisci
PROJECT_IDcon un nome per il progetto Google Cloud che stai creando. -
Seleziona il progetto Google Cloud che hai creato:
gcloud config set project PROJECT_ID
Sostituisci
PROJECT_IDcon il nome del progetto Google Cloud .
-
Verifica che la fatturazione sia attivata per il tuo progetto Google Cloud .
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 file.googleapis.com logging.googleapis.com cloudresourcemanager.googleapis.com servicenetworking.googleapis.com -
Concedi i ruoli al tuo account utente. Esegui il seguente comando una volta per ciascuno dei seguenti ruoli IAM:
roles/compute.admin, roles/iam.serviceAccountUser, roles/cloudbuild.builds.editor, roles/artifactregistry.admin, roles/storage.admin, roles/serviceusage.serviceUsageAdmingcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
Sostituisci quanto segue:
PROJECT_ID: il tuo ID progetto.USER_IDENTIFIER: l'identificatore del tuo account . Per esempi, consulta Rappresenta gli utenti del pool di forza lavoro nelle policy IAM.ROLE: il ruolo IAM che concedi al tuo account utente.
- Attiva il account di servizio predefinito per il tuo progetto Google Cloud :
export PROJECT_NUMBER="$(gcloud projects describe "PROJECT_ID" --format "value(project_number)")" gcloud iam service-accounts enable "${PROJECT_NUMBER}-compute@ \ --project=PROJECT_ID
- Concedi il ruolo Editor (
roles/editor) al service account predefinito:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:PROJECT_NUMBER-compute@" \ --role=roles/editor
- 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
- Accedi o crea un account Hugging Face.
Accedi a Gemma 3 utilizzando Hugging Face
Per utilizzare Hugging Face per accedere a Gemma 3, segui questi passaggi:
- Accedi a Hugging Face
- Crea un token di accesso
writeHugging Face.
Fai clic su Your Profile (Il tuo profilo) > Settings (Impostazioni) > Access tokens (Token di accesso) > +Create new token (+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:
PROJECT_ID: il nome del progetto Google Cloud in cui vuoi creare il cluster GKE.
CLUSTER_NAME: il nome del cluster GKE da creare.
CLUSTER_REGION: la regione in cui vuoi creare il tuo cluster GKE. Puoi creare il cluster solo nella regione in cui esiste la prenotazione.
RESERVATION: l'identificatore della capacità riservata.
HF_TOKEN: il token di accesso Hugging Face che hai creato nella sezione precedente.
ARTIFACT_REPO_LOCATION: la località in cui vuoi creare il repository Artifact Registry.
NUM_NODES: il numero di nodi che vuoi che abbia il cluster GKE.
NETWORK: la rete da utilizzare.
Crea un cluster GKE multi-host in modalità Autopilot
Crea un cluster GKE multi-host in modalità Autopilot:
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 .
Ottieni le credenziali per il tuo cluster GKE
Configura kubectl per comunicare con il cluster GKE appena creato eseguendo questo comando:
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 definire l'ambiente e installare le dipendenze necessarie per completare il job di ottimizzazione:Crea il file
accel_fsdp_gemma3_config.yaml. Questo file di configurazione indica ad Hugging Face Accelerate di suddividere il job di ottimizzazione su più GPU.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:
Installa le definizioni di risorse personalizzate (CRD) JobSet necessarie per orchestrare i workload multi-host.
JobSet è un'estensione di Kubernetes utilizzata per gestire gruppi di job correlati. Per saperne di più su JobSet, consulta la documentazione esterna di JobSet.
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:
Controlla i log del pod del worker primario eseguendo questo comando:
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 due ore e 30 minuti.
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 10 minuti sul cluster A4 specificato.
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 risorse
Per eliminare il JobSet, esegui questo comando:
Per eliminare il cluster GKE, esegui questo comando:
Per eliminare il repository Artifact Registry, esegui questo comando:
Elimina il progetto
Elimina un progetto Google Cloud :
gcloud projects delete PROJECT_ID