Membuat cluster GKE dengan Pathways

Halaman ini menunjukkan kepada administrator platform dan engineer machine learning (ML) cara membuat cluster Google Kubernetes Engine (GKE) yang dikonfigurasi untuk workload berbasis Pathways. Anda dapat menyediakan cluster yang telah dikonfigurasi sebelumnya secara otomatis menggunakan Cluster Toolkit, atau membuat cluster secara manual menggunakan Google Cloud CLI.

Sebelum memulai

Selesaikan prasyarat berikut sebelum melanjutkan:

Menyiapkan lingkungan lokal Anda

Login ke gcloud CLI dengan kredensial Google Cloud Anda:

gcloud auth login

Jika Anda menggunakan Cluster Toolkit, buat juga Kredensial Default Aplikasi (ADC), yang digunakan Terraform:

gcloud auth application-default login

Membuat cluster GKE

Dalam contoh berikut, Anda membuat cluster dengan node pool TPU v6e 2x4. Anda dapat membuat cluster menggunakan Cluster Toolkit atau gcloud CLI.

Cluster Toolkit

  1. Deploy cluster TPU GKE dengan mengikuti petunjuk di Men-deploy cluster TPU v6e GKE. Untuk ringkasan semua opsi deployment TPU, lihat Ringkasan deployment Cloud TPU.

    Saat mengonfigurasi blueprint deployment, lakukan hal berikut:

    • Tetapkan enable_pathways_for_tpus ke true (diaktifkan secara default di blueprint TPU Cluster Toolkit). Setelan ini secara otomatis menyediakan node pool CPU cpu-np (n4-standard-64) yang diperlukan dan konfigurasi Kueue untuk pengontrol Pathways. Cluster Toolkit menerapkan konfigurasi Kueue Pathways default hanya jika Anda tidak menentukan file konfigurasi Kueue kustom dalam variabel kueue_configuration_path.
    • Tetapkan num_slices ke jumlah node pool slice TPU yang diperlukan untuk workload Anda.
    • Tetapkan tpu_topology ke topologi slice TPU yang Anda pilih (misalnya, 2x4 atau 4x4).
    • Pilih opsi pemakaian. Secara default, file deployment TPU v6e menggunakan pemesanan TPU tertentu, jadi tentukan nama pemesanan dalam variabel reservation_affinity. Untuk menggunakan opsi konsumsi yang berbeda, lihat Opsi konsumsi GKE.
  2. Pastikan node cluster memiliki STATUS dari Ready:

    kubectl get nodes
    

    Setelah membuat cluster, Anda dapat mengirimkan workload Pathways menggunakan perintah gcluster job submit dengan flag --pathways dan --pathways-gcs-location. Untuk mengetahui informasi selengkapnya, lihat Menjalankan workload dengan Pathways.

gcloud

Untuk membuat cluster GKE dan menyiapkannya untuk menjalankan workload Pathways, ikuti langkah-langkah berikut:

  1. Tetapkan variabel lingkungan berikut:

    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

    Ganti kode berikut:

    • GKE_CLUSTER_NAME: nama cluster GKE Anda.
    • PROJECT_ID: project ID Google Cloud Anda.
    • ZONE: zona tempat Anda membuat cluster. Pilih zona tempat TPU v6e tersedia. Untuk mengetahui informasi selengkapnya, lihat Region dan zona Cloud TPU.
    • REGION: Opsional: region tempat Anda membuat resource jika menggunakan cluster regional.
    • GKE_CLUSTER_VERSION: Opsional: versi cluster GKE. Gunakan 1.32.2-gke.1475000 atau yang lebih baru, dan pilih versi yang ada dalam dukungan standar. Untuk mengetahui informasi selengkapnya, lihat jadwal rilis GKE. Jika Anda tidak menentukan versi, hapus flag --cluster-version dari perintah gcloud container clusters create berikut.
    • NETWORK: Opsional: nama jaringan Virtual Private Cloud (VPC). Jaringan harus ada sebelum Anda membuat cluster. Jika Anda tidak menentukan jaringan, hapus flag --network dari perintah gcloud container clusters create berikut.
    • SUB_NETWORK: Opsional: nama subnetwork. Subnetwork harus ada sebelum Anda membuat cluster. Jika Anda tidak menentukan subnetwork, hapus flag --subnetwork dari perintah gcloud container clusters create berikut.

    Contoh ini menetapkan nilai default untuk variabel yang tersisa, yang dapat Anda ubah untuk workload Anda:

    • PW_CPU_MACHINE_TYPE: jenis mesin untuk node pool default cluster dan untuk node pool CPU yang menjalankan head Pathways (pengelola resource dan proxy Pathways).
    • NUM_CPU_NODES: jumlah node di node pool CPU.
    • CLUSTER_NODEPOOL_COUNT: jumlah slice TPU. Setiap slice adalah node pool yang terpisah.
    • TPU_MACHINE_TYPE dan TOPOLOGY: jenis mesin TPU dan topologi TPU dari setiap slice.
    • WORKERS_PER_SLICE: jumlah node di setiap slice, yang merupakan jumlah TPU chip dalam topologi dibagi dengan jumlah chip per node. Misalnya, topologi 2x4 memiliki 8 chip dan node ct6e-standard-4t memiliki 4 chip, sehingga setiap slice memiliki 2 node.
  2. Buat cluster GKE menggunakan perintah 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. Buat node pool slice TPU menggunakan perintah 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
    

    Perintah ini tidak menargetkan pemesanan tertentu. Untuk menggunakan pemesanan TPU, tambahkan flag --reservation-affinity=specific dan --reservation=RESERVATION_NAME, dengan RESERVATION_NAME adalah nama pemesanan TPU Anda. Untuk menggunakan Spot VM, tambahkan flag --spot.

  4. Buat node pool CPU untuk head Pathways, yang menjalankan pengelola resource dan proxy Pathways. Beri nama node pool cpu-np agar perintah gcluster job submit --pathways dapat mendeteksinya:

    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. Dapatkan kredensial untuk cluster dan tetapkan namespace default untuk kubectl:

    gcloud container clusters get-credentials ${CLUSTER} \
        --zone=${ZONE} \
        --project=${PROJECT} \
        && kubectl config set-context --current --namespace=default
    
  6. Untuk menggunakan arsitektur Pathways di cluster GKE Anda, instal JobSet API:

    kubectl apply --server-side -f https://github.com/kubernetes-sigs/jobset/releases/download/v0.12.0/manifests.yaml
    
  7. Pastikan node memiliki STATUS dari Ready dan pod jobset-controller-manager memiliki STATUS dari Running:

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

    Outputnya mirip dengan hal berikut ini:

    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
    

Pembersihan

Agar akun Google Cloud Anda tidak dikenai biaya untuk resource yang digunakan di halaman ini, hapus cluster setelah Anda selesai:

  • Cluster Toolkit: Hancurkan deployment dengan menjalankan perintah berikut:

    ./gcluster destroy DEPLOYMENT_FOLDER_NAME

    Ganti DEPLOYMENT_FOLDER_NAME dengan nama folder deployment Anda.

  • gcloud CLI: Hapus cluster GKE dan node pool-nya dengan menjalankan perintah berikut:

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

Langkah berikutnya