Nesta página, mostramos aos administradores de plataforma e engenheiros de machine learning (ML) como criar um cluster do Google Kubernetes Engine (GKE) configurado para cargas de trabalho baseadas no Pathways. É possível provisionar clusters pré-configurados automaticamente usando o Cluster Toolkit ou criar clusters manualmente usando a Google Cloud CLI.
Antes de começar
Conclua os seguintes pré-requisitos antes de continuar:
- Instale a CLI gcloud.
- Instale o
kubectle agke-gcloud-auth-plugin. - Se você usa o Cluster Toolkit, configure-o e atualize-o para a versão mais recente.
- Ative a API Kubernetes Engine.
- Verifique se você tem cota de TPU ou uma reserva de TPU suficiente para as frações de TPU que quer criar.
Configurar seu ambiente local
Faça login na CLI gcloud com suas credenciais do Google Cloud :
gcloud auth login
Se você usa o Cluster Toolkit, também precisa gerar o Application Default Credentials (ADC), que é usado pelo Terraform:
gcloud auth application-default login
Criar um cluster do GKE
No exemplo a seguir, você cria um cluster com pools de nós de TPU v6e 2x4. É possível criar um cluster usando o Cluster Toolkit ou a CLI gcloud.
Cluster Toolkit
Implante um cluster de TPU do GKE seguindo as instruções em Implantar um cluster de TPU v6e do GKE. Para uma visão geral de todas as opções de implantação de TPU, consulte Visão geral das implantações do Cloud TPU.
Ao configurar o blueprint de implantação, faça o seguinte:
- Defina
enable_pathways_for_tpuscomotrue(ativado por padrão nos blueprints de TPU do Cluster Toolkit). Essa configuração provisiona automaticamente o pool de nós de CPUcpu-np(n4-standard-64) e as configurações do Kueue para o controlador do Pathways. O Cluster Toolkit aplica a configuração padrão do Pathways Kueue somente se você não especificar um arquivo de configuração personalizado do Kueue na variávelkueue_configuration_path. - Defina
num_slicescomo o número de pools de nós de fração de TPU necessários para sua carga de trabalho. - Defina
tpu_topologycomo a topologia de fração de TPU selecionada (por exemplo,2x4ou4x4). - Escolha uma opção de consumo. Por padrão, o arquivo de implantação da TPU v6e
consome uma
reserva de TPU específica. Portanto, especifique o
nome da reserva na variável
reservation_affinity. Para usar uma opção de consumo diferente, consulte Opções de consumo do GKE.
- Defina
Verifique se os nós do cluster têm um
STATUSdeReady:kubectl get nodesDepois de criar o cluster, envie cargas de trabalho do Pathways usando o comando
gcluster job submitcom as sinalizações--pathwayse--pathways-gcs-location. Para mais informações, consulte Executar cargas de trabalho com o Pathways.
gcloud
Para criar um cluster do GKE e configurá-lo para executar cargas de trabalho do Pathways, siga estas etapas:
Configure as variáveis de ambiente a seguir:
CLUSTER=GKE_CLUSTER_NAME PROJECT=PROJECT_ID ZONE=ZONE REGION=REGION CLUSTER_VERSION=GKE_CLUSTER_VERSION PW_CPU_MACHINE_TYPE="n2-standard-64" NETWORK=NETWORK SUBNETWORK=SUB_NETWORK CLUSTER_NODEPOOL_COUNT=3 TPU_MACHINE_TYPE="ct6e-standard-4t" WORKERS_PER_SLICE=2 TOPOLOGY="2x4" NUM_CPU_NODES=1
Substitua:
GKE_CLUSTER_NAME: o nome do cluster do GKE.PROJECT_ID: o ID do projeto do Google Cloud .ZONE: a zona em que você cria o cluster. Escolha uma zona em que a TPU v6e esteja disponível. Para mais informações, consulte Regiões e zonas do Cloud TPU.REGION: opcional: a região em que você cria recursos se usar um cluster regional.GKE_CLUSTER_VERSION: opcional: a versão do cluster do GKE. Use o1.32.2-gke.1475000ou uma versão mais recente e escolha uma versão com suporte padrão. Para mais informações, consulte o cronograma de lançamento do GKE. Se você não especificar uma versão, remova a sinalização--cluster-versiondo comandogcloud container clusters createa seguir.NETWORK: opcional: o nome de uma rede de nuvem privada virtual (VPC). A rede precisa existir antes de você criar o cluster. Se você não especificar uma rede, remova a flag--networkdo comandogcloud container clusters createa seguir.SUB_NETWORK: opcional: o nome de uma sub-rede. A sub-rede precisa existir antes de você criar o cluster. Se você não especificar uma sub-rede, remova a sinalização--subnetworkdo comandogcloud container clusters createa seguir.
Este exemplo define valores padrão para as variáveis restantes, que podem ser modificadas para sua carga de trabalho:
PW_CPU_MACHINE_TYPE: o tipo de máquina para o pool de nós padrão do cluster e para o pool de nós de CPU que executa o cabeçalho do Pathways (o gerenciador de recursos e o proxy do Pathways).NUM_CPU_NODES: o número de nós no pool de nós de CPU.CLUSTER_NODEPOOL_COUNT: o número de frações de TPU. Cada fração é um pool de nós separado.TPU_MACHINE_TYPEeTOPOLOGY: o tipo de máquina da TPU e a topologia da TPU de cada fração.WORKERS_PER_SLICE: o número de nós em cada fração, que é o número de chips de TPU na topologia dividido pelo número de chips por nó. Por exemplo, uma topologia2x4tem 8 chips e um nóct6e-standard-4ttem 4 chips, então cada fração tem 2 nós.
Crie um cluster do GKE usando o comando
gcloud container clusters create:gcloud container clusters create ${CLUSTER} \ --project=${PROJECT} \ --zone=${ZONE} \ --cluster-version=${CLUSTER_VERSION} \ --scopes=storage-full,gke-default,cloud-platform \ --machine-type=${PW_CPU_MACHINE_TYPE} \ --network=${NETWORK} \ --subnetwork=${SUBNETWORK}Crie os pools de nós de fração de TPU usando o comando
gcloud container node-pools create:for i in $(seq 1 ${CLUSTER_NODEPOOL_COUNT}); do gcloud container node-pools create "tpu-np-${i}" \ --project=${PROJECT} \ --zone=${ZONE} \ --cluster=${CLUSTER} \ --machine-type=${TPU_MACHINE_TYPE} \ --num-nodes=${WORKERS_PER_SLICE} \ --placement-type=COMPACT \ --tpu-topology=${TOPOLOGY} \ --scopes=storage-full,gke-default,cloud-platform \ --workload-metadata=GCE_METADATA doneEsses comandos não segmentam uma reserva específica. Para consumir uma reserva de TPU, adicione as flags
--reservation-affinity=specifice--reservation=RESERVATION_NAME, em queRESERVATION_NAMEé o nome da reserva de TPU. Para usar VMs spot, adicione a flag--spot.Crie um pool de nós de CPU para o cabeçalho do Pathways, que executa o gerenciador de recursos e o proxy do Pathways. Nomeie o pool de nós como
cpu-nppara que o comandogcluster job submit --pathwayspossa detectá-lo:gcloud container node-pools create cpu-np \ --project=${PROJECT} \ --zone=${ZONE} \ --cluster=${CLUSTER} \ --machine-type=${PW_CPU_MACHINE_TYPE} \ --num-nodes=${NUM_CPU_NODES} \ --scopes=storage-full,gke-default,cloud-platform \ --workload-metadata=GCE_METADATAConsiga as credenciais do cluster e defina o namespace padrão para
kubectl:gcloud container clusters get-credentials ${CLUSTER} \ --zone=${ZONE} \ --project=${PROJECT} \ && kubectl config set-context --current --namespace=defaultPara usar a arquitetura do Pathways no cluster do GKE, instale a API
JobSet:kubectl apply --server-side -f https://github.com/kubernetes-sigs/jobset/releases/download/v0.12.0/manifests.yamlVerifique se os nós têm um
STATUSdeReadye se o podjobset-controller-managertem umSTATUSdeRunning:kubectl get nodes kubectl get pods --namespace=jobset-systemO resultado será o seguinte:
NAME STATUS ROLES AGE VERSION gke-cluster-cpu-np-12345678-abcd Ready <none> 5m v1.32.2-gke.1475000 gke-cluster-tpu-np-1-12345678-efgh Ready <none> 5m v1.32.2-gke.1475000 ... NAME READY STATUS RESTARTS AGE jobset-controller-manager-6f7b8c9d4-xyz12 1/1 Running 0 2m
Limpar
Para evitar cobranças na conta do Google Cloud pelos recursos usados nesta página, exclua o cluster quando terminar:
Cluster Toolkit: destrua a implantação executando o seguinte comando:
./gcluster destroy DEPLOYMENT_FOLDER_NAME
Substitua
DEPLOYMENT_FOLDER_NAMEpelo nome da pasta de implantação.CLI gcloud: exclua o cluster do GKE e os pools de nós dele executando o seguinte comando:
gcloud container clusters delete ${CLUSTER} \ --project=${PROJECT} \ --zone=${ZONE}