En esta página, se muestra a los administradores de plataformas y a los ingenieros de aprendizaje automático (AA) cómo
crear un clúster de Cluster Director
organizado por Slurm y configurarlo para
las cargas de trabajo de Pathways. Cuando completes estos pasos, aprovisionarás un clúster con porciones de TPU
v6e, un nodo de controlador de CPU, un sistema de archivos de Google Cloud Managed Lustre compartido
y el entorno de ejecución de /home/pathways. Pathways no está preinstalado en un
clúster de Cluster Director: después de crear el clúster, descargas
las secuencias de comandos de Pathways en el nodo de acceso y ejecutas una secuencia de comandos de configuración una vez.
Antes de comenzar
-
Selecciona la pestaña según cómo planeas usar las muestras de esta página:
gcloud
En la consola de Google Cloud , activa Cloud Shell.
En la parte inferior de la consola de Google Cloud , se inicia una sesión de Cloud Shell en la que se muestra una ventana de línea de comandos. Cloud Shell es un entorno de shell con Google Cloud CLI ya instalada y con valores ya establecidos para el proyecto actual. La sesión puede tardar unos segundos en inicializarse.
REST
Para usar las muestras de la API de REST incluidas en esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la gcloud CLI.
Instala Google Cloud CLI.
Si usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.
Para obtener más información, consulta Autentícate para usar REST en la documentación de autenticación de Google Cloud .
Antes de comenzar
Antes de comenzar, revisa los siguientes requisitos previos:
- Instala Google Cloud CLI.
- Habilita la API de Hypercompute Cluster.
- Asegúrate de que tu cuenta de usuario y la cuenta de servicio predeterminada de Compute Engine tengan los roles de Identity and Access Management (IAM) necesarios para crear un clúster de Cluster Director y conectarse a él. Para obtener la lista de roles, consulta Antes de comenzar en la guía de inicio rápido de Cluster Director.
- Crea una reserva de TPU v6e en la zona
en la que planeas crear el clúster (por ejemplo, al menos cuatro
VMs
ct6e-standard-4tpara dos porciones2x4). - Configura
sudosin contraseña en los nodos del clúster para la recuperación automática de porciones. Pídele al administrador que te otorgue el rol de Acceso de administrador al SO de Compute (roles/compute.osAdminLogin) en el proyecto. - Crea un bucket de Cloud Storage para los datos temporales y los resultados de la carga de trabajo de Pathways, y otorga el rol de Usuario de objetos de almacenamiento (
roles/storage.objectUser) en el proyecto a tu cuenta de usuario y a la cuenta de servicio predeterminada de Compute Engine.
Cómo configurar tu entorno local
Accede con tus credenciales de Google Cloud :
gcloud auth login
Define las siguientes variables de entorno con valores adecuados para tu carga de trabajo:
export PROJECT=PROJECT_ID export REGION=REGION export ZONE=ZONE export CLUSTER_ID=CLUSTER_ID export RESERVATION_NAME=RESERVATION_NAME
Reemplaza lo siguiente:
PROJECT_ID: Es el ID del proyecto deGoogle Cloud .REGION: Es la región en la que creas recursos.ZONE: Es la zona en la que creas recursos.CLUSTER_ID: el nombre del clúster. El nombre puede contener hasta 10 caracteres y solo puede usar números y letras minúsculas.RESERVATION_NAME: Es el nombre de tu reserva de TPU v6e enZONE.
Crea un clúster de Cluster Director
En el siguiente ejemplo, crearás un clúster con dos porciones de TPU v6e 2x4
(cuatro VMs ct6e-standard-4t) de tu reserva y un nodo de CPU para el
controlador de Pathways. Todos los nodos activan un sistema de archivos de Managed Lustre compartido
en /home. Para obtener más información sobre los campos en la definición del clúster, consulta Crea un clúster personalizado.
Crea el clúster con la API de REST:
Crea el cuerpo de la solicitud:
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] } } } } EOFLuego, envía la solicitud:
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}"El clúster incluye lo siguiente:
- Partición
tpu: Es un conjunto de nodos estático de VMs de TPU v6e reservadas.staticNodeCountes la cantidad de VMs yacceleratorTopologyes la topología de cada porción. Cada VMct6e-standard-4ttiene cuatro chips, por lo que una porción2x4tiene dos VMs. Para obtener más porciones, multiplica: dos porciones de2x4necesitan unstaticNodeCountde4. - Partición
cpu: una VM on demand que ejecuta el administrador de recursos de Pathways, el servidor proxy de IFRT y el cliente de MaxText. Las secuencias de comandos de Pathways envían trabajos a una partición llamadacpu. La VM usa el tipo de máquinan2-highmem-32porque el servicio de Pathways y MaxText juntos necesitan hasta 240 GB de memoria mientras guardan puntos de control. También usa una imagen con Slurm 26.05, que admite porciones de TPU, ya que el servicio de Pathways envía los trabajos de trabajador TPU desde esta VM. requeueExitCodes: Slurm vuelve a poner en cola un trabajo que sale con uno de estos códigos. Este parámetro de configuración permite que Slurm reinicie un trabajo de trabajador TPU cuando se interrumpe cualquier VM de la porción, no solo la primera.
- Partición
Espera hasta que el clúster esté listo. Puedes seguir el progreso en la página Cluster Director en la consola de Google Cloud o verificar que
reconcilingseafalseen el resultado del siguiente comando:curl -s \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://hypercomputecluster.googleapis.com/v1alpha/projects/${PROJECT}/locations/${REGION}/clusters/${CLUSTER_ID}"
Configura el entorno de Pathways
El entorno de Pathways se encuentra en /home/pathways en el sistema de archivos compartido, por lo que
lo configuras una vez por clúster. Contiene las imágenes de contenedor de Pathways, un
entorno de Python con JAX y pathwaysutils, y las secuencias de comandos de Pathways.
Conéctate al nodo de acceso. Para conocer otras formas de conectarte, consulta Conéctate a un clúster.
gcloud compute ssh ${CLUSTER_ID}-login-001 \ --project=${PROJECT} \ --zone=${ZONE} \ --tunnel-through-iapVerifica que las particiones
cpuytpuexistan y estén en el estadoidle:sinfo -o "%P %a %D %T %N %f"El resultado es similar a lo siguiente:
PARTITION AVAIL NODES STATE NODELIST FEATURES tpu* up 4 idle ${CLUSTER_ID}-nstpu-[0-3] cpu up 1 idle ${CLUSTER_ID}-nscpu-0Descarga las secuencias de comandos de Pathways en el nodo de acceso:
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}" doneEste comando descarga las siguientes secuencias de comandos:
setup_env.sh: Realiza una configuración única del entorno de Pathways.start_pathways.sh: Inicia el servicio de Pathways.run_worker_slice.sh: Inicia el trabajador de Pathways para una porción de TPU (enviado porstart_pathways.sh).run_maxtext.sh: Ejecuta una carga de trabajo de entrenamiento de MaxText de ejemplo.
Ejecuta la secuencia de comandos de configuración. Esto tarda alrededor de 5 minutos:
chmod +x *.sh ./setup_env.shLa secuencia de comandos extrae las imágenes del servidor y del proxy de Pathways, compila un entorno de Python con JAX,
pathwaysutilsy MaxText, copia las secuencias de comandos en/home/pathwaysy vincula~/pathwaysa/home/pathways. Termina con un resultado similar al siguiente:Environment ready: JAX 0.11.1Opcional: Para otorgar acceso al entorno de Pathways a otros usuarios del clúster, pídeles que vinculen
/home/pathwaysa su directorio principal:ln -sfn /home/pathways ~/pathways
En este punto, el clúster está listo para Pathways. Inicias el servicio de Pathways como parte de la ejecución de una carga de trabajo, ya que las cargas de trabajo por lotes y las interactivas lo inician con diferentes parámetros de configuración. Para obtener más información, consulta Ejecuta una carga de trabajo por lotes con Pathways y Ejecuta una carga de trabajo interactiva con Pathways.
Si tienes problemas, consulta Soluciona problemas de Pathways en Cloud.
Realiza una limpieza
Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos que usaste en esta página, borra el clúster de Cluster Director cuando termines:
curl -s -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://hypercomputecluster.googleapis.com/v1alpha/projects/${PROJECT}/locations/${REGION}/clusters/${CLUSTER_ID}"
¿Qué sigue?
- Ejecuta una carga de trabajo por lotes con Pathways
- Ejecuta una carga de trabajo interactiva con Pathways
- Entrenamiento resiliente con Pathways
- Porta cargas de trabajo de JAX a Pathways
- Soluciona problemas de Pathways en Cloud