GKE-Cluster mit Pathways erstellen

Auf dieser Seite erfahren Plattformadministratoren und ML-Entwickler, wie sie einen GKE-Cluster (Google Kubernetes Engine) erstellen, der für Pathways-basierte Arbeitslasten konfiguriert ist. Sie können vorkonfigurierte Cluster automatisch mit dem Cluster Toolkit bereitstellen oder Cluster manuell mit der Google Cloud CLI erstellen.

Hinweis

Bevor Sie fortfahren, müssen die folgenden Voraussetzungen erfüllt sein:

Lokale Umgebung einrichten

Melden Sie sich mit Ihren Anmeldedaten für Google Cloud in der gcloud CLI an:

gcloud auth login

Wenn Sie das Cluster Toolkit verwenden, generieren Sie auch Standardanmeldedaten für Anwendungen (Application Default Credentials, ADC), die von Terraform verwendet werden:

gcloud auth application-default login

GKE-Cluster erstellen

Im folgenden Beispiel erstellen Sie einen Cluster mit TPU v6e-2x4-Knotenpools. Sie können einen Cluster mit dem Cluster Toolkit oder der gcloud CLI erstellen.

Cluster Toolkit

  1. Stellen Sie einen GKE-TPU-Cluster bereit, indem Sie der Anleitung unter GKE-TPU-v6e-Cluster bereitstellen folgen. Eine Übersicht über alle TPU-Bereitstellungsoptionen finden Sie unter Cloud TPU-Bereitstellungen – Übersicht.

    Gehen Sie beim Konfigurieren des Bereitstellungs-Blueprints so vor:

    • Setzen Sie enable_pathways_for_tpus auf true (in Cluster Toolkit-TPU-Blueprints standardmäßig aktiviert). Mit dieser Einstellung werden automatisch der erforderliche cpu-np-CPU-Knotenpool (n4-standard-64) und die Kueue-Konfigurationen für den Pathways-Controller bereitgestellt. Das Cluster Toolkit wendet die Standardkonfiguration für Pathways Kueue nur an, wenn Sie in der Variable kueue_configuration_path keine benutzerdefinierte Kueue-Konfigurationsdatei angeben.
    • Legen Sie für num_slices die Anzahl der TPU-Slice-Knotenpools fest, die für Ihre Arbeitslast erforderlich sind.
    • Legen Sie tpu_topology auf die ausgewählte TPU-Slice-Topologie fest (z. B. 2x4 oder 4x4).
    • Wählen Sie eine Option für die Nutzung aus. Standardmäßig wird in der TPU v6e-Bereitstellungsdatei eine bestimmte TPU-Reservierung verwendet. Geben Sie daher den Reservierungsnamen in der Variable reservation_affinity an. Wenn Sie eine andere Nutzungsoption verwenden möchten, finden Sie weitere Informationen unter GKE-Nutzungsoptionen.
  2. Prüfen Sie, ob die Clusterknoten den STATUS Ready haben:

    kubectl get nodes
    

    Nachdem Sie den Cluster erstellt haben, können Sie Pathways-Arbeitslasten mit dem Befehl gcluster job submit und den Flags --pathways und --pathways-gcs-location einreichen. Weitere Informationen finden Sie unter Arbeitslasten mit Pathways ausführen.

gcloud

