Dalam Kluster ACK yang dikelola Pro, Anda dapat mengontrol alokasi resource GPU ke workload dengan menetapkan label penjadwalan pada node GPU. Label ini memungkinkan Anda mengonfigurasi akses eksklusif, komputasi bersama di beberapa Pod, penugasan berbasis topologi, atau perutean berdasarkan model perangkat keras—memberikan kontrol detail halus atas pemanfaatan resource dan penempatan workload.
Ikhtisar label penjadwalan
Label penjadwalan GPU menentukan kebijakan alokasi resource untuk suatu node. Satu node hanya mendukung satu mode penjadwalan GPU dalam satu waktu (eksklusif, bersama, atau berbasis topologi). Mengaktifkan satu mode secara otomatis mengatur resource ekstensi untuk semua mode lainnya menjadi 0.
Keempat mode penjadwalan berbeda dalam dua dimensi utama: apakah komputasi diisolasi dan apakah memori GPU diisolasi. Gunakan kriteria ini sebagai titik awal saat memilih mode:
| Mode penjadwalan | Label | Kapan digunakan |
|---|---|---|
| Penjadwalan eksklusif (default) | ack.node.gpu.schedule: default | Workload yang kritis terhadap kinerja dan membutuhkan GPU penuh — pelatihan model, komputasi kinerja tinggi (HPC). |
| Penjadwalan bersama | ack.node.gpu.schedule: cgpu | Beberapa tugas ringan konkuren — multitenansi, inferensi. Komputasi bersama dengan memori GPU terisolasi, berdasarkan teknologi cGPU Alibaba Cloud. |
ack.node.gpu.schedule: core_mem | Komputasi terisolasi dan memori GPU terisolasi per Pod. | |
ack.node.gpu.schedule: share | Komputasi dan memori GPU bersama tanpa isolasi. | |
ack.node.gpu.schedule: mps | Komputasi bersama dengan memori GPU terisolasi, berdasarkan teknologi isolasi NVIDIA MPS yang dikombinasikan dengan teknologi cGPU Alibaba Cloud. | |
| Kebijakan penempatan (untuk penjadwalan bersama pada node multi-GPU) | ack.node.gpu.placement: binpack | Maksimalkan pemanfaatan GPU atau kurangi konsumsi energi. Mengisi satu GPU sepenuhnya sebelum beralih ke GPU berikutnya. Default. |
ack.node.gpu.placement: spread | Ketersediaan tinggi. Mendistribusikan Pod ke GPU berbeda untuk mengurangi dampak kegagalan satu kartu. | |
| Penjadwalan berbasis topologi | ack.node.gpu.schedule: topology | Workload yang sensitif terhadap latensi komunikasi antar-GPU. Menetapkan kombinasi optimal GPU berdasarkan topologi fisik dalam satu node. |
| Penjadwalan berdasarkan model kartu | aliyun.accelerator/nvidia_name: <GPU_card_name> | Mengarahkan pekerjaan ke node dengan model GPU tertentu, atau mengecualikan model tertentu menggunakan aturan afinitas node. |
aliyun.accelerator/nvidia_mem: <memory_per_card> | Filter berdasarkan memori GPU per kartu. Gunakan bersamaan dengan penjadwalan berdasarkan model kartu. | |
aliyun.accelerator/nvidia_count: <total_number_of_GPU_cards> | Filter berdasarkan jumlah total kartu GPU pada node. Gunakan bersamaan dengan penjadwalan berdasarkan model kartu. |
Labelack.node.gpu.placementhanya berlaku ketika penjadwalan bersama (cgpu,core_mem,share, ataumps) diaktifkan. Nilaibinpackdanspreadsaling eksklusif—hanya satu kebijakan penempatan yang aktif per node dalam satu waktu.
Aktifkan fitur penjadwalan
Penjadwalan eksklusif
Node tanpa label penjadwalan GPU menggunakan penjadwalan eksklusif secara default. Setiap Pod mendapatkan satu kartu GPU penuh.
Menghapus label tidak memulihkan penjadwalan eksklusif jika mode lain sebelumnya diaktifkan. Untuk beralih kembali, tetapkan nilai label secara eksplisit: kubectl label node <NODE_NAME> ack.node.gpu.schedule=default --overwrite.Penjadwalan bersama
Penjadwalan bersama hanya tersedia untuk Kluster ACK yang dikelola Pro. Untuk informasi lebih lanjut, lihat Batasan.
Langkah 1: Instal komponen ack-ai-installer.
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, klik nama kluster target. Di panel navigasi kiri, pilih Applications > Cloud-native AI Suite.
Pada halaman Cloud-native AI Suite, klik Deploy. Pada halaman Deploy Cloud-native AI Suite, pilih Scheduling Policy Extension (Batch Task Scheduling, GPU Sharing, Topology-aware GPU Scheduling).
Untuk detail tentang pengaturan kebijakan penjadwalan komputasi untuk layanan cGPU, lihat Instal dan gunakan layanan cGPU.
Klik Deploy Cloud-native AI Suite. Pada halaman Cloud-native AI Suite, pastikan ack-ai-installer muncul dalam daftar komponen yang telah diinstal.
Langkah 2: Aktifkan penjadwalan bersama pada kelompok node.
Pada halaman Clusters, klik nama kluster. Di panel navigasi kiri, pilih Nodes > Node Pools.
Pada halaman Node Pools, klik Create Node Pool. Konfigurasikan label node, lalu klik Confirm. Pertahankan nilai default untuk bidang lainnya. Untuk definisi label, lihat Ikhtisar label penjadwalan.
Penjadwalan bersama dasar: Klik ikon
di samping Node Labels. Tetapkan Key ke ack.node.gpu.scheduledan tetapkan Value ke salah satu:cgpu,core_mem,share, ataumps. > Note:mpsmemerlukan komponen MPS Control Daemon. Lihat menginstal komponen MPS Control Daemon.Kebijakan penempatan (hanya untuk node multi-GPU): Tambahkan label kedua. Klik ikon
, tetapkan Key ke ack.node.gpu.placement, dan tetapkan Value kebinpackatauspread.
Langkah 3: Verifikasi bahwa penjadwalan bersama telah diaktifkan.
Jalankan perintah yang sesuai untuk mode berbagi Anda. Ganti <NODE_NAME> dengan node dalam kelompok node target.
cgpu/share/mps
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-mem mengonfirmasi bahwa penjadwalan bersama cgpu, share, atau mps aktif.
core_mem
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"Kedua bidang aliyun.com/gpu-core.percentage dan aliyun.com/gpu-mem harus bernilai bukan nol agar penjadwalan bersama core_mem aktif.
binpack
Gunakan tool kueri resource GPU bersama untuk memeriksa alokasi per GPU:
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%)Setiap kolom GPUx(Allocated/Total) menunjukkan berapa banyak memori yang sedang digunakan pada kartu tersebut. GPU0 dialokasikan penuh (15/15) dan GPU1 dialokasikan sebagian (9/15), sedangkan GPU2 dan GPU3 kosong. Pola pengisian berurutan ini—mengisi satu kartu sebelum memulai kartu berikutnya—mengonfirmasi bahwa binpack aktif.
spread
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%)GPU0, GPU1, dan GPU3 masing-masing menunjukkan 4/15, sedangkan GPU2 kosong. Pola alokasi terdistribusi ini—menyebarkan Pod ke berbagai kartu alih-alih mengisi satu kartu terlebih dahulu—mengonfirmasi bahwa spread aktif.
core_mem
binpack
spread
Penjadwalan berbasis topologi
Penjadwalan berbasis topologi hanya tersedia untuk Kluster ACK yang dikelola Pro. Untuk persyaratan versi, lihat Persyaratan versi komponen sistem.
Tambahkan label topologi ke node target:
Setelah mengaktifkan penjadwalan berbasis topologi pada suatu node, node tersebut tidak lagi menerima workload GPU non-topologi. Untuk memulihkan penjadwalan eksklusif, jalankan:
kubectl label node <NODE_NAME> ack.node.gpu.schedule=default --overwrite.kubectl label node <NODE_NAME> ack.node.gpu.schedule=topologyVerifikasi bahwa penjadwalan berbasis topologi telah diaktifkan:
kubectl get nodes <NODE_NAME> -o yaml | grep aliyun.com/gpuOutput yang diharapkan:
aliyun.com/gpu: "2"Nilai bukan nol pada bidang
aliyun.com/gpumengonfirmasi bahwa penjadwalan berbasis topologi aktif.
Penjadwalan berdasarkan model kartu
Penjadwalan berdasarkan model kartu menggunakan label node dan aturan afinitas node Kubernetes untuk mengikat pekerjaan ke perangkat keras GPU tertentu—atau menjauhkannya darinya.
Langkah 1: Periksa model kartu GPU pada node Anda.
kubectl get nodes -L aliyun.accelerator/nvidia_nameKolom NVIDIA_NAME menunjukkan model GPU untuk setiap node:
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
Langkah 2: Buat Pekerjaan dengan penjadwalan model kartu.
Di Konsol ACK, buka Workloads > Jobs dan klik Create From YAML. Kedua contoh berikut menggunakan label aliyun.accelerator/nvidia_name untuk mengontrol pemilihan model GPU.

Tentukan model GPU
Gunakan nodeSelector untuk mengikat pekerjaan ke node dengan model GPU tertentu. Ganti Tesla-V100-SXM2-32GB dengan model dari kluster Anda.
Setelah pekerjaan dibuat, buka Workloads > Pods. Daftar Pod menunjukkan Pod dijadwalkan ke node yang cocok, mengonfirmasi bahwa penjadwalan label berdasarkan model kartu berfungsi.
Hindari model GPU
Gunakan nodeAffinity dengan NotIn untuk mencegah pekerjaan dijalankan pada node dengan model GPU tertentu. Ganti Tesla-V100-SXM2-32GB dengan model yang ingin dikecualikan.
Setelah pekerjaan dibuat, Pod tidak dijadwalkan pada node dengan label aliyun.accelerator/nvidia_name: Tesla-V100-SXM2-32GB, tetapi dapat dijalankan pada node GPU lainnya.
Kecualikan model kartu