Questa pagina mostra agli amministratori della piattaforma e agli ingegneri di machine learning (ML) come creare un cluster Cluster Director orchestrato da Slurm e configurarlo per i workload Pathways. Completando questi passaggi, esegui il provisioning di un cluster con sezioni TPU v6e, un nodo controller della CPU, un file system Google Cloud Managed Lustre condiviso e l'ambiente di runtime /home/pathways. Pathways non è preinstallato su un cluster Cluster Director: dopo aver creato il cluster, scarichi gli script Pathways sul nodo di accesso ed esegui uno script di configurazione una volta.
Prima di iniziare
-
Seleziona la scheda relativa al modo in cui prevedi di utilizzare gli esempi in questa pagina:
gcloud
Installa Google Cloud CLI, quindi accedi a gcloud CLI con la tua identità federata. Dopo aver eseguito l'accesso, inizializza Google Cloud CLI eseguendo il comando seguente:
gcloud initREST
Per utilizzare gli esempi di API REST in questa pagina in un ambiente di sviluppo locale, utilizzi le credenziali che fornisci a gcloud CLI.
Installa Google Cloud CLI, quindi accedi a gcloud CLI con la tua identità federata.
Per saperne di più, consulta Autenticati per usare REST nella documentazione sull'autenticazione di Google Cloud .
Prima di iniziare
Prima di iniziare, completa i seguenti prerequisiti:
- Installa Google Cloud CLI.
- Abilita l'API Hypercompute Cluster.
- Assicurati che il tuo account utente e l'account di servizio predefinito di Compute Engine dispongano dei ruoli di Identity and Access Management (IAM) necessari per creare un cluster Cluster Director e connetterti. Per l'elenco dei ruoli, consulta Prima di iniziare nella guida rapida di Cluster Director.
- Crea una prenotazione TPU v6e nella zona in cui prevedi di creare il cluster (ad esempio, almeno quattro VM
ct6e-standard-4tper due sezioni2x4). - Configura
sudosenza password sui nodi del cluster per il recupero automatico delle sezioni. Chiedi all'amministratore di concederti il ruolo Compute OS Admin Login (roles/compute.osAdminLogin) nel progetto. - Crea un bucket Cloud Storage per i dati temporanei e gli output dei workload di Pathways e concedi il ruolo Storage Object User (
roles/storage.objectUser) sul progetto al tuo account utente e al account di servizio predefinito di Compute Engine.
Configura l'ambiente locale
Accedi con le tue credenziali Google Cloud :
gcloud auth login
Definisci le seguenti variabili di ambiente con valori appropriati per il tuo workload:
export PROJECT=PROJECT_ID export REGION=REGION export ZONE=ZONE export CLUSTER_ID=CLUSTER_ID export RESERVATION_NAME=RESERVATION_NAME
Sostituisci quanto segue:
PROJECT_ID: il tuo ID progettoGoogle Cloud .REGION: la regione in cui crei le risorse.ZONE: la zona in cui crei le risorse.CLUSTER_ID: il nome del cluster. Il nome può contenere fino a 10 caratteri e può utilizzare solo numeri e lettere minuscole.RESERVATION_NAME: il nome della prenotazione di TPU v6e inZONE.
Crea un cluster Cluster Director
Nell'esempio seguente, crei un cluster con due sezioni TPU v6e 2x4
(quattro VM ct6e-standard-4t) dalla tua prenotazione e un nodo CPU per il
controller Pathways. Tutti i nodi montano un file system Managed Lustre condiviso in /home. Per saperne di più sui campi nella definizione del cluster, consulta Crea un cluster personalizzato.
Crea il cluster utilizzando l'API REST:
Crea il corpo della richiesta:
cat <<EOF > "${CLUSTER_ID}_create.json" { "networkResources": { "net": { "config": { "newNetwork": { "network": "projects/${PROJECT}/global/networks/${CLUSTER_ID}-net" } } } }, "storageResources": { "home": { "config": { "newLustre": { "lustre": "projects/${PROJECT}/locations/${ZONE}/instances/${CLUSTER_ID}-lustre", "filesystem": "lustre", "capacityGb": "18000", "perUnitStorageThroughput": "500" } } } }, "computeResources": { "crtpu": { "config": { "newReservedInstances": { "reservation": "projects/${PROJECT}/zones/${ZONE}/reservations/${RESERVATION_NAME}" } } }, "crcpu": { "config": { "newOnDemandInstances": { "zone": "${ZONE}", "machineType": "n2-highmem-32" } } } }, "orchestrator": { "slurm": { "loginNodes": { "count": "1", "zone": "${ZONE}", "machineType": "n2-standard-16", "enableOsLogin": true, "enablePublicIps": true, "bootDisk": { "type": "pd-balanced", "sizeGb": "100" }, "storageConfigs": [ { "id": "home", "localMount": "/home" } ] }, "nodeSets": [ { "id": "nstpu", "computeId": "crtpu", "staticNodeCount": "4", "maxDynamicNodeCount": "0", "enablePublicIps": true, "resourcePolicyConfig": { "acceleratorTopology": "2x4" }, "computeInstance": { "bootDisk": { "type": "hyperdisk-balanced", "sizeGb": "100" } }, "storageConfigs": [ { "id": "home", "localMount": "/home" } ] }, { "id": "nscpu", "computeId": "crcpu", "staticNodeCount": "1", "maxDynamicNodeCount": "0", "enablePublicIps": true, "computeInstance": { "bootDisk": { "type": "pd-balanced", "sizeGb": "100", "image": "projects/clusterdirector-public-images/global/images/family/tpu-v6e-v5p-ubuntu2204-slurm2605-v20260902" } }, "storageConfigs": [ { "id": "home", "localMount": "/home" } ] } ], "partitions": [ { "id": "tpu", "nodeSetIds": ["nstpu"] }, { "id": "cpu", "nodeSetIds": ["nscpu"] } ], "defaultPartition": "tpu", "config": { "requeueExitCodes": [1, 2, 134, 137, 139, 143] } } } } EOFPoi invia la richiesta:
curl -s -X POST \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -d @"${CLUSTER_ID}_create.json" \ "https://hypercomputecluster.googleapis.com/v1alpha/projects/${PROJECT}/locations/${REGION}/clusters?clusterId=${CLUSTER_ID}"Il cluster include:
- Partizione
tpu: un set di nodi statico di VM TPU v6e prenotate.staticNodeCountè il numero di VM eacceleratorTopologyè la topologia di ogni sezione. Ogni VMct6e-standard-4tha quattro chip, quindi una sezione2x4ha due VM. Per più sezioni, moltiplica: due sezioni2x4richiedono unstaticNodeCountdi4. - Partizione
cpu: una VM on demand che esegue il gestore delle risorse Pathways, il server proxy IFRT e il client MaxText. Gli script Pathways inviano i job a una partizione denominatacpu. La VM utilizza il tipo di macchinan2-highmem-32perché il servizio Pathways e MaxText insieme richiedono fino a 240 GB di memoria durante il salvataggio dei checkpoint. Utilizza anche un'immagine con Slurm 26.05, che supporta le sezioni TPU, perché il servizio Pathways invia i job dei worker TPU da questa VM. requeueExitCodes: Slurm inserisce nuovamente in coda un job che esce con uno di questi codici. Questa impostazione consente a Slurm di riavviare un job worker TPU quando viene prerilasciata una VM nello slice, non solo la prima.
- Partizione
Attendi che il cluster sia pronto. Puoi seguire l'avanzamento nella pagina Cluster Director nella console Google Cloud oppure verificare che
reconcilingsiafalsenell'output del seguente comando:curl -s \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://hypercomputecluster.googleapis.com/v1alpha/projects/${PROJECT}/locations/${REGION}/clusters/${CLUSTER_ID}"
Configura l'ambiente Pathways
L'ambiente Pathways si trova in /home/pathways nel file system condiviso, quindi
lo configuri una volta per cluster. Contiene le immagini container Pathways, un ambiente Python con JAX e pathwaysutils e gli script Pathways.
Connettiti al nodo di accesso. Per altri modi per connetterti, consulta Connettiti a un cluster.
gcloud compute ssh ${CLUSTER_ID}-login-001 \ --project=${PROJECT} \ --zone=${ZONE} \ --tunnel-through-iapVerifica che le partizioni
cpuetpuesistano e siano nello statoidle:sinfo -o "%P %a %D %T %N %f"L'output è simile al seguente:
PARTITION AVAIL NODES STATE NODELIST FEATURES tpu* up 4 idle ${CLUSTER_ID}-nstpu-[0-3] cpu up 1 idle ${CLUSTER_ID}-nscpu-0Scarica gli script Pathways sul nodo di accesso:
mkdir -p ~/pathways-scripts && cd ~/pathways-scripts for f in setup_env.sh start_pathways.sh run_worker_slice.sh run_maxtext.sh; do curl -fsSLO "https://raw.githubusercontent.com/GoogleCloudPlatform/slurm-gcp/tpu-2605/pathways/scripts/${f}" doneQuesto comando scarica i seguenti script:
setup_env.sh: esegue una configurazione una tantum dell'ambiente Pathways.start_pathways.sh: avvia il servizio Pathways.run_worker_slice.sh: avvia il worker Pathways per una sezione TPU (inviata dastart_pathways.sh).run_maxtext.sh: esegue un workload di addestramento MaxText di esempio.
Esegui lo script di configurazione. Ci vogliono circa 5 minuti:
chmod +x *.sh ./setup_env.shLo script estrae le immagini del server e del proxy Pathways, crea un ambiente Python con JAX,
pathwaysutilse MaxText, copia gli script in/home/pathwayse collega~/pathwaysa/home/pathways. Termina con un output simile al seguente:Environment ready: JAX 0.11.1(Facoltativo) Per consentire ad altri utenti del cluster di accedere all'ambiente Pathways, chiedi loro di collegare
/home/pathwaysalla propria home directory:ln -sfn /home/pathways ~/pathways
A questo punto, il cluster è pronto per Pathways. Il servizio Pathways viene avviato nell'ambito dell'esecuzione di un workload, perché i workload batch e interattivi lo avviano con impostazioni diverse. Per ulteriori informazioni, consulta Esegui un workload batch con Pathways ed Esegui un workload interattivo con Pathways.
Se riscontri problemi, consulta Risolvi i problemi relativi a Pathways on Cloud.
Pulizia
Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questa pagina, elimina il cluster Cluster Director quando hai finito:
curl -s -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://hypercomputecluster.googleapis.com/v1alpha/projects/${PROJECT}/locations/${REGION}/clusters/${CLUSTER_ID}"