Buat cluster

Jika Anda tertarik dengan cluster pelatihan Vertex AI, hubungi perwakilan penjualan Anda untuk mendapatkan akses.

Halaman ini menyediakan metode langsung yang didorong API untuk membuat dan mengelola cluster pelatihan. Anda akan mempelajari cara menentukan konfigurasi lengkap cluster, termasuk node login, partisi GPU berperforma tinggi seperti A4, dan setelan pengelola Slurm—dalam file JSON. Selain itu, disertakan juga cara menggunakan panggilan curl dan REST API untuk men-deploy konfigurasi ini, membuat cluster, dan mengelola siklus prosesnya dengan operasi GET, LIST, UPDATE, dan DELETE.

Tentukan konfigurasi cluster

Buat file JSON untuk menentukan konfigurasi lengkap untuk cluster pelatihan Anda.

Jika kebijakan organisasi Anda melarang alamat IP Publik pada instance compute, deploy cluster pelatihan dengan parameter enable_public_ips: false dan gunakan Cloud NAT untuk keluar dari internet.

Langkah pertama dalam menyediakan cluster pelatihan adalah menentukan konfigurasi lengkapnya dalam file JSON. File ini berfungsi sebagai cetak biru untuk cluster Anda, yang menentukan semuanya mulai dari nama dan setelan jaringannya hingga hardware untuk node pekerja dan loginnya.

Bagian berikut menyediakan beberapa file konfigurasi JSON lengkap yang berfungsi sebagai template praktis untuk berbagai kasus penggunaan umum. Lihat daftar ini untuk menemukan contoh yang paling sesuai dengan kebutuhan Anda dan gunakan sebagai titik awal.

Setiap contoh diikuti dengan deskripsi mendetail tentang parameter utama yang digunakan dalam konfigurasi tertentu tersebut.

GPU dengan Filestore saja

Ini adalah konfigurasi standar. Direktori ini menyediakan instance Filestore yang berfungsi sebagai direktori /home untuk cluster, yang cocok untuk penggunaan umum dan penyimpanan data pengguna.

Contoh berikut menunjukkan konten gpu-filestore.json. Spesifikasi ini membuat cluster dengan partisi GPU. Anda dapat menggunakan ini sebagai template dan mengubah nilai seperti machineType atau nodeCount agar sesuai dengan kebutuhan Anda.

Untuk mengetahui daftar parameter, lihat Referensi parameter.

 {
  "display_name": "DISPLAY_NAME",
  "network": {
    "network": "projects/PROJECT_ID/global/networks/NETWORK",
    "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK"
  },
  "node_pools": [
    {
      "id": "login",
      "machine_spec": {
        "machine_type": "n2-standard-8"
      },
      "scaling_spec": {
        "min_node_count": MIN_NODE_COUNT,
        "max_node_count": MAX_NODE_COUNT
      },
      "enable_public_ips": true,
      "zone": "ZONE",
      "boot_disk": {
        "boot_disk_type": "pd-standard",
        "boot_disk_size_gb": 200
      }
    },
    {
      "id": "a4",
      "machine_spec": {
        "machine_type": "a4-highgpu-8g",
        "accelerator_type": "NVIDIA_B200",
        "accelerator_count": 8,
        "reservation_affinity": {
          "reservationAffinityType": "RESERVATION_AFFINITY_TYPE",
          "key": "compute.googleapis.com/reservation-name",
          "values": [
            "projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION"
          ]
        }
      },
      "provisioning_model": "RESERVATION",
      "scaling_spec": {
        "min_node_count": MIN_NODE_COUNT,
        "max_node_count": MAX_NODE_COUNT
      },
      "enable_public_ips": true,
      "zone": "ZONE",
      "boot_disk": {
        "boot_disk_type": "hyperdisk-balanced",
        "boot_disk_size_gb": 200
      }
    }
  ],
  "orchestrator_spec": {
    "slurm_spec": {
      "home_directory_storage": "projects/PROJECT_ID/locations/ZONE/instances/FILESTORE",
      "partitions": [
        {
          "id": "a4",
          "node_pool_ids": [
            "a4"
          ]
        }
      ],
      "login_node_pool_id": "login"
    }
  }
}

GPU dengan Filestore dan Managed Lustre

Konfigurasi lanjutan ini mencakup instance Filestore standar selain sistem file Lustre berperforma tinggi. Pilih opsi ini jika tugas pelatihan Anda memerlukan akses throughput tinggi ke set data besar.