So erstellen Sie einen GKE-Cluster und richten ihn für die Ausführung von Pathways-Arbeitslasten ein:

  1. Legen Sie die folgenden Umgebungsvariablen fest:

    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

    Ersetzen Sie Folgendes:

    • GKE_CLUSTER_NAME: Name Ihres GKE-Clusters.
    • PROJECT_ID: Ihre Projekt-ID in Google Cloud .
    • ZONE: die Zone, in der Sie den Cluster erstellen. Wählen Sie eine Zone aus, in der TPU v6e verfügbar ist. Weitere Informationen finden Sie unter Cloud TPU-Regionen und -Zonen.
    • REGION: Optional: Die Region, in der Sie Ressourcen erstellen, wenn Sie einen regionalen Cluster verwenden.
    • GKE_CLUSTER_VERSION: Optional: die GKE-Clusterversion. Verwenden Sie 1.32.2-gke.1475000 oder höher und wählen Sie eine Version aus, die im Standardsupport enthalten ist. Weitere Informationen finden Sie im GKE-Release-Zeitplan. Wenn Sie keine Version angeben, entfernen Sie das Flag --cluster-version aus dem folgenden gcloud container clusters create-Befehl.
    • NETWORK: Optional: der Name eines VPC-Netzwerks (Virtual Private Cloud). Das Netzwerk muss vorhanden sein, bevor Sie den Cluster erstellen. Wenn Sie kein Netzwerk angeben, entfernen Sie das Flag --network aus dem folgenden gcloud container clusters create-Befehl.
    • SUB_NETWORK (optional): Der Name eines Subnetzwerks. Das Subnetzwerk muss vorhanden sein, bevor Sie den Cluster erstellen. Wenn Sie kein Subnetzwerk angeben, entfernen Sie das Flag --subnetwork aus dem folgenden gcloud container clusters create-Befehl.

    In diesem Beispiel werden Standardwerte für die verbleibenden Variablen festgelegt, die Sie für Ihre Arbeitslast ändern können:

    • PW_CPU_MACHINE_TYPE: der Maschinentyp für den Standardknotenpool des Clusters und für den CPU-Knotenpool, auf dem der Pathways-Head (der Pathways-Ressourcenmanager und -Proxy) ausgeführt wird.
    • NUM_CPU_NODES: die Anzahl der Knoten im CPU-Knotenpool.
    • CLUSTER_NODEPOOL_COUNT: die Anzahl der TPU-Slices. Jedes Slice ist ein separater Knotenpool.
    • TPU_MACHINE_TYPE und TOPOLOGY: der TPU-Maschinentyp und die TPU-Topologie jedes Slices.
    • WORKERS_PER_SLICE: die Anzahl der Knoten in jedem Slice, also die Anzahl der TPU-Chips in der Topologie geteilt durch die Anzahl der Chips pro Knoten. Eine 2x4-Topologie hat beispielsweise 8 Chips und ein ct6e-standard-4t-Knoten hat 4 Chips. Jedes Slice hat also 2 Knoten.
  2. Erstellen Sie einen GKE-Cluster mit dem Befehl 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. Erstellen Sie die TPU-Slice-Knotenpools mit dem Befehl 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
    

    Diese Befehle sind nicht auf eine bestimmte Reservierung ausgerichtet. Wenn Sie eine TPU-Reservierung nutzen möchten, fügen Sie die Flags --reservation-affinity=specific und --reservation=RESERVATION_NAME hinzu, wobei RESERVATION_NAME der Name Ihrer TPU-Reservierung ist. Wenn Sie Spot-VMs verwenden möchten, fügen Sie das Flag --spot hinzu.

  4. Erstellen Sie einen CPU-Knotenpool für den Pathways-Head, auf dem der Pathways-Ressourcenmanager und der Proxy ausgeführt werden. Geben Sie dem Knotenpool den Namen cpu-np, damit er vom Befehl gcluster job submit --pathways erkannt werden kann:

    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. Rufen Sie Anmeldedaten für den Cluster ab und legen Sie den Standard-Namespace für kubectl fest:

    gcloud container clusters get-credentials ${CLUSTER} \
        --zone=${ZONE} \
        --project=${PROJECT} \
        && kubectl config set-context --current --namespace=default
    
  6. Wenn Sie die Pathways-Architektur in Ihrem GKE-Cluster verwenden möchten, installieren Sie die JobSet API:

    kubectl apply --server-side -f https://github.com/kubernetes-sigs/jobset/releases/download/v0.12.0/manifests.yaml
    
  7. Prüfen Sie, ob die Knoten den STATUS Ready haben und ob der Pod jobset-controller-manager den STATUS Running hat:

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

    Die Ausgabe sieht etwa so aus:

    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
    

Bereinigen

Löschen Sie den Cluster, wenn Sie fertig sind, damit Ihrem Google Cloud -Konto die auf dieser Seite verwendeten Ressourcen nicht in Rechnung gestellt werden:

  • Cluster Toolkit: Löschen Sie die Bereitstellung mit dem folgenden Befehl:

    ./gcluster destroy DEPLOYMENT_FOLDER_NAME

    Ersetzen Sie DEPLOYMENT_FOLDER_NAME durch den Namen Ihres Bereitstellungsordners.

  • gcloud CLI: Löschen Sie den GKE-Cluster und seine Knotenpools mit dem folgenden Befehl:

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

Nächste Schritte