Container Service for Kubernetes (ACK) menyediakan kemampuan berbagi dan penjadwalan GPU untuk skenario inferensi model yang menggunakan satu GPU secara bersama. Layanan ini juga memanfaatkan modul kernel driver NVIDIA untuk memastikan isolasi memori GPU. Jika Anda telah menginstal komponen penjadwalan GPU bersama di kluster Anda, lakukan upgrade ke versi terbaru apabila driver GPU atau sistem operasi pada suatu node tidak kompatibel dengan versi cGPU yang terinstal. Topik ini menjelaskan cara mengelola komponen penjadwalan GPU bersama pada node GPU agar penjadwalan dan isolasi GPU berfungsi sebagaimana mestinya.
Prasyarat
-
Sebelum menggunakan penjadwalan GPU bersama, aktifkan Cloud-native AI Suite.Cloud-native AI Suite harus diaktifkan. Untuk informasi lebih lanjut mengenai penagihan, lihat Penagihan Cloud-native AI Suite.
-
Untuk catatan penggunaan cGPU, lihat FAQ cGPU.
-
Kluster ACK yang dikelola telah dibuat, dan GPU cloud server dipilih sebagai tipe instans.
Batasan
-
Fitur isolasi memori cGPU hanya didukung pada node ECS. Jangan menambahkan label
ack.node.gpu.schedule=cgpuatauack.node.gpu.schedule=core_memke node non-ECS. -
Jangan mengatur kebijakan CPU ke
staticuntuk node yang menggunakan penjadwalan GPU bersama. -
Jika Anda perlu menentukan path kustom untuk file KubeConfig, jalankan perintah
export KUBECONFIG=<kubeconfig>. Perintahkubectl inspect cgputidak mendukung parameter--kubeconfig. -
Karena isolasi cGPU tidak mendukung Unified Virtual Memory (UVM), Anda tidak dapat memanggil cudaMallocManaged() untuk mengalokasikan memori GPU. Sebagai gantinya, panggil cudaMalloc(). Untuk informasi lebih lanjut, lihat dokumentasi NVIDIA.
-
Pod DaemonSet GPU bersama tidak memiliki prioritas tertinggi. Sumber daya node mungkin dipreempt oleh Pod lain dengan prioritas lebih tinggi, yang dapat meng-evict Pod DaemonSet ini. Untuk mencegah hal tersebut, modifikasi DaemonSet yang digunakan—seperti
gpushare-device-plugin-dsuntuk memori GPU bersama—dan tambahkanpriorityClassName: system-node-criticalguna memastikan prioritas tinggi. -
Demi performa, Anda dapat membuat maksimal 20 Pod pada satu kartu GPU saat menggunakan cGPU. Jika batas ini dilampaui, Pod berikutnya yang dijadwalkan ke kartu tersebut akan gagal berjalan dan mengembalikan pesan error
Error occurs when creating cGPU instance: unknown. -
Anda dapat menginstal komponen GPU bersama di wilayah mana pun. Namun, fitur isolasi memori GPU hanya tersedia di wilayah berikut. Pastikan kluster Anda berada di salah satu wilayah ini.
-
Kompatibilitas versi.
Komponen
Versi yang didukung
Versi Kubernetes
-
ack-ai-installer versi sebelum 1.12.0 mendukung kluster yang menjalankan Kubernetes 1.18.8 atau lebih baru.
-
ack-ai-installer 1.12.0 atau lebih baru hanya mendukung kluster yang menjalankan Kubernetes 1.20 atau lebih baru. 1.12.0 atau lebih baru mendukung kluster yang menjalankan Kubernetes 1.20 atau lebih baru.
Versi driver NVIDIA
418.87.01 atau lebih baru
Versi runtime kontainer
-
Docker: 19.03.5 atau lebih baru
-
containerd: 1.4.3 atau lebih baru
Sistem operasi
Alibaba Cloud Linux 3.x (edisi container-optimized memerlukan ack-ai-installer v1.12.6 atau lebih baru), Alibaba Cloud Linux 2.x, CentOS 7.6, CentOS 7.7, CentOS 7.9, Ubuntu 22.04
GPU yang didukung
Seri-P, Seri-T, Seri-V, Seri-A, Seri-H
-
Instal komponen penjadwalan GPU bersama
Langkah 1: Instal komponen GPU bersama
AI Suite belum dideploy
Masuk ke Konsol ACK. 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 Deploy Cloud-native AI Suite, pilih Scheduling policies extension (Batch scheduling, GPU sharing, and GPU topology-aware scheduling).
-
(Opsional) Untuk menyesuaikan kebijakan cGPU, klik Advanced di sebelah kanan Scheduling Policy Extension (Batch Task Scheduling, GPU Sharing, Topology-aware GPU Scheduling). Pada kotak dialog Parameters, ubah bidang
policyuntuk cGPU, lalu klik OK.Jika Anda tidak memiliki persyaratan khusus untuk berbagi daya komputasi cGPU, kami merekomendasikan menggunakan nilai default
policy: 5, yaitu penjadwalan native. Untuk informasi lebih lanjut mengenai kebijakan yang didukung oleh cGPU, lihat Instal dan gunakan layanan cGPU. -
Di bagian bawah halaman Cloud-native AI Suite, klik Deploy Cloud-native AI Suite.
Setelah instalasi, komponen ack-ai-installer akan muncul dalam daftar komponen pada halaman Cloud-native AI Suite.
AI Suite sudah dideploy
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
-
Temukan komponen ack-ai-installer dan klik Deploy pada kolom Actions.
-
(Opsional) Pada kotak dialog Parameters yang muncul, ubah bidang
policyuntuk cGPU.Jika Anda tidak memiliki persyaratan khusus untuk berbagi daya komputasi cGPU, kami merekomendasikan menggunakan nilai default
policy: 5, yaitu penjadwalan native. Untuk informasi lebih lanjut mengenai kebijakan yang didukung oleh cGPU, lihat Instal dan gunakan layanan cGPU. -
Setelah selesai mengubah parameter, klik OK.
Setelah komponen terinstal, Status dari ack-ai-installer berubah menjadi Deployed.
Langkah 2: Aktifkan penjadwalan dan isolasi GPU bersama
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
-
Pada halaman Node Pools, klik Create Node Pool. Konfigurasikan parameter sesuai yang dijelaskan dalam Buat dan kelola node pool.
-
Pada halaman Create Node Pool, konfigurasikan parameter untuk node pool, lalu klik Confirm. Tabel berikut menjelaskan parameter utama.
Parameter
Deskripsi
Expected number of nodes
Masukkan jumlah awal node untuk node pool. Gunakan 0 jika tidak diperlukan node pada awalnya.
Node labels
Tentukan nilai label sesuai kebutuhan bisnis Anda. Untuk informasi lebih lanjut mengenai label node, lihat Aktifkan penjadwalan.
Contoh ini menggunakan nilai label
cgpu. Nilai ini mengaktifkan penjadwalan GPU bersama pada node, di mana setiap Pod hanya perlu meminta sumber daya memori GPU. Beberapa Pod pada satu kartu GPU berbagi daya komputasi dan memiliki memori yang terisolasi.Klik
di samping Node Labels. Atur Key menjadi ack.node.gpu.scheduledan Value menjadicgpu.Penting-
Untuk catatan penggunaan fitur isolasi cGPU, lihat FAQ cGPU.
-
Setelah menambahkan label penjadwalan GPU bersama, jangan gunakan perintah
kubectl label nodesuntuk mengubah label penjadwalan GPU atau gunakan fitur manajemen label pada halaman Nodes untuk mengubah label node. Hal ini dapat menyebabkan masalah potensial. Untuk informasi lebih lanjut, lihat Aktifkan penjadwalan. Metode yang direkomendasikan dijelaskan dalam Aktifkan penjadwalan.
-
Langkah 3: Tambahkan node GPU
Jika Anda sudah membuat node GPU saat menambahkan node pool, Anda dapat melewati langkah ini.
Setelah membuat node pool, tambahkan node GPU ke dalamnya. Saat melakukannya, pastikan Anda menentukan GPU cloud server sebagai tipe instans. Untuk informasi lebih lanjut, lihat Tambahkan node yang ada ke node pool atau Buat dan kelola node pool.
Langkah 4: Instal tool kueri GPU
-
Unduh executable kubectl-inspect-cgpu ke direktori dalam PATH Anda, misalnya
/usr/local/bin/.-
Jika Anda menggunakan Linux, jalankan perintah berikut untuk mengunduh kubectl-inspect-cgpu.
wget http://aliacs-k8s-cn-beijing.oss-cn-beijing.aliyuncs.com/gpushare/kubectl-inspect-cgpu-linux -O /usr/local/bin/kubectl-inspect-cgpu -
Jika Anda menggunakan macOS, jalankan perintah berikut untuk mengunduh kubectl-inspect-cgpu.
wget http://aliacs-k8s-cn-beijing.oss-cn-beijing.aliyuncs.com/gpushare/kubectl-inspect-cgpu-darwin -O /usr/local/bin/kubectl-inspect-cgpu
-
-
Jadikan file tersebut dapat dieksekusi:
chmod +x /usr/local/bin/kubectl-inspect-cgpu -
Periksa penggunaan GPU di kluster:
kubectl inspect cgpuOutput yang diharapkan:
NAME IPADDRESS GPU0(Allocated/Total) GPU Memory(GiB) cn-shanghai.192.168.6.104 192.168.6.104 0/15 0/15 ---------------------------------------------------------------------- Allocated/Total GPU Memory In Cluster: 0/15 (0%)
Upgrade komponen penjadwalan GPU bersama
Langkah 1: Tentukan metode upgrade
Metode upgrade bergantung pada cara komponen ack-ai-installer awalnya diinstal. Terdapat dua metode:
-
Melalui Cloud-native AI Suite (Direkomendasikan): Komponen diinstal dari halaman Cloud-native AI Suite.
-
Diinstal dari App Catalog (tidak tersedia lagi): Anda menginstal komponen ack-ai-installer dari halaman App Catalog di Marketplace. Metode instalasi ini kini telah ditutup. Namun, jika Anda memiliki komponen yang sudah terinstal dengan cara ini, Anda masih dapat melakukan upgrade menggunakan metode ini.
PentingJika Anda meng-uninstall komponen yang diinstal dengan metode ini, Anda harus mengaktifkan Cloud-native AI Suite dan menyelesaikan instalasi untuk menginstal ulang komponen tersebut.
Langkah 2: Upgrade komponen
Cloud-native AI suite
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
-
Pada bagian Components, temukan komponen ack-ai-installer dan klik Upgrade pada kolom Actions.
App catalog
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
-
Pada halaman Helm, temukan rilis ack-ai-installer. Pada kolom Actions, klik Update. Ikuti petunjuk untuk memilih versi Chart terbaru dan perbarui komponen tersebut.
PentingJika Anda perlu menyesuaikan konfigurasi Chart, konfirmasi pembaruan komponen setelah melakukan perubahan.
Setelah pembaruan, periksa halaman Helm untuk memastikan versi Chart dari rilis ack-ai-installer adalah versi terbaru.
Langkah 3: Upgrade node yang ada
Upgrade komponen ack-ai-installer tidak secara otomatis meng-upgrade versi cGPU pada node yang sudah ada. Gunakan informasi berikut untuk menentukan apakah fitur isolasi cGPU diaktifkan pada node Anda.
-
Jika kluster Anda berisi node GPU dengan fitur isolasi cGPU diaktifkan, Anda juga harus meng-upgrade versi cGPU pada node tersebut. Untuk informasi lebih lanjut, lihat Upgrade versi cGPU pada node.
-
Jika kluster Anda tidak memiliki node dengan fitur isolasi cGPU diaktifkan, lewati langkah ini.
Catatan-
Jika suatu node memiliki label
ack.node.gpu.schedule=cgpuatauack.node.gpu.schedule=core_mem, artinya fitur isolasi cGPU diaktifkan. -
Upgrade versi cGPU pada node yang sudah ada memerlukan penghentian semua Pod bisnis pada node tersebut. Lakukan operasi ini selama jam sepi untuk meminimalkan gangguan bisnis.
-