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.