Orkestrasi

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

Cluster pelatihan Vertex AI menggunakan Simple Linux Utility for Resource Management (Slurm) sebagai pengelola untuk mengelola dan menjadwalkan tugas di cluster Anda.

Slurm adalah sistem pengelolaan cluster dan penjadwalan tugas open source yang banyak digunakan dan dikenal karena skalabilitas dan toleransi fault-nya.

Kemampuan utama Slurm

  • Slurm mengalokasikan sekumpulan node komputasi untuk penggunaan eksklusif tugas tertentu selama periode yang ditentukan. Hal ini memastikan tugas memiliki akses khusus ke resource yang diperlukan untuk berjalan tanpa gangguan.
  • Slurm menyediakan framework untuk mengelola siklus proses lengkap tugas—mulai dari pengiriman dan eksekusi hingga pemantauan dan penyelesaian. Sistem ini dirancang khusus untuk menangani tugas paralel yang berjalan di serangkaian node yang dialokasikan.
  • Slurm mempertahankan antrean tugas yang tertunda, menggunakan mesin prioritas yang canggih untuk mengarbitrasi akses ke resource komputasi. Dengan mempertimbangkan faktor-faktor seperti ukuran tugas, prioritas pengguna, dan waktu tunggu, sistem ini memastikan pemanfaatan resource yang adil dan efisien di seluruh cluster.

Konfigurasi cluster dasar

Sebelum dapat menjalankan tugas, Anda harus menentukan struktur dasar cluster Slurm. Bagian ini menjelaskan setelan konfigurasi penting, termasuk cara mengatur node komputasi ke dalam partisi, menentukan kumpulan node login khusus, dan mengonfigurasi direktori beranda bersama untuk pengguna Anda.

Partisi

Partisi mengelompokkan node ke dalam set logis, yang dapat berguna untuk mengelola berbagai jenis mesin atau tingkat akses. Partisi ditentukan sebagai daftar dalam kolom partisi slurm_spec.

Setiap objek partisi memiliki kolom wajib berikut:

  • id: ID unik untuk partisi.
  • node_pool_ids: Daftar yang berisi ID satu atau beberapa node pool yang termasuk dalam partisi ini.

Contoh:

"partitions": [
  {
    "id": "a4",
    "node_pool_ids": [ "a4" ]
  }
]

Node login

Node pool login menyediakan node khusus yang berfungsi sebagai titik entri utama bagi pengguna untuk berinteraksi dengan cluster. Kolom login_node_pool_id menentukan ID unik untuk kumpulan ini.

Contoh:

"login_node_pool_id": "login"

Penyimpanan direktori beranda

Kolom home_directory_storage menentukan instance Filestore yang akan di-mount sebagai direktori /home di semua node dalam cluster. Hal ini menyediakan direktori rumah bersama yang persisten untuk semua pengguna.

Anda harus memberikan nama resource lengkap instance Filestore untuk nilai ini.

Contoh:

"home_directory_storage": "projects/PROJECT_ID/locations/REGION-ZONE/instances/FILESTORE_INSTANCE_NAME"

Konfigurasi Slurm lanjutan

Cluster pelatihan Vertex AI memungkinkan Anda menyesuaikan serangkaian parameter slurm.conf tertentu, tetapi perlu diketahui bahwa setelan ini hanya dapat dikonfigurasi selama pembuatan cluster awal dan tidak dapat diubah setelahnya.

Akuntansi

Cluster pelatihan Vertex AI memungkinkan Anda menggunakan fitur akuntansi bawaan untuk melacak penggunaan resource dalam cluster Anda. Untuk panduan lengkap tentang cara memantau metrik seperti waktu CPU khusus tugas dan penggunaan memori, tinjau dokumentasi akuntansi Slurm resmi.

Parameter Nilai Contoh
AccountingStorageEnforce String yang dipisahkan koma associations,limits,qos

Preemption dan prioritas

Untuk mengelola cara tugas dijadwalkan dan diprioritaskan, cluster pelatihan Vertex AI memungkinkan Anda mengonfigurasi penghentian tugas Slurm. Penghentian sementara berfungsi dengan plugin prioritas multifaktor untuk menentukan apakah tugas yang sedang berjalan harus dijeda untuk memberi jalan bagi pekerjaan dengan prioritas yang lebih tinggi.

Untuk ringkasan konseptual lengkap, tinjau dokumentasi Slurm resmi tentang plugin prioritas multifaktor dan penghentian sementara.

Parameter preemption

Parameter Nilai Contoh
PREEMPT_TYPE String preempt/partition_prio
PREEMPT_MODE String yang dipisahkan koma SUSPEND,GANG
PREEMPT_EXEMPT_TIME String 00:00:00

Parameter prioritas

Parameter Nilai Contoh
PRIORITY_TYPE String priority/multifactor
PRIORITY_WEIGHT_AGE Bilangan bulat 0
PRIORITY_WEIGHT_ASSOC Bilangan bulat 0
PRIORITY_WEIGHT_FAIRSHARE Bilangan bulat 0
PRIORITY_WEIGHT_JOB_SIZE Bilangan bulat 0
PRIORITY_WEIGHT_PARTITION Bilangan bulat 0
PRIORITY_WEIGHT_QOS Bilangan bulat 0
PRIORITY_WEIGHT_TRES String yang dipisahkan koma cpu=100,mem=150

Skrip prolog dan epilog

Anda dapat mengonfigurasi skrip Bash kustom agar berjalan secara otomatis di awal (prolog) dan akhir (epilog) setiap tugas menggunakan kolom berikut:

  • prolog_bash_scripts: Daftar string, di mana setiap string berisi seluruh konten skrip Bash yang akan dieksekusi sebelum tugas dimulai.
  • epilog_bash_scripts: Daftar string, di mana setiap string berisi seluruh konten skrip Bash yang akan dieksekusi setelah tugas selesai.

Hal ini berguna untuk menyiapkan lingkungan tugas yang unik atau melakukan tugas pembersihan otomatis.

Contoh spesifikasi cluster

Contoh berikut menunjukkan konfigurasi JSON lengkap untuk membuat cluster pelatihan. Anda dapat menyesuaikan spesifikasi ini untuk kebutuhan Anda sendiri.

{
  // ... other cluster configurations ...
  "orchestratorSpec": {
    "slurmSpec": {
      "partitions": [
        {
          "id": "a4",
          "node_pool_ids": ["a4"]
        }
      ],
      "login_node_pool_id": "login",
      "home_directory_storage": "projects/PROJECT_ID/locations/REGION-ZONE/instances/FILESTORE_INSTANCE_ID",
      "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'"
      ]
      // ... other Slurm settings ...
    }
  }
}

Pengelolaan dan operasi cluster

Mengelola cluster yang sedang berjalan

Setelah cluster dibuat dengan setelan akuntansi dan pendahuluan yang dipilih, Anda dapat menggunakan alat command line Slurm untuk mengelola akun pengguna dan memantau penjadwalan tugas.

Pengelolaan akun dengan sacctmgr

Perintah sacctmgr adalah alat utama untuk mengelola informasi pengguna dan akun dalam database Slurm. Misalnya, untuk menambahkan pengguna baru ke akun dan memberikan akses ke partisi, jalankan perintah berikut:

sudo sacctmgr add User Accounts=<account> Partition=<partition> <user>

Untuk daftar lengkap semua opsi sacctmgr, tinjau dokumentasi akuntansi Slurm resmi.

Memeriksa prioritas tugas

Untuk memeriksa komponen prioritas setiap tugas dalam antrean, gunakan utilitas sprio. Hal ini berguna untuk memahami alasan tugas tertentu dijadwalkan untuk dijalankan sebelum tugas lainnya.

Lihat dokumentasi utilitas sprio untuk mengetahui penggunaan mendetail.

Contoh pendahuluan

Dokumentasi Slurm resmi memberikan beberapa contoh kerja dari berbagai strategi pendahuluan. Anda dapat menemukannya di halaman Slurm Preemption.

Langkah berikutnya

Berikut ini berfokus pada langkah-langkah terakhir siklus proses machine learning: mengelola, men-deploy, dan memantau model terlatih Anda.

  • Men-deploy model untuk inferensi: Deploy model terlatih ke endpoint Vertex AI untuk menyalurkan permintaan inferensi online dalam skala besar.
  • Mengelola siklus proses model: Gunakan Vertex AI Model Registry untuk membuat versi, membandingkan, dan mengelola model Anda. Pipeline dapat dikonfigurasi untuk mendaftarkan model baru secara otomatis setelah pelatihan berhasil.
  • Pantau eksekusi pipeline dan performa model Anda:
    • Pemantauan Pipeline: Lacak grafik eksekusi, artefak, dan performa eksekusi pipeline untuk men-debug masalah dan mengoptimalkan orkestrasi.
    • Pemantauan Model: Setelah deployment, siapkan pemantauan untuk mendeteksi penyimpangan dan anomali dalam performa prediksi model Anda, yang membantu mempertahankan akurasi model dari waktu ke waktu.
  • Mengoptimalkan biaya dan mengelola siklus proses cluster: Saat menggunakan pipeline otomatis, kelola siklus proses cluster dengan mempertimbangkan frekuensi eksekusi.
    • Untuk pengoperasian yang jarang, tambahkan langkah pipeline terakhir untuk menghapus cluster guna menghemat biaya. Hal ini biasanya melibatkan pembuatan komponen pipeline kustom yang memanggil fungsi penghapusan.
    • Untuk menjalankan tugas secara sering, biarkan cluster tetap aktif untuk mengurangi waktu mulai tugas.