Cluster pelatihan Gemini Enterprise Agent Platform menggunakan Simple Linux Utility for Resource Management (Slurm) sebagai orchestrator untuk mengelola dan menjadwalkan tugas di cluster Anda.
Slurm adalah sistem pengelolaan cluster dan penjadwalan tugas open source yang banyak digunakan, yang dikenal karena skalabilitas dan fault tolerance-nya.
Kemampuan utama Slurm
- Slurm mengalokasikan serangkaian 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 mengelola antrean tugas yang tertunda, menggunakan mesin prioritas yang canggih untuk menengahi 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 node pool 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 ini ditentukan sebagai daftar dalam kolom partisi slurm_spec.
Setiap objek partisi memiliki kolom wajib diisi berikut:
id: ID unik untuk partisi.node_pool_ids: Daftar yang berisi ID dari satu atau beberapa node pool yang termasuk dalam partisi ini.
Contoh:
"partitions": [
{
"id": "a4",
"node_pool_ids": [ "a4" ]
}
]
Tugas yang dikirim tanpa --partition akan dijalankan di partisi default. Untuk menentukan
partisi default, tetapkan default_partition_id di slurm_spec ke
id salah satu partisi Anda. Jika Anda tidak menyetelnya, partisi pertama dalam
daftar adalah default.
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 utama
Kolom home_directory_storage menentukan instance Filestore yang akan
dipasang sebagai direktori /home di semua node dalam cluster. Tindakan ini akan menyediakan
direktori beranda persisten yang dibagikan 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 menetapkan parameter slurm.conf dan mengubahnya
pada cluster yang sedang berjalan. Lihat
Peta konfigurasi Slurm.
Akuntansi, preemption, dan prioritas
Akuntansi Slurm diaktifkan di setiap cluster, sehingga Anda dapat melacak penggunaan resource per tugas, seperti waktu CPU dan memori. Anda juga dapat menerapkan batas akuntansi,
menimbang prioritas tugas, dan mengaktifkan preemption melalui config, seperti dalam
contoh spesifikasi cluster. Untuk mengetahui cara kerjanya, lihat dokumentasi Slurm tentang akuntansi, plugin prioritas multifaktor, dan preemption.
Skrip prolog dan epilog
Anda dapat mengonfigurasi skrip Bash kustom untuk berjalan secara otomatis di 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 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", "config": { "AccountingStorageEnforce": "associations,limits,qos", "PriorityType": "priority/multifactor", "PriorityWeightAge": "1000", "PriorityWeightFairshare": "10000", "PreemptType": "preempt/partition_prio", "PreemptMode": "REQUEUE", "PreemptExemptTime": "00:10:00" }, "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 di 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 mengetahui 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 resmi Slurm memberikan beberapa contoh cara kerja dari berbagai strategi preemption. 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 Anda ke endpoint Gemini Enterprise Agent Platform untuk menyajikan permintaan inferensi online dalam skala besar.
- Mengelola siklus proses model: Gunakan Gemini Enterprise Agent Platform Model Registry untuk membuat versi, membandingkan, dan mengelola model Anda. Pipeline dapat dikonfigurasi untuk mendaftarkan model baru secara otomatis setelah pelatihan berhasil.
- Pantau operasi pipeline dan performa model Anda:
- Pemantauan Pipeline: Lacak grafik eksekusi, artefak, dan performa eksekusi pipeline Anda untuk men-debug masalah dan mengoptimalkan orkestrasi Anda.
- Pemantauan Model Gemini Enterprise Agent Platform: Setelah deployment, siapkan pemantauan untuk mendeteksi penyimpangan dan anomali dalam performa prediksi model Anda, yang membantu mempertahankan akurasi model dari waktu ke waktu.
- Optimalkan biaya dan kelola 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 eksekusi yang sering, biarkan cluster tetap aktif untuk mengurangi waktu startup tugas.