Untuk mengetahui daftar parameter, lihat Referensi parameter.

{
  "display_name": "DISPLAY_NAME",
  "network": {
    "network": "projects/PROJECT_ID/global/networks/NETWORK",
    "subnetwork": "projects/PROJECT_ID/regions/asia-sREGION/subnetworks/SUBNETWORK"
  },
  "node_pools": [
    {
      "id": "login",
      "machine_spec": {
        "machine_type": "n2-standard-8"
      },
      "scaling_spec": {
        "min_node_count": MIN_NODE_COUNT,
        "max_node_count": MAX_NODE_COUNT
      },
      "enable_public_ips": true,
      "zone": "ZONE",
      "boot_disk": {
        "boot_disk_type": "pd-standard",
        "boot_disk_size_gb": 200
      },
      "lustres": [
        "projects/PROJECT_ID/locations/ZONE/instances/LUSTRE"
      ]
    },
    {
      "id": "a4",
      "machine_spec": {
        "machine_type": "a4-highgpu-8g",
        "accelerator_type": "NVIDIA_B200",
        "accelerator_count": 8,
        "reservation_affinity": {
          "reservation_affinity_type": RESERVATION_AFFINITY_TYPE,
          "key": "compute.googleapis.com/reservation-name",
          "values": [
            "projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME"
          ]
        }
      },
      "provisioning_model": "RESERVATION",
      "scaling_spec": {
        "min_node_count": MIN_NODE_COUNT,
        "max_node_count": MAX_NODE_COUNT
      },
      "enable_public_ips": true,
      "zone": "ZONE",
      "boot_disk": {
        "boot_disk_type": "hyperdisk-balanced",
        "boot_disk_size_gb": 200
      },
      "lustres": [
        "projects/PROJECT_ID/locations/ZONE/instances/LUSTRE"
      ]
    }
  ],
  "orchestrator_spec": {
    "slurm_spec": {
      "home_directory_storage": "projects/PROJECT_ID/locations/ZONE/instances/FILESTORE",
      "partitions": [
        {
          "id": "a4",
          "node_pool_ids": [
            "a4"
          ]
        }
      ],
      "login_node_pool_id": "login"
    }
  }
}
  

GPU dengan skrip startup

Contoh ini menunjukkan cara menambahkan skrip kustom ke node pool. Skrip ini dijalankan di semua node dalam pool tersebut saat startup. Untuk mengonfigurasi ini, tambahkan kolom yang relevan ke definisi node pool Anda selain setelan umum. Untuk mengetahui daftar parameter dan deskripsinya, lihat Referensi parameter.

{
  "display_name": "DISPLAY_NAME",
  "network": {
    "network": "projects/PROJECT_ID/global/networks/NETWORK",
    "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK"
  },
  "node_pools": [
    {
      "id": "login",
      "machine_spec": {
        "machine_type": "n2-standard-8"
      },
      "scaling_spec": {
        "min_node_count": MIN_NODE_COUNT,
        "max_node_count": MAX_NODE_COUNT
      },
      "enable_public_ips": true,
      "zone": "ZONE",
      "boot_disk": {
        "boot_disk_type": "pd-standard",
        "boot_disk_size_gb": 200
      },
      "startup_script" : "#Example script\nsudo mkdir -p /data\necho 'Script Finished'\n",
    },
    {
      "id": "a4",
      "machine_spec": {
        "machine_type": "a4-highgpu-8g",
        "accelerator_type": "NVIDIA_B200",
        "accelerator_count": 8,
        "reservation_affinity": {
          "reservationAffinityType": "RESERVATION_AFFINITY_TYPE",
          "key": "compute.googleapis.com/reservation-name",
          "values": [
            "projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME"
          ]
        }
      },
      "provisioning_model": "PROVISIONING_MODEL",
      "scaling_spec": {
        "min_node_count": MIN_NODE_COUNT,
        "max_node_count": MAX_NODE_COUNT
      },
      "enable_public_ips": true,
      "zone": "ZONE",
      "boot_disk": {
        "boot_disk_type": "hyperdisk-balanced",
        "boot_disk_size_gb": 200
      },
      "startup_script" : "#Example script\nsudo mkdir -p /data\necho 'Script Finished'\n",
    }
  ],
  "orchestrator_spec": {
    "slurm_spec": {
      "home_directory_storage": "projects/PROJECT_ID/locations/ZONE/instances/FILESTORE",
      "partitions": [
        {
          "id": "a4",
          "node_pool_ids": [
            "a4"
          ]
        }
      ],
      "login_node_pool_id": "login"
    }
  }
}

