Buat cluster

Jika Anda tertarik dengan cluster pelatihan Platform Agen Gemini Enterprise, hubungi perwakilan penjualan Anda untuk mendapatkan akses.

Halaman ini menyediakan metode langsung berbasis 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 orchestrator Slurm—dalam file JSON. Juga disertakan cara menggunakan curl dan panggilan REST API untuk men-deploy konfigurasi ini, membuat cluster, dan mengelola siklus prosesnya dengan operasi GET, LIST, UPDATE, dan DELETE.

Menentukan konfigurasi cluster

Buat file JSON untuk menentukan konfigurasi lengkap cluster pelatihan Anda.

Jika kebijakan organisasi Anda melarang alamat IP Publik pada instance komputasi, deploy cluster pelatihan dengan parameter enable_public_ips: false dan gunakan Cloud NAT untuk egress 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 jaringan hingga hardware untuk node login dan pekerja.

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. Konfigurasi ini menyediakan instance Filestore yang berfungsi sebagai direktori /home untuk cluster, yang cocok untuk penggunaan umum dan menyimpan data pengguna.

Contoh berikut menunjukkan konten gpu-filestore.json. Spesifikasi ini membuat cluster dengan partisi GPU. Anda dapat menggunakan spesifikasi 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 hal 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 jaringan hingga hardware untuk node login dan pekerja.

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 orchestrator Slurm dengan parameter lanjutan. Gunakan template ini jika Anda memerlukan kontrol terperinci atas perilaku penjadwalan tugas, seperti menetapkan bobot prioritas multifaktor, mengonfigurasi preemption 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 Anda ditentukan dalam file JSON, gunakan perintah REST API berikut untuk men-deploy dan mengelola cluster. Contoh ini menggunakan alias gcurl, yang merupakan pintasan yang mudah dan diautentikasi untuk berinteraksi dengan endpoint API. Perintah ini mencakup siklus proses lengkap, mulai dari men-deploy cluster Anda hingga memperbarui cluster untuk 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 cluster Pelatihan Model Anda.

Men-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 Anda tempat cluster akan dibuat. Google Cloud
  • REGION: Region untuk cluster dan resource-nya . Google Cloud
  • ZONE: Zona tempat resource cluster akan disediakan. Google Cloud
  • CLUSTER_ID: ID unik untuk cluster pelatihan Anda, yang juga digunakan sebagai awalan untuk memberi nama resource terkait.

Menjalankan perintah pembuatan

Sekarang, jalankan perintah gcurl berikut. Perintah 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 disebutkan sebelumnya.

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

Ringkasan

Mengirimkan konfigurasi cluster Anda 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 Anda akan menggunakannya pada 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 dapat berisi karakter alfanumerik huruf kecil, harus diawali dengan a huruf, dan dibatasi hingga 10 karakter.
  • PROJECT_ID: Project ID Anda Google Cloud .
  • REGION: Region tempat cluster dan resource-nya akan berada. Google Cloud
  • NETWORK: Jaringan Virtual Private Cloud yang akan digunakan untuk resource cluster.
  • ZONE: Zona untuk cluster dan resource-nya. Google Cloud
  • SUBNETWORK: Subnetwork yang akan digunakan untuk resource cluster.

Konfigurasi node pool

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

Setelan node pool umum

  • 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: The MIN_NODE_COUNT must be the same as the 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 boot disk untuk node login (misalnya, pd-standard, pd-ssd).
  • BOOT_DISK_SIZE_GB: Ukuran boot disk dalam GB untuk node login.

Setelan penyimpanan tambahan

  • FILESTORES (sesuai dengan filestores di dalam objek node_pools): Daftar instance Filestore yang sudah ada untuk dipasang di node pool untuk akses file bersama.
  • LUSTRES (sesuai dengan lustres di dalam objek node_pools): Daftar instance Lustre yang sudah ada untuk dipasang di node pool untuk akses file berperforma tinggi.

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

  • HOME_DIRECTORY_STORAGE (sesuai dengan home_directory_storage): Nama lengkap resource instance penyimpanan yang sudah ada untuk dipasang sebagai direktori /home. Dapat berupa instance Filestore atau Lustre.
  • LOGIN_NODE_POOL_ID (sesuai dengan login_node_pool_id): ID node pool yang harus 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, dengan setiap string berisi konten lengkap skrip Bash yang akan dieksekusi sebelum tugas dimulai.
  • epilog_bash_scripts: Daftar string, dengan 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_*: Kumpulan nilai bilangan bulat yang menetapkan bobot ke berbagai faktor dalam perhitungan prioritas penjadwalan (misalnya, priority_weight_age, priority_weight_fairshare).
  • PREEMPT_TYPE: Plugin preemption yang akan digunakan (misalnya, preempt/partition_prio).
  • PREEMPT_MODE: Mode untuk plugin preemption (misalnya, REQUEUE).
  • PREEMPT_EXEMPT_TIME: Waktu setelah tugas dimulai selama tugas tersebut tidak dapat di-preempt.

Langkah berikutnya

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