Questo tutorial mostra come ottimizzare il modello linguistico di grandi dimensioni (LLM) Gemma 3 su un cluster Slurm multi-nodo che utilizza due istanze di macchine virtuali (VM) A4. Nell'ambito di questo tutorial, svolgerai le seguenti attività:
Crea un'immagine personalizzata.
Configura una rete RDMA.
Esegui un job di ottimizzazione distribuita. Per un addestramento efficiente su più nodi, utilizza la libreria Hugging Face Accelerate con Fully Sharded Data Parallel (FSDP).
Questo tutorial è rivolto a ingegneri di machine learning (ML), amministratori e operatori di piattaforme e a specialisti di dati e AI interessati a utilizzare le funzionalità di pianificazione dei job di Slurm per gestire i workload di fine-tuning.
Obiettivi
Accedi a Gemma 3 utilizzando Hugging Face.
Prepara l'ambiente.
Crea un cluster Slurm A4.
Prepara il workload.
Esegui un job di ottimizzazione.
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) Enterprise edition
- Filestore
- Cloud Storage
- Cloud Logging
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 ulteriori informazioni, vedi Accedi a gcloud CLI con la tua identità federata.
-
Per inizializzare gcloud CLI, esegui questo comando:
gcloud init -
Crea o seleziona un Google Cloud progetto.
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.
-
Creare 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 l'API richiesta:
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 dei servizi (roles/serviceusage.serviceUsageAdmin). Scopri come concedere i ruoli.gcloud services enable compute.googleapis.com file.googleapis.com logging.googleapis.com cloudresourcemanager.googleapis.com servicenetworking.googleapis.com
-
Concedi ruoli al tuo account utente. Esegui il seguente comando una volta per ciascuno dei seguenti ruoli IAM:
roles/compute.admin, roles/iam.serviceAccountUser, roles/file.editor, 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 utente account. Per esempi, vedi Rappresenta gli utenti del pool di forza lavoro nelle policy IAM.ROLE: il ruolo IAM che concedi al tuo account utente.
- Abilita il account di servizio predefinito per il tuo progetto Google Cloud :
gcloud iam service-accounts enable PROJECT_NUMBER-compute@ \ --project=PROJECT_ID
Sostituisci PROJECT_NUMBER con il numero del progetto. Per rivedere il numero del progetto, consulta Ottenere un progetto esistente.
- 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 le credenziali di autenticazione locale 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.
Accedere a Gemma 3 utilizzando Hugging Face
Per utilizzare Hugging Face per accedere a Gemma 3, segui questi passaggi:
Crea un token di accesso
readdi Hugging Face. Fai clic su Il tuo profilo > Impostazioni > Token di accesso > +Crea nuovo token.Copia e salva il valore del token
read access. Lo utilizzerai più avanti in questo tutorial.
Installa Cluster Toolkit
Per saperne di più sull'utilizzo di gcluster e sulla gestione dei cluster, consulta la panoramica di Cluster Toolkit.
Prepara la versione di Cluster Toolkit:
Scarica la release:
Definisci il percorso
gcluster:
prepara l'ambiente
Per preparare l'ambiente:
Imposta le variabili di ambiente predefinite:
Sostituisci quanto segue:
YOUR_PROJECT_ID: l'ID del Google Cloud progetto in cui vuoi creare il bucket Cloud Storage.YOUR_ZONE: la zona in cui esiste la prenotazione.YOUR_REGION: la regione in cui esiste la prenotazione.RESERVATION_NAME: l'URL o il nome della prenotazione che vuoi utilizzare per creare il cluster Slurm.YOUR_CLUSTER_NAME: il nome del cluster Slurm che vuoi creare.YOUR_GCS_BUCKET: un nome per il bucket Cloud Storage che rispetti i requisiti di denominazione dei bucket.YOUR_HF_TOKEN: il token di accesso a Hugging Face creato nella sezione precedente.
Crea un bucket Cloud Storage:
Crea un cluster Slurm A4
Per creare un cluster Slurm A4:
Crea il file
a4high-slurm-deployment.yaml:Prepara i file manifest:
Crea i manifest Terraform:
Applica patch ai manifest:
Esegui il deployment del cluster:
Il comando
gcluster deployè un processo in due fasi, che è il seguente:La prima fase crea un'immagine personalizzata con tutto il software preinstallato, il cui completamento può richiedere fino a 45 minuti.
La seconda fase esegue il deployment del cluster utilizzando l'immagine personalizzata. Il completamento di questo processo richiede in genere meno tempo rispetto alla prima fase.
Se la prima fase va a buon fine, ma la seconda no, puoi provare a eseguire nuovamente il deployment del cluster Slurm saltando la prima fase:
Prepara il workload
Per preparare il workload:
Crea script del workload
Per creare gli script che verranno utilizzati dal tuo workload di messa a punto:
Per configurare l'ambiente virtuale Python, crea il file
install_environment.shcon i seguenti contenuti:Per specificare le configurazioni per il job di perfezionamento, crea il file
accelerate_config.yamlcon i seguenti contenuti:Per specificare le attività da eseguire nei job sul cluster Slurm, crea il file
submit.slurmcon il seguente contenuto:Per specificare le dipendenze per il job di perfezionamento, crea il file
requirements.txtcon i seguenti contenuti:Per specificare le istruzioni per il job, crea il file
train.pycon il seguente contenuto:
Carica gli script nel cluster Slurm
Per caricare gli script creati nella sezione precedente nel cluster Slurm, segui questi passaggi:
Imposta la variabile
LOGIN_NODErecuperando il nome del nodo di accesso per il cluster:La variabile
LOGIN_NODEmemorizza un valore simile a${CLUSTER_NAME}-login-001.Carica gli script nella home directory del nodo di accesso:
Connettiti al cluster Slurm
Connettiti al nodo di accesso e propaga il token Hugging Face alla nuova sessione:
Installare framework e strumenti
Dopo aver eseguito la connessione al nodo di accesso, configura un ambiente virtuale Python con le dipendenze richieste:
Avvia il carico di lavoro di perfezionamento
Per avviare il carico di lavoro di ottimizzazione, segui questi passaggi:
Invia il job al pianificatore Slurm e raccogli l'ID job:
Sul nodo di accesso del cluster Slurm, puoi monitorare l'avanzamento del job controllando i file di output creati nella directory
home:Se il job viene avviato correttamente, il file
.errmostra una barra di avanzamento che si aggiorna man mano che il job procede.
Monitorare il workload
Puoi monitorare l'utilizzo delle GPU nel cluster Slurm per verificare che il job di ottimizzazione venga eseguito in modo efficiente. Per farlo, apri il seguente link nel browser:
https://console.cloud.google.com/monitoring/metrics-explorer?project=PROJECT_ID&pageState=%7B%22xyChart%22%3A%7B%22dataSets%22%3A%5B%7B%22timeSeriesFilter%22%3A%7B%22filter%22%3A%22metric.type%3D%5C%22agent.googleapis.com%2Fgpu%2Futilization%5C%22%20resource.type%3D%5C%22gce_instance%5C%22%22%2C%22perSeriesAligner%22%3A%22ALIGN_MEAN%22%7D%2C%22plotType%22%3A%22LINE%22%7D%5D%7D%7D
Quando monitori il carico di lavoro, puoi visualizzare quanto segue:
Utilizzo delle GPU: per un job di messa a punto ottimale, puoi aspettarti di vedere l'utilizzo di tutte le 16 GPU (8 GPU per ogni VM nel cluster) aumentare e stabilizzarsi a un livello specifico durante l'addestramento.
Durata del job: il completamento del job dovrebbe richiedere circa un'ora.
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 il cluster Slurm
Per eliminare il cluster Slurm:
Se devi eliminare tutte le reti VPC, le regole firewall, i router, gli IP e le subnet associati al progetto, procedi nel seguente modo:
Elimina il progetto
Elimina un progetto Google Cloud :
gcloud projects delete PROJECT_ID