Cluster khusus CPU

Untuk menyediakan lingkungan cluster pelatihan, Anda harus menentukan konfigurasi lengkapnya terlebih dahulu dalam file JSON. File ini berfungsi sebagai cetak biru untuk cluster Anda, yang menentukan semuanya mulai dari nama dan setelan jaringannya hingga hardware untuk node pekerja dan loginnya.

Untuk mengetahui daftar parameter, lihat Referensi parameter.

{
  "display_name": "DISPLAY_NAME",
  "network": {
    "network": "projects/PROJECT_ID/global/networks/NETWORK",
    "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK"
  },
  "node_pools": [
    {
      "id": "cpu",
      "machine_spec": {
        "machine_type": "n2-standard-8"
      },
      "scaling_spec": {
        "min_node_count": MIN_NODE_COUNT,
        "max_node_count": MAX_NODE_COUNT
      },
      "zone": "ZONE",
      "enable_public_ips": true,
      "boot_disk": {
        "boot_disk_type": "pd-standard",
        "boot_disk_size_gb": 120
      }
    },
    {
      "id": "login",
      "machine_spec": {
        "machine_type": "n2-standard-8",
      }
      "scaling_spec": {
        "min_node_count": MIN_NODE_COUNT,
        "max_node_count": MAX_NODE_COUNT
      },
      "zone": "ZONE",
      "enable_public_ips": true,
      "boot_disk": {
        "boot_disk_type": "pd-standard",
        "boot_disk_size_gb": 120
      }
    },
  ],
  "orchestrator_spec": {
    "slurm_spec": {
      "home_directory_storage": "projects/PROJECT_ID/locations/ZONE/instances/FILESTORE",
      "partitions": [
        {
          "id": "cpu",
          "node_pool_ids": [
            "cpu"
          ]
        }
      ],
      "login_node_pool_id": "login"
    }
  }
}

CPU dengan konfigurasi Slurm lanjutan

Contoh ini menunjukkan cara menyesuaikan orkestrator Slurm dengan parameter lanjutan. Gunakan template ini jika Anda memerlukan kontrol terperinci atas perilaku penjadwalan tugas, seperti menetapkan bobot prioritas multi-faktor, mengonfigurasi pendahuluan tugas, dan menjalankan skrip prolog dan epilog untuk penyiapan dan pembersihan tugas otomatis.

Untuk mengetahui daftar parameter, lihat Referensi parameter.

{
  "display_name": "DISPLAY_NAME",
  "network": {
    "network": "projects/PROJECT_ID/global/networks/NETWORK",
    "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK"
  },
  "node_pools": [
    {
      "id": "cpu",
      "machine_spec": {
        "machine_type": "n2-standard-8"
      },
      "scaling_spec": {
        "min_node_count": MIN_NODE_COUNT,
        "max_node_count": MAX_NODE_COUNT
      },
      "zone": "ZONE",
      "enable_public_ips": true,
      "boot_disk": {
        "boot_disk_type": "pd-standard",
        "boot_disk_size_gb": 120
      }
    },
    {
      "id": "login",
      "machine_spec": {
        "machine_type": "n2-standard-8"
      },
      "scaling_spec": {
        "min_node_count": MIN_NODE_COUNT,
        "max_node_count": MAX_NODE_COUNT
      },
      "zone": "ZONE",
      "enable_public_ips": true,
      "boot_disk": {
        "boot_disk_type": "pd-standard",
        "boot_disk_size_gb": 120
      }
    }
  ],
  "orchestrator_spec": {
    "slurm_spec": {
      "home_directory_storage": "projects/PROJECT_ID/locations/ZONE/instances/FILESTORE",
      "accounting": {
        "accounting_storage_enforce": "ACCOUNTING_STORAGE_ENFORCE"
      },
      "scheduling": {
        "priority_type": "PRIORITY_TYPE",
        "priority_weight_age": PRIORITY_WEIGHT_AGE,
        "priority_weight_assoc": PRIORITY_WEIGHT_ASSOC,
        "priority_weight_fairshare": PRIORITY_WEIGHT_FAIRSHARE,
        "priority_weight_job_size": PRIORITY_WEIGHT_JOB_SIZE,
        "priority_weight_partition": PRIORITY_WEIGHT_PARTITION,
        "priority_weight_qos": PRIORITY_WEIGHT_QOS,
        "priority_weight_tres": "PRIORITY_WEIGHT_TRES",
        "preempt_type": "PREEMPT_TYPE",
        "preempt_mode": "PREEMPT_MODE",
        "preempt_exempt_time": "PREEMPT_EXEMPT_TIME"
      },
      "prolog_bash_scripts": [
        "#!/bin/bash\necho 'First prolog script running'",
        "#!/bin/bash\necho 'Second prolog script running'"
      ],
      "epilog_bash_scripts": [
        "#!/bin/bash\necho 'Epilog script running'"
      ]
      "partitions": [
        {
          "id": "cpu",
          "node_pool_ids": [
            "cpu"
          ]
        }
      ],
      "login_node_pool_id": "login"
    }
  }
}

