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
Nella console Google Cloud , attiva Cloud Shell.
Nella parte inferiore della console Google Cloud , viene avviata una sessione di Cloud Shell e viene visualizzato un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già installata e con valori già impostati per il progetto corrente. L'inizializzazione della sessione può richiedere alcuni secondi.
REST
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.
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere 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}"
Passaggi successivi
- Esegui un workload batch con Pathways
- Esegui un workload interattivo con Pathways
- Addestramento resiliente con Pathways
- Porting dei workload JAX su Pathways
- Risolvi i problemi relativi a Pathways on Cloud