Crea un cluster GKE con Pathways

Questa pagina mostra agli amministratori della piattaforma e agli ingegneri di machine learning (ML) come creare un cluster Google Kubernetes Engine (GKE) configurato per i workload basati su Pathways. Puoi eseguire il provisioning automatico dei cluster preconfigurati utilizzando Cluster Toolkit o creare i cluster manualmente utilizzando Google Cloud CLI.

Prima di iniziare

Prima di procedere, completa i seguenti prerequisiti:

Configura l'ambiente locale

Accedi a gcloud CLI con le tue credenziali Google Cloud :

gcloud auth login

Se utilizzi Cluster Toolkit, genera anche le credenziali predefinite dell'applicazione (ADC), utilizzate da Terraform:

gcloud auth application-default login

Crea un cluster GKE

Nell'esempio seguente, crei un cluster con pool di nodi TPU v6e 2x4. Puoi creare un cluster utilizzando Cluster Toolkit o gcloud CLI.

Cluster Toolkit

  1. Esegui il deployment di un cluster GKE TPU seguendo le istruzioni riportate in Esegui il deployment di un cluster GKE TPU v6e. Per una panoramica di tutte le opzioni di deployment di TPU, consulta la panoramica dei deployment di Cloud TPU.

    Quando configuri il progetto di deployment, segui questi passaggi:

    • Imposta enable_pathways_for_tpus su true (attivato per impostazione predefinita nei progetti TPU di Cluster Toolkit). Questa impostazione esegue automaticamente il provisioning del pool di nodi CPU cpu-np (n4-standard-64) e delle configurazioni Kueue richiesti per il controller Pathways. Cluster Toolkit applica la configurazione Kueue predefinita di Pathways solo se non specifichi un file di configurazione Kueue personalizzato nella variabile kueue_configuration_path.
    • Imposta num_slices sul numero di pool di nodi di sezioni TPU richiesti per il tuo workload.
    • Imposta tpu_topology sulla topologia della sezione TPU selezionata (ad esempio, 2x4 o 4x4).
    • Scegli un'opzione di consumo. Per impostazione predefinita, il file di deployment di TPU v6e utilizza una prenotazione TPU specifica, quindi specifica il nome della prenotazione nella variabile reservation_affinity. Per utilizzare un'opzione di consumo diversa, consulta Opzioni di consumo di GKE.
  2. Verifica che i nodi del cluster abbiano un STATUS di Ready:

    kubectl get nodes
    

    Dopo aver creato il cluster, puoi inviare i workload Pathways utilizzando il comando gcluster job submit con i flag --pathways e --pathways-gcs-location. Per saperne di più, consulta Esegui i workload con Pathways.

gcloud

Per creare un cluster GKE e configurarlo per l'esecuzione dei workload Pathways, segui questi passaggi:

  1. Imposta le seguenti variabili di ambiente:

    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

    Sostituisci quanto segue:

    • GKE_CLUSTER_NAME: il nome del tuo cluster GKE.
    • PROJECT_ID: il tuo ID progetto Google Cloud .
    • ZONE: la zona in cui crei il cluster. Scegli una zona in cui è disponibile TPU v6e. Per saperne di più, consulta Regioni e zone di Cloud TPU.
    • REGION: (Facoltativo) la regione in cui crei le risorse se utilizzi un cluster a livello di regione.
    • GKE_CLUSTER_VERSION: (facoltativo) la versione del cluster GKE. Utilizza 1.32.2-gke.1475000 o versioni successive e scegli una versione con assistenza standard. Per maggiori informazioni, consulta la programmazione delle release di GKE. Se non specifichi una versione, rimuovi il flag --cluster-version dal seguente comando gcloud container clusters create.
    • NETWORK: (facoltativo) il nome di una rete Virtual Private Cloud (VPC). La rete deve esistere prima di creare il cluster. Se non specifichi una rete, rimuovi il flag --network dal seguente comando gcloud container clusters create.
    • SUB_NETWORK: (Facoltativo) il nome di una subnet. La subnet deve esistere prima di creare il cluster. Se non specifichi una subnet, rimuovi il flag --subnetwork dal seguente comando gcloud container clusters create.

    Questo esempio imposta i valori predefiniti per le variabili rimanenti, che puoi modificare per il tuo workload:

    • PW_CPU_MACHINE_TYPE: il tipo di macchina per il pool di nodi predefinito del cluster e per il pool di nodi della CPU che esegue l'head di Pathways (il gestore delle risorse e il proxy di Pathways).
    • NUM_CPU_NODES: il numero di nodi nel pool di nodi della CPU.
    • CLUSTER_NODEPOOL_COUNT: il numero di sezioni TPU. Ogni sezione è un pool di nodi separato.
    • TPU_MACHINE_TYPE e TOPOLOGY: il tipo di macchina TPU e la topologia TPU di ogni sezione.
    • WORKERS_PER_SLICE: il numero di nodi in ogni sezione, ovvero il numero di chip TPU nella topologia diviso per il numero di chip per nodo. Ad esempio, una topologia 2x4 ha 8 chip e un nodo ct6e-standard-4t ha 4 chip, quindi ogni sezione ha 2 nodi.
  2. Crea un cluster GKE utilizzando il 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}
    
  3. Crea i node pool di sezioni TPU utilizzando il 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
    done
    

    Questi comandi non hanno come target una prenotazione specifica. Per utilizzare una prenotazione TPU, aggiungi i flag --reservation-affinity=specific e --reservation=RESERVATION_NAME, dove RESERVATION_NAME è il nome della prenotazione TPU. Per utilizzare le VM spot, aggiungi il flag --spot.

  4. Crea un pool di nodi di CPU per l'head Pathways, che esegue il gestore delle risorse e il proxy Pathways. Assegna al pool di nodi il nome cpu-np in modo che il comando gcluster job submit --pathways possa rilevarlo:

    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_METADATA
    
  5. Recupera le credenziali per il cluster e imposta lo spazio dei nomi predefinito per kubectl:

    gcloud container clusters get-credentials ${CLUSTER} \
        --zone=${ZONE} \
        --project=${PROJECT} \
        && kubectl config set-context --current --namespace=default
    
  6. Per utilizzare l'architettura Pathways sul tuo cluster GKE, installa l'API JobSet:

    kubectl apply --server-side -f https://github.com/kubernetes-sigs/jobset/releases/download/v0.12.0/manifests.yaml
    
  7. Verifica che i nodi abbiano un STATUS di Ready e che il pod jobset-controller-manager abbia un STATUS di Running:

    kubectl get nodes
    kubectl get pods --namespace=jobset-system
    

    L'output è simile al seguente:

    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
    

Esegui la pulizia

Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questa pagina, elimina il cluster al termine:

  • Cluster Toolkit: elimina il deployment eseguendo il seguente comando:

    ./gcluster destroy DEPLOYMENT_FOLDER_NAME

    Sostituisci DEPLOYMENT_FOLDER_NAME con il nome della cartella di deployment.

  • gcloud CLI: elimina il cluster GKE e i relativi pool di nodi eseguendo questo comando:

    gcloud container clusters delete ${CLUSTER} \
        --project=${PROJECT} \
        --zone=${ZONE}
    

Passaggi successivi