Setelah cluster ditentukan dalam file JSON, gunakan perintah REST API berikut untuk men-deploy dan mengelola cluster. Contoh menggunakan alias gcurl, yang merupakan pintasan yang diautentikasi dan praktis untuk berinteraksi dengan endpoint API. Perintah ini mencakup siklus proses penuh, mulai dari men-deploy cluster Anda hingga memperbarui cluster, mendapatkan statusnya, mencantumkan semua cluster, dan akhirnya menghapus cluster.

Autentikasi

alias gcurl='curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"'

Buat file JSON

Buat file JSON (misalnya, @cpu-cluster.json) untuk menentukan konfigurasi untuk cluster Pelatihan Model Anda.

Deploy cluster

Setelah membuat file konfigurasi JSON, Anda dapat men-deploy cluster menggunakan REST API.

Menetapkan variabel lingkungan

Sebelum menjalankan perintah, tetapkan variabel lingkungan berikut. Hal ini membuat perintah API lebih rapi dan lebih mudah dikelola.

  • PROJECT_ID: Project ID Google Cloud tempat cluster akan dibuat.
  • REGION: Google Cloud Region untuk cluster dan resourcenya.
  • ZONE: Google Cloud zona tempat resource cluster akan disediakan.
  • CLUSTER_ID: ID unik untuk cluster pelatihan Anda, yang juga digunakan sebagai awalan untuk memberi nama resource terkait.

Jalankan perintah create

Sekarang, jalankan perintah gcurl berikut. Aplikasi ini menggunakan file JSON (dalam contoh ini, cpu-cluster.json) sebagai isi permintaan dan variabel lingkungan yang baru saja Anda tetapkan untuk membuat endpoint API dan parameter kueri.

  gcurl -X POST -d @cpu-cluster.json https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/modelDevelopmentClusters?model_development_cluster_id=CLUSTER_ID
    

Setelah deployment dimulai, ID Operasi akan dibuat. Pastikan untuk menyalin ID ini. Anda akan memerlukannya untuk memvalidasi cluster pada langkah berikutnya.

  gcurl -X POST -d @cpu-cluster.json https://us-central1-aiplatform.googleapis.com/v1beta1/projects/managedtraining-project/locations/us-central1/modelDevelopmentClusters?model_development_cluster_id=training
  {
      "name": "projects/1059558423163/locations/us-central1/operations/2995239222190800896",
      "metadata": {
      "@type": "type.googleapis.com/google.cloud.aiplatform.v1beta1.CreateModelDevelopmentClusterOperationMetadata",
      "genericMetadata": {
        "createTime": "2025-10-24T14:16:59.233332Z",
        "updateTime": "2025-10-24T14:16:59.233332Z"
      },
      "progressMessage": "Create Model Development Cluster request received, provisioning..."
  }
    

Memvalidasi deployment cluster

Lacak progres deployment menggunakan ID operasi yang diberikan saat Anda men-deploy cluster. Misalnya, 2995239222190800896 adalah ID operasi dalam contoh yang dikutip sebelumnya.

    gcurl https://REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID
    

Ringkasan

Mengirimkan konfigurasi cluster dengan perintah POST gcurl akan memulai penyediaan cluster Anda, yang merupakan operasi asinkron yang berjalan lama. API akan segera menampilkan respons yang berisi Operation ID. Anda harus menyimpan ID ini karena akan menggunakannya di langkah-langkah berikut untuk memantau progres deployment, memverifikasi bahwa cluster telah berhasil dibuat, dan mengelola siklus prosesnya.

Referensi parameter

Daftar berikut menjelaskan semua parameter yang digunakan dalam contoh konfigurasi. Parameter diatur ke dalam grup logis berdasarkan resource yang dikonfigurasi.

Setelan umum dan jaringan

  • DISPLAY_NAME: Nama unik untuk cluster pelatihan Anda. String hanya boleh berisi karakter alfanumerik huruf kecil, harus diawali dengan huruf, dan dibatasi hingga 10 karakter.
  • PROJECT_ID: Project ID Google Cloud Anda.
  • REGION: Google Cloud region tempat cluster dan resourcenya akan berada.
  • NETWORK: Jaringan Virtual Private Cloud yang akan digunakan untuk resource cluster.
  • ZONE: Google Cloud Zona untuk cluster dan resource-nya.
  • SUBNETWORK: Subnetwork yang akan digunakan untuk resource cluster.

Konfigurasi node pool

Parameter berikut digunakan untuk menentukan node pool untuk node login dan pekerja.

Setelan umum kumpulan node

  • ID: ID unik untuk node pool dalam cluster (misalnya, "login", "a4", "cpu").
  • PROVISIONING_MODEL: Model penyediaan untuk node pekerja (misalnya, ON_DEMAND, SPOT, RESERVATION, FLEX_START).
  • MACHINE_TYPE: Jenis mesin untuk node pekerja. Nilai yang didukung adalah a3-megagpu-8g, a3-ultragpu-8g, a4-highgpu-8g.
  • MIN_NODE_COUNT: MIN_NODE_COUNT harus sama dengan MAX_NODE_COUNT.
  • MAX_NODE_COUNT: Untuk node pool login, MAX_NODE_COUNT harus sama dengan MIN_NODE_COUNT.
  • ENABLE_PUBLIC_IPS: Boolean (true atau false) untuk menentukan apakah node login memiliki alamat IP publik.
  • BOOT_DISK_TYPE: Jenis disk booting untuk node login (misalnya, pd-standard, pd-ssd).
  • BOOT_DISK_SIZE_GB: Ukuran boot disk dalam GB untuk node login.

Setelan Khusus Pekerja

  • ACCELERATOR_TYPE: Akselerator GPU yang sesuai untuk dipasang ke node pekerja. Nilai yang didukung adalah:
    • NVIDIA_H100_MEGA_80GB
    • NVIDIA_H200_141GB
    • NVIDIA_B200
  • ACCELERATOR_COUNT: Jumlah akselerator yang akan dipasang ke setiap node pekerja.
  • RESERVATION_AFFINITY_TYPE: Afinitas reservasi untuk node pool (misalnya, SPECIFIC_RESERVATION).
  • RESERVATION_NAME: Nama reservasi yang akan digunakan untuk node pool.

Konfigurasi orchestrator dan penyimpanan

Kolom ini ditentukan dalam blok orchestrator_spec.slurm_spec dari file JSON.

Setelan Slurm dan Penyimpanan Inti

  • FILESTORE (sesuai dengan home_directory_storage): Nama resource lengkap instance Filestore yang akan di-mount sebagai direktori /home.
  • LUSTRE (sesuai dengan lustres di dalam objek node_pools): Daftar instance Managed Lustre yang sudah ada untuk di-mount di node cluster untuk akses file berperforma tinggi.
  • LOGIN_NODE_POOL_ID (sesuai dengan login_node_pool_id): ID node pool yang akan digunakan untuk node login.
  • partitions: Daftar objek partisi, dengan setiap objek memerlukan id dan daftar node_pool_ids.

Setelan Slurm lanjutan

  • prolog_bash_scripts: Daftar string, di mana setiap string berisi konten lengkap skrip Bash yang akan dieksekusi sebelum tugas dimulai.
  • epilog_bash_scripts: Daftar string, di mana setiap string berisi konten lengkap skrip Bash yang akan dieksekusi setelah tugas selesai.
  • ACCOUNTING_STORAGE_ENFORCE: Menerapkan batas akuntansi untuk penggunaan penyimpanan.
  • PRIORITY_TYPE: Algoritma prioritas penjadwalan yang akan digunakan (misalnya, priority/multifactor).
  • priority_weight_*: Serangkaian nilai bilangan bulat yang menetapkan bobot ke berbagai faktor dalam perhitungan prioritas penjadwalan (misalnya, priority_weight_age, priority_weight_fairshare).
  • PREEMPT_TYPE: Plugin preempti yang akan digunakan (misalnya, preempt/partition_prio).
  • PREEMPT_MODE: Mode untuk plugin preempti (misalnya, REQUEUE).
  • PREEMPT_EXEMPT_TIME: Waktu setelah tugas dimulai dan tidak dapat didahului.

Langkah berikutnya

Gunakan cluster pelatihan persisten aktif untuk menjalankan workload machine learning Anda.