Saat men-deploy beban kerja GPU di ACK managed Pro cluster, tetapkan label penjadwalan GPU (exclusive, shared, topology-aware) dan label model kartu GPU untuk mengoptimalkan pemanfaatan serta penargetan penjadwalan. Penjadwalan shared dan topology-aware memerlukan versi Pro; penjadwalan berdasarkan model kartu didukung pada semua jenis kluster.
Ikhtisar label penjadwalan
Label penjadwalan GPU mengidentifikasi model GPU dan kebijakan alokasi untuk manajemen sumber daya detail halus.
Mode penjadwalan | Nilai label | Kasus penggunaan |
Exclusive scheduling (Default) |
| Untuk tugas yang kritis terhadap kinerja dan memerlukan akses eksklusif ke GPU, seperti pelatihan model dan komputasi kinerja tinggi (HPC). |
Shared scheduling |
| Ideal untuk tugas ringan konkuren seperti skenario multi-tenancy dan inferensi.
|
| Mengoptimalkan alokasi sumber daya pada node multi-GPU dengan penjadwalan bersama
| |
Topology-aware scheduling |
| Menetapkan kombinasi GPU optimal ke sebuah Pod berdasarkan topologi fisik GPU dalam sebuah node. Ideal untuk tugas yang sensitif terhadap latensi komunikasi antar-GPU. |
Card model scheduling |
Gunakan label ini untuk mengatur memori GPU dan jumlah kartu untuk pekerjaan. | Menjadwalkan pekerjaan ke node dengan model GPU tertentu atau menghindari node dengan model tertentu. |
Aktifkan fitur penjadwalan
Sebuah node hanya mendukung satu mode penjadwalan GPU (exclusive, shared, atau topology-aware) dalam satu waktu. Mengaktifkan suatu mode akan mengatur sumber daya ekstensi yang dilaporkan oleh mode lain menjadi 0.
Exclusive scheduling
Tanpa label penjadwalan GPU, exclusive scheduling adalah mode default. Satu kartu GPU merupakan unit alokasi terkecil untuk Pod.
Jika Anda telah mengaktifkan mode penjadwalan GPU lain, hanya menghapus label tidak akan mengembalikan exclusive scheduling. Tetapkan label ke ack.node.gpu.schedule: default melalui kelompok node untuk mengembalikannya.Shared scheduling
Penjadwalan bersama hanya tersedia untuk ACK managed cluster Pro. Lihat Batasan.
Instal komponen
ack-ai-installer-
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
-
Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
Di halaman Cloud-native AI Suite, klik Deploy. Di halaman Cloud-native AI Suite, pilih Scheduling Policy Extension (Batch Task Scheduling, GPU Sharing, Topology-aware GPU Scheduling).
Untuk mengonfigurasi kebijakan penjadwalan cGPU, lihat Instal dan gunakan komponen cGPU.
Di halaman Cloud-native AI Suite, klik Deploy Cloud-native AI Suite.
Di daftar komponen pada halaman Cloud-native AI Suite, pastikan komponen ack-ai-installer telah terinstal.
-
Aktifkan penjadwalan bersama
Di halaman Clusters, klik nama kluster target Anda. Di panel navigasi sisi kiri, pilih .
Di halaman Node Pools, klik Create Node Pool, konfigurasi label node, lalu klik Confirm.
Pertahankan nilai default untuk pengaturan lainnya. Lihat Ikhtisar label penjadwalan untuk kasus penggunaan label.
Konfigurasi penjadwalan bersama dasar.
Klik ikon Tambah
untuk Node Labels, atur Key menjadi ack.node.gpu.schedule, dan pilih salah satu nilai label berikut:cgpu,core_mem,share, ataumps(memerlukan menginstal komponen MPS Control Daemon).Konfigurasi penjadwalan bersama multi-kartu.
Untuk node dengan beberapa kartu GPU, konfigurasikan penjadwalan multi-kartu untuk mengoptimalkan alokasi sumber daya.
Klik ikon Tambah
untuk Node Labels, atur Key menjadi ack.node.gpu.placement, dan pilih salah satu nilai label berikut:binpackatauspread.
Verifikasi penjadwalan bersama
cgpu/share/mpsVerifikasi bahwa penjadwalan bersama
cgpu,share, ataumpstelah diaktifkan. Ganti <NODE_NAME> dengan nama node Anda.kubectl get nodes <NODE_NAME> -o yaml | grep -q "aliyun.com/gpu-mem"Output yang diharapkan:
aliyun.com/gpu-mem: "60"Nilai bukan nol mengonfirmasi bahwa penjadwalan bersama
cgpu,share, ataumpstelah diaktifkan.core_memVerifikasi bahwa penjadwalan bersama
core_memtelah diaktifkan. Ganti<NODE_NAME>dengan nama node Anda.kubectl get nodes <NODE_NAME> -o yaml | grep -E 'aliyun\.com/gpu-core\.percentage|aliyun\.com/gpu-mem'Output yang diharapkan:
aliyun.com/gpu-core.percentage:"80" aliyun.com/gpu-mem:"6"Nilai
aliyun.com/gpu-core.percentagedanaliyun.com/gpu-membukan nol mengonfirmasi bahwa penjadwalan bersamacore_memtelah diaktifkan.binpackGunakan tool kueri sumber daya GPU untuk memeriksa alokasi sumber daya GPU pada node:
kubectl inspect cgpuOutput yang diharapkan:
NAME IPADDRESS GPU0(Allocated/Total) GPU1(Allocated/Total) GPU2(Allocated/Total) GPU3(Allocated/Total) GPU Memory(GiB) cn-shanghai.192.0.2.109 192.0.2.109 15/15 9/15 0/15 0/15 24/60 -------------------------------------------------------------------------------------- Allocated/Total GPU Memory In Cluster: 24/60 (40%)GPU0 dialokasikan penuh (15/15) sebelum GPU1 (9/15), mengonfirmasi strategi
binpackaktif.spreadGunakan tool kueri sumber daya GPU untuk memeriksa alokasi sumber daya GPU pada node:
kubectl inspect cgpuOutput yang diharapkan:
NAME IPADDRESS GPU0(Allocated/Total) GPU1(Allocated/Total) GPU2(Allocated/Total) GPU3(Allocated/Total) GPU Memory(GiB) cn-shanghai.192.0.2.109 192.0.2.109 4/15 4/15 0/15 4/15 12/60 -------------------------------------------------------------------------------------- Allocated/Total GPU Memory In Cluster: 12/60 (20%)Sumber daya didistribusikan secara merata (4/15) di GPU0, GPU1, dan GPU3, mengonfirmasi kebijakan
spreadaktif.
Topology-aware scheduling
Penjadwalan topology-aware hanya tersedia untuk ACK managed cluster Pro. Lihat Persyaratan versi komponen sistem.
Aktifkan topology-aware scheduling
Tambahkan label penjadwalan topology-aware melalui kelompok node: Di label node kelompok node target, atur Key menjadi
ack.node.gpu.scheduledengan nilaitopology.Mengaktifkan penjadwalan GPU topology-aware pada sebuah node akan menonaktifkan beban kerja GPU non-topology-aware. Untuk mengembalikan exclusive scheduling, ubah nilai label menjadi
defaultmelalui kelompok node.Verifikasi topology-aware scheduling
Verifikasi bahwa penjadwalan
topology-aware telah diaktifkan. Ganti <NODE_NAME> dengan nama node Anda.kubectl get nodes <NODE_NAME> -o yaml | grep aliyun.com/gpuOutput yang diharapkan:
aliyun.com/gpu: "2"Nilai
aliyun.com/gpubukan nol mengonfirmasi bahwa penjadwalantopology-aware telah diaktifkan.
Card model scheduling
Jadwalkan pekerjaan ke node dengan model GPU tertentu, atau hindari model tertentu.
Lihat model kartu GPU
Kueri model kartu GPU dari node kluster.
Bidang NVIDIA_NAME menampilkan model kartu GPU.
kubectl get nodes -L aliyun.accelerator/nvidia_nameOutput yang diharapkan:
NAME STATUS ROLES AGE VERSION NVIDIA_NAME cn-shanghai.192.XX.XX.176 Ready <none> 17d v1.26.3-aliyun.1 Tesla-V100-SXM2-32GB cn-shanghai.192.XX.XX.177 Ready <none> 17d v1.26.3-aliyun.1 Tesla-V100-SXM2-32GBAktifkan penjadwalan model kartu
-
Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
Di halaman Jobs, klik Create from YAML. Gunakan contoh berikut untuk membuat aplikasi dan mengaktifkan card model scheduling.
Tentukan model kartu
Pastikan aplikasi Anda berjalan pada node dengan model kartu GPU tertentu.
Di
aliyun.accelerator/nvidia_name: "Tesla-V100-SXM2-32GB", gantiTesla-V100-SXM2-32GBdengan model kartu aktual node Anda.Setelah pekerjaan dibuat, pilih . Daftar Pod mengonfirmasi bahwa Pod dijadwalkan ke node dengan model kartu GPU yang sesuai.
Kecualikan model kartu
Gunakan label model kartu GPU dengan afinitas node untuk mencegah penjadwalan pada model kartu tertentu.
Di
values: - "Tesla-V100-SXM2-32GB", gantiTesla-V100-SXM2-32GBdengan model kartu aktual node Anda.Setelah pekerjaan dibuat, aplikasi tidak dijadwalkan ke node dengan
aliyun.accelerator/nvidia_namebernilaiTesla-V100-SXM2-32GB, tetapi dapat berjalan pada node GPU dengan model kartu lain.
-
Praktik terbaik: Gunakan kelompok node terpisah untuk setiap mode penjadwalan
Buat kelompok node terpisah untuk setiap mode penjadwalan GPU, dan kelola atribut penjadwalan melalui label kelompok node. Hindari mencampur beberapa mode penjadwalan dalam satu kelompok node. Konfigurasi yang direkomendasikan:
Kelompok node exclusive scheduling: Tidak diperlukan label penjadwalan GPU; node secara default menggunakan exclusive scheduling. Cocok untuk tugas yang memerlukan akses eksklusif ke GPU, seperti pelatihan model dan HPC.
Kelompok node shared scheduling: Atur
ack.node.gpu.schedule: cgpu(atau nilai label bersama lainnya). Cocok untuk skenario yang memerlukan pemanfaatan GPU lebih tinggi, seperti layanan inferensi dan multi-tenancy.Kelompok node topology-aware scheduling: Atur
ack.node.gpu.schedule: topology. Cocok untuk tugas yang sensitif terhadap latensi komunikasi antar-GPU, seperti pelatihan terdistribusi.
Label card model scheduling (aliyun.accelerator/nvidia_name) dapat dikombinasikan dengan mode penjadwalan di atas untuk membatasi lebih lanjut penjadwalan Pod ke node dengan model GPU tertentu.
Mengubah mode penjadwalan
Untuk mengubah mode penjadwalan node tertentu, hapus node tersebut dari kelompok node saat ini dan tambahkan ke kelompok node dengan mode penjadwalan target.
Untuk mengubah mode penjadwalan seluruh kelompok node, modifikasi label melalui operasi kelompok node. Secara default, perubahan label pada kelompok node hanya berlaku untuk node baru. Untuk menyinkronkan perubahan ke node yang sudah ada, pilih Update Labels and Taints of Existing Nodes saat mengedit kelompok node.
PentingMenggunakan
kubectl labeluntuk langsung memodifikasi label penjadwalan node tidak disarankan dan dapat menyebabkan masalah.Menjalankan
kubectl label node <NODE_NAME> ack.node.gpu.schedule=<value> --overwriteuntuk mengganti mode penjadwalan dapat menyebabkan error alokasi sumber daya pada Pod GPU yang sedang berjalan, bahkan dapat memicu eviction Pod atau error penjadwalan yang tidak dapat dipulihkan. Gunakan label kelompok node untuk mengelola mode penjadwalan dan memastikan konsistensi di seluruh node dalam kelompok tersebut.