Nesta página, mostramos aos administradores de plataforma e engenheiros de machine learning (ML) como
criar um cluster do Cluster Director
orquestrado pelo Slurm e configurá-lo para
cargas de trabalho do Pathways. Ao concluir essas etapas, você provisiona um cluster com frações de TPU v6e, um nó controlador de CPU, um sistema de arquivos compartilhado do Google Cloud Managed Lustre e o ambiente de execução /home/pathways. O Pathways não é pré-instalado em um
cluster do Cluster Director: depois de criar o cluster, faça o download
dos scripts do Pathways para o nó de login e execute um script de configuração uma vez.
Antes de começar
-
Selecione a guia para como planeja usar as amostras nesta página:
gcloud
Instale a Google Cloud CLI e faça login na CLI gcloud com sua identidade federada. Depois de fazer login, inicialize a Google Cloud CLI executando o seguinte comando:
gcloud initREST
Para usar as amostras da API REST desta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para a CLI gcloud.
Instale a Google Cloud CLI e faça login na CLI gcloud com sua identidade federada.
Saiba mais em Autenticar para usar REST na documentação de autenticação do Google Cloud .
Antes de começar
Antes de começar, conclua os seguintes pré-requisitos:
- Instale a CLI do Google Cloud.
- Ative a API Hypercompute Cluster.
- Verifique se a conta de usuário e a conta de serviço padrão do Compute Engine têm os papéis do Identity and Access Management (IAM) necessários para criar e se conectar a um cluster do Cluster Director. Para ver a lista de papéis, consulte Antes de começar no guia de início rápido do Cluster Director.
- Crie uma reserva de TPU v6e na zona
em que você planeja criar o cluster (por exemplo, pelo menos quatro
VMs
ct6e-standard-4tpara duas frações2x4). - Configure o
sudosem senha nos nós do cluster para recuperação automática de frações. Peça ao administrador para conceder a você o papel de Login de administrador no SO do Compute (roles/compute.osAdminLogin) no projeto. - Crie um bucket do Cloud Storage para dados temporários e saídas de carga de trabalho do Pathways e conceda o papel de Usuário de objetos do Storage (
roles/storage.objectUser) no projeto à sua conta de usuário e à conta de serviço padrão do Compute Engine.
Configurar seu ambiente local
Faça login com suas credenciais do Google Cloud :
gcloud auth login
Defina as seguintes variáveis de ambiente com valores adequados à sua carga de trabalho:
export PROJECT=PROJECT_ID export REGION=REGION export ZONE=ZONE export CLUSTER_ID=CLUSTER_ID export RESERVATION_NAME=RESERVATION_NAME
Substitua:
PROJECT_ID: o ID do projeto doGoogle Cloud .REGION: a região em que você cria recursos.ZONE: a zona em que você cria recursos.CLUSTER_ID: o nome do cluster. O nome pode ter até 10 caracteres e usar apenas números e letras minúsculas.RESERVATION_NAME: o nome da sua reserva de TPU v6e emZONE.
Criar um cluster do Cluster Director
No exemplo a seguir, você cria um cluster com duas frações de TPU v6e 2x4
(quatro VMs ct6e-standard-4t) da sua reserva e um nó de CPU para o
controlador do Pathways. Todos os nós montam um sistema de arquivos
compartilhado do Managed Lustre em /home. Para mais informações sobre os campos na definição do cluster, consulte Criar um cluster personalizado.
Crie o cluster usando a API REST:
Crie o corpo da solicitação:
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] } } } } EOFEm seguida, envie a solicitação:
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}"O cluster inclui o seguinte:
- Partição
tpu: um conjunto de nós estático de VMs de TPU v6e reservadas.staticNodeCounté o número de VMs eacceleratorTopologyé a topologia de cada fração. Cada VMct6e-standard-4ttem quatro chips, então uma fração2x4tem duas VMs. Para mais frações, multiplique: duas frações2x4precisam de umstaticNodeCountde4. - Partição
cpu: uma VM sob demanda que executa o gerenciador de recursos do Pathways, o servidor proxy do IFRT e o cliente do MaxText. Os scripts do Pathways enviam jobs para uma partição chamadacpu. A VM usa o tipo de máquinan2-highmem-32porque o serviço Pathways e o MaxText precisam de até 240 GB de memória enquanto salvam checkpoints. Ele também usa uma imagem com o Slurm 26.05, que é compatível com frações de TPU, porque o serviço Pathways envia os jobs de worker da TPU dessa VM. requeueExitCodes: o Slurm coloca em fila novamente um job que sai com um destes códigos. Essa configuração permite que o Slurm reinicie um job de worker da TPU quando qualquer VM na fração for interrompida, não apenas a primeira.
- Partição
Aguarde até que o cluster esteja pronto. Acompanhe o progresso na página do Cluster Director no console do Google Cloud ou verifique se
reconcilingéfalsena saída do seguinte comando:curl -s \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://hypercomputecluster.googleapis.com/v1alpha/projects/${PROJECT}/locations/${REGION}/clusters/${CLUSTER_ID}"
Configurar o ambiente do Pathways
O ambiente do Pathways fica em /home/pathways no sistema de arquivos compartilhado. Portanto, você o configura uma vez por cluster. Ele contém as imagens de contêiner do Pathways, um
ambiente Python com JAX e pathwaysutils e os scripts do Pathways.
Conecte-se ao nó de login. Para outras maneiras de se conectar, consulte Conectar-se a um cluster.
gcloud compute ssh ${CLUSTER_ID}-login-001 \ --project=${PROJECT} \ --zone=${ZONE} \ --tunnel-through-iapVerifique se as partições
cpuetpuexistem e estão no estadoidle:sinfo -o "%P %a %D %T %N %f"O resultado será o seguinte:
PARTITION AVAIL NODES STATE NODELIST FEATURES tpu* up 4 idle ${CLUSTER_ID}-nstpu-[0-3] cpu up 1 idle ${CLUSTER_ID}-nscpu-0Baixe os scripts do Pathways para o nó de login:
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}" doneEsse comando faz o download dos seguintes scripts:
setup_env.sh: realiza uma configuração única do ambiente do Pathways.start_pathways.sh: inicia o serviço Pathways.run_worker_slice.sh: inicia o worker do Pathways para uma fração de TPU (enviada porstart_pathways.sh).run_maxtext.sh: executa um exemplo de carga de trabalho de treinamento do MaxText.
Execute o script de configuração. Isso leva cerca de 5 minutos:
chmod +x *.sh ./setup_env.shO script extrai as imagens do servidor e do proxy do Pathways, cria um ambiente Python com JAX,
pathwaysutilse MaxText, copia os scripts para/home/pathwayse vincula~/pathwaysa/home/pathways. Ele termina com uma saída semelhante a esta:Environment ready: JAX 0.11.1Opcional: para dar a outros usuários do cluster acesso ao ambiente do Pathways, peça que eles vinculem
/home/pathwaysao diretório inicial:ln -sfn /home/pathways ~/pathways
Nesse momento, o cluster está pronto para o Pathways. Inicie o serviço Pathways como parte da execução de uma carga de trabalho, porque as cargas de trabalho em lote e interativas o iniciam com configurações diferentes. Para mais informações, consulte Executar uma carga de trabalho em lote com o Pathways e Executar uma carga de trabalho interativa com o Pathways.
Se você tiver problemas, consulte Resolver problemas do Pathways no Cloud.
Limpar
Para evitar cobranças na conta do Google Cloud pelos recursos usados nesta página, exclua o cluster do Cluster Director quando terminar:
curl -s -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://hypercomputecluster.googleapis.com/v1alpha/projects/${PROJECT}/locations/${REGION}/clusters/${CLUSTER_ID}"