Cluster pelatihan Gemini Enterprise Agent Platform menggunakan Simple Linux Utility for Resource Management (Slurm) sebagai orkestrator 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 tugas yang lengkap—mulai dari pengiriman dan eksekusi hingga pemantauan dan penyelesaian. Sistem ini dirancang khusus untuk menangani tugas paralel yang berjalan di sekumpulan node yang dialokasikan.
- Slurm mempertahankan antrean tugas yang tertunda, menggunakan mesin prioritas canggih untuk mengarbitrasi akses ke resource komputasi. Dengan mempertimbangkan faktor-faktor seperti ukuran tugas, prioritas pengguna, dan waktu tunggu, sistem ini memastikan penggunaan 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 kumpulan 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 kumpulan node yang termasuk dalam partisi ini.
Contoh:
"partitions": [
{
"id": "a4",
"node_pool_ids": [ "a4" ]
}
]
Node login
Kumpulan node 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 dipasang sebagai direktori /home di semua node dalam cluster. Hal ini menyediakan direktori beranda 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 Gemini Enterprise Agent Platform memungkinkan Anda menyesuaikan kumpulan 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 Gemini Enterprise Agent Platform memungkinkan Anda menggunakan fitur akuntansi bawaan untuk melacak penggunaan resource dalam cluster. 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 Gemini Enterprise Agent Platform memungkinkan Anda mengonfigurasi preemption tugas Slurm. Preemption berfungsi dengan plugin prioritas multifaktor untuk menentukan apakah tugas yang sedang berjalan harus dijeda untuk memberi ruang bagi pekerjaan yang memiliki prioritas lebih tinggi.
Untuk ringkasan konseptual lengkap, tinjau dokumentasi Slurm resmi tentang the plugin prioritas multifaktor dan preemption.
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 untuk dijalankan secara otomatis pada awal (prolog) dan akhir (epilog) setiap tugas menggunakan kolom berikut:
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.
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 preemption 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 memberinya 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 detail penggunaan.
Contoh preemption
Dokumentasi Slurm resmi menyediakan beberapa contoh kerja dari berbagai strategi preemption. Anda dapat menemukannya di halaman Preemption Slurm.
Langkah berikutnya
Bagian berikut berfokus pada langkah terakhir siklus proses machine learning: mengelola, men-deploy, dan memantau model terlatih Anda.
- Men-deploy model untuk inferensi: Men-deploy model terlatih Anda ke endpoint Gemini Enterprise Agent Platform untuk menayangkan permintaan inferensi online dalam skala besar.
- Mengelola siklus proses model Anda: Menggunakan Model Registry Gemini Enterprise Agent Platform untuk membuat versi, membandingkan, dan mengelola model Anda. Pipeline dapat dikonfigurasi untuk otomatis mendaftarkan model baru setelah pelatihan berhasil.
- Memantau operasi pipeline dan performa model Anda:
- Pemantauan Pipeline: Melacak grafik eksekusi, artefak, dan performa operasi pipeline Anda untuk men-debug masalah dan mengoptimalkan orkestrasi Anda.
- 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 operasi.
- Untuk operasi 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 operasi yang sering, biarkan cluster aktif untuk mengurangi waktu startup tugas.