Saat men-deploy job komputasi GPU di ACK managed cluster Pro, Anda dapat mengoptimalkan pemanfaatan resource dan menjadwalkan beban kerja secara presisi dengan memberikan label atribut penjadwalan (seperti eksklusif, shared, dan topology-aware) serta label model GPU (untuk penjadwalan berdasarkan model kartu) ke node GPU.
Ikhtisar label penjadwalan
Label penjadwalan GPU mengidentifikasi model GPU dan kebijakan alokasi resource, memungkinkan manajemen resource detail halus dan penjadwalan yang efisien.
|
Mode penjadwalan |
Nilai label |
Kasus penggunaan |
|
Exclusive scheduling (Default) |
|
Untuk tugas yang kritis terhadap performa dan memerlukan akses eksklusif ke seluruh GPU, seperti pelatihan model dan high-performance computing (HPC). |
|
Shared scheduling |
|
Meningkatkan pemanfaatan GPU dan ideal untuk skenario dengan banyak tugas ringan konkuren, seperti multitenansi dan inferensi.
|
|
|
Mengoptimalkan strategi alokasi resource pada node multi-GPU saat penjadwalan shared
|
|
|
Topology-aware scheduling |
|
Secara otomatis menetapkan kombinasi optimal GPU ke suatu Pod berdasarkan topologi fisik GPU dalam satu node. Ini ideal untuk tugas yang sensitif terhadap latensi komunikasi antar-GPU. |
|
Card model scheduling |
Gunakan label ini dengan card model scheduling untuk mengatur kapasitas memori GPU dan jumlah total kartu GPU untuk job GPU.
|
Menjadwalkan job ke node dengan model GPU tertentu atau menghindari node dengan model tertentu. |
Aktifkan fitur penjadwalan
Satu node hanya dapat memiliki satu mode penjadwalan GPU (eksklusif, shared, atau topology-aware) yang diaktifkan dalam satu waktu. Setelah Anda mengaktifkan suatu mode, resource ekstensi yang dilaporkan oleh mode penjadwalan lainnya secara otomatis diatur menjadi 0.
Exclusive scheduling
Jika suatu node tidak memiliki label penjadwalan GPU, exclusive scheduling adalah mode default. Dalam mode ini, 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. Anda harus mengubah nilai label secara manual menjadi ack.node.gpu.schedule: default untuk melakukannya.
Shared scheduling
Shared scheduling hanya tersedia untuk ACK managed cluster Pro. Untuk informasi selengkapnya, lihat Batasan.
-
Instal komponen
ack-ai-installerMasuk ke ACK console. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
-
Pada halaman Cloud-native AI Suite, klik Deploy. Pada halaman Cloud-native AI Suite, pilih Scheduling Policy Extension (Batch Task Scheduling, GPU Sharing, Topology-aware GPU Scheduling).
Untuk mempelajari cara mengonfigurasi kebijakan penjadwalan komputasi yang didukung oleh layanan cGPU, lihat Instal dan gunakan komponen cGPU.
-
Pada 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
-
Pada halaman Clusters, klik nama kluster target Anda. Di panel navigasi sisi kiri, pilih .
-
Pada halaman Node Pools, klik Create Node Pool, konfigurasikan label node, lalu klik Confirm.
Anda dapat mempertahankan nilai default untuk pengaturan lainnya. Untuk informasi tentang kasus penggunaan label node, lihat Ikhtisar label penjadwalan.
-
Konfigurasikan shared scheduling 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 instalasi komponen MPS Control Daemon). -
Konfigurasikan shared scheduling multi-kartu.
Jika suatu node memiliki beberapa kartu GPU dan Anda ingin mengoptimalkan alokasi resource, Anda dapat mengonfigurasi shared scheduling multi-kartu sebagai tambahan dari shared scheduling dasar.
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/mpsGanti <NODE_NAME> dengan nama node target Anda dan jalankan perintah berikut untuk memverifikasi bahwa shared scheduling
cgpu,share, ataumpstelah diaktifkan.kubectl get nodes <NODE_NAME> -o yaml | grep -q "aliyun.com/gpu-mem"Output yang diharapkan:
aliyun.com/gpu-mem: "60"Nilai bukan nol pada bidang
aliyun.com/gpu-memmenunjukkan bahwa shared schedulingcgpu,share, ataumpstelah diaktifkan.core_memGanti
<NODE_NAME>dengan nama node target Anda dan jalankan perintah berikut untuk memverifikasi bahwa shared schedulingcore_memtelah diaktifkan.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"Jika bidang
aliyun.com/gpu-core.percentagedanaliyun.com/gpu-memkeduanya bernilai bukan nol, shared schedulingcore_memtelah diaktifkan.binpackDari tool kueri resource GPU shared GPU, jalankan perintah berikut untuk memeriksa alokasi resource 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%)Output menunjukkan bahwa GPU0 dialokasikan penuh (15/15) sedangkan GPU1 dialokasikan sebagian (9/15). Hal ini mengonfirmasi bahwa strategi
binpack, yang mengisi satu GPU secara penuh sebelum mengalokasikan resource ke GPU berikutnya, sedang aktif.spreadDari tool kueri resource GPU shared scheduling, jalankan perintah berikut untuk memeriksa alokasi resource 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%)Output menunjukkan bahwa resource yang dialokasikan adalah 4/15 pada GPU0, 4/15 pada GPU1, dan 4/15 pada GPU3. Hal ini sesuai dengan kebijakan penjadwalan yang memprioritaskan penyebaran Pod ke GPU berbeda, yang menunjukkan bahwa kebijakan
spreadtelah berlaku.
Topology-aware scheduling
Topology-aware scheduling hanya tersedia untuk ACK managed cluster Pro. Untuk informasi selengkapnya, lihat Persyaratan versi komponen sistem.
-
Aktifkan topology-aware scheduling
Ganti <NODE_NAME> dengan nama node target Anda dan jalankan perintah berikut untuk menambahkan label ke node dan secara eksplisit mengaktifkan topology-aware GPU scheduling.
kubectl label node <NODE_NAME> ack.node.gpu.schedule=topologySetelah Anda mengaktifkan topology-aware GPU scheduling pada suatu node, node tersebut tidak lagi mendukung beban kerja GPU non-topology-aware. Untuk mengembalikan exclusive scheduling, jalankan perintah
kubectl label node <NODE_NAME> ack.node.gpu.schedule=default --overwriteuntuk mengubah label. -
Verifikasi topology-aware scheduling
Ganti <NODE_NAME> dengan nama node target Anda dan jalankan perintah berikut untuk memverifikasi bahwa penjadwalan
topology-aware telah diaktifkan pada node tersebut.kubectl get nodes <NODE_NAME> -o yaml | grep aliyun.com/gpuOutput yang diharapkan:
aliyun.com/gpu: "2"Jika bidang
aliyun.com/gputidak bernilai 0, penjadwalantopology-aware telah diaktifkan.
Card model scheduling
Jadwalkan job ke node dengan model GPU tertentu, atau hindari model tertentu.
-
Lihat model kartu GPU
Jalankan perintah berikut untuk mengkueri model kartu GPU pada node di kluster Anda.
Bidang NVIDIA_NAME menunjukkan model kartu GPU.
kubectl get nodes -L aliyun.accelerator/nvidia_nameOutput yang diharapkan mirip dengan berikut:
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-32GB -
Aktifkan penjadwalan model kartu
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
-
Pada halaman Jobs, klik Create from YAML. Gunakan contoh berikut untuk membuat aplikasi dan mengaktifkan card model scheduling.
Tentukan model kartu
Gunakan label penjadwalan model kartu GPU untuk memastikan aplikasi Anda berjalan pada node dengan model kartu tertentu.
Pada kode
aliyun.accelerator/nvidia_name: "Tesla-V100-SXM2-32GB", gantiTesla-V100-SXM2-32GBdengan model kartu aktual node Anda.Setelah job dibuat, pilih dari panel navigasi sisi kiri. Daftar Pod menunjukkan contoh Pod berhasil dijadwalkan ke node yang sesuai, mengonfirmasi bahwa penjadwalan berdasarkan label model kartu GPU berfungsi dengan benar.
Kecualikan model kartu
Gunakan label penjadwalan model kartu GPU dengan afinitas dan anti-afinitas node untuk mencegah aplikasi Anda berjalan pada model kartu tertentu.
Pada
values: - "Tesla-V100-SXM2-32GB", gantiTesla-V100-SXM2-32GBdengan model kartu aktual node Anda.Setelah job dibuat, aplikasi tidak akan dijadwalkan ke node dengan kunci label
aliyun.accelerator/nvidia_namedan nilaiTesla-V100-SXM2-32GB, tetapi dapat dijadwalkan ke node GPU dengan model kartu lain.