Container Service for Kubernetes (ACK) menyediakan kemampuan berbagi dan penjadwalan GPU untuk skenario inferensi model yang menggunakan satu GPU bersama. Layanan ini juga menerapkan isolasi memori GPU dalam mode kernel dari driver NVIDIA. Jika Anda telah menginstal komponen berbagi GPU di kluster Anda, tingkatkan komponen tersebut 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 berbagi GPU pada node GPU untuk mengaktifkan penjadwalan dan isolasi GPU.
Prasyarat
Sebelum menggunakan berbagi GPU, aktifkan Cloud-native AI Suite. Untuk detail penagihan, lihat Penagihan Cloud-native AI Suite.
Untuk catatan penggunaan cGPU, lihat FAQ cGPU.
Kluster ACK managed cluster telah dibuat, dan GPU cloud server dipilih sebagai tipe instans.
Batasan
Fitur isolasi memori cGPU hanya didukung pada node Alibaba Cloud Elastic Compute Service (ECS). Jangan tambahkan label
ack.node.gpu.schedule=cgpuatauack.node.gpu.schedule=core_memke node yang bukan merupakan node Alibaba Cloud ECS.Jangan atur kebijakan CPU ke
staticuntuk node yang menggunakan berbagi GPU.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 berbagi GPU tidak memiliki prioritas tertinggi pada suatu node, sehingga pod lain dengan prioritas lebih tinggi dapat merebut sumber dayanya dan menyebabkan eviction. Untuk mencegah hal ini, modifikasi DaemonSet yang Anda gunakan, seperti
gpushare-device-plugin-dsuntuk memori GPU bersama, dan tambahkanpriorityClassName: system-node-criticaluntuk memastikan prioritas tinggi.Demi performa, satu kartu GPU mendukung maksimal 20 pod 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.Untuk mencegah penjadwal terus menjadwalkan pod cGPU ke node yang kartunya telah mencapai batas 20 pod, jalankan perintah berikut untuk menambahkan label ke node:
kubectl label nodes <NODE> ack.node.gpu.max-pod=20Nilai
20bersifat tetap dan tidak dapat diubah ke nilai lain.Anda dapat menginstal komponen berbagi GPU 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.
Item
Versi yang didukung
Versi Kubernetes
Versi ack-ai-installer 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.
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 berbagi GPU
Langkah 1: Instal komponen berbagi GPU
Cloud-native AI Suite belum dideploy
-
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 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). Di dialog Parameters, ubah bidang
policyuntuk cGPU lalu klik OK.Jika Anda tidak memiliki persyaratan khusus untuk berbagi daya komputasi cGPU, pengaturan yang direkomendasikan adalah nilai default
policy: 5(native scheduling). Untuk informasi lebih lanjut tentang kebijakan 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 muncul dalam daftar komponen di halaman Cloud-native AI Suite.
Cloud-native AI Suite sudah dideploy
-
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
-
Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
Temukan komponen ack-ai-installer dan klik Deploy di kolom Actions.
(Opsional) Di dialog Parameters yang muncul, ubah bidang
policyuntuk cGPU.Jika Anda tidak memiliki persyaratan khusus untuk berbagi daya komputasi cGPU, pengaturan yang direkomendasikan adalah nilai default
policy: 5(native scheduling). Untuk informasi lebih lanjut tentang kebijakan cGPU, lihat Instal dan gunakan layanan cGPU.Setelah selesai mengubah parameter, klik OK.
Setelah komponen terinstal, Status ack-ai-installer berubah menjadi Deployed.
Langkah 2: Aktifkan berbagi dan isolasi GPU
-
Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
Di halaman Node Pools, klik Create Node Pool. Konfigurasikan parameter seperti yang dijelaskan di Buat dan kelola node pool.
Di 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
Atur nilai label sesuai kebutuhan bisnis Anda. Untuk informasi lebih lanjut tentang label node, lihat Aktifkan penjadwalan.
Contoh ini menggunakan nilai label
cgpu. Nilai ini mengaktifkan berbagi GPU 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.PentingUntuk catatan penggunaan fitur isolasi cGPU, lihat FAQ cGPU.
Setelah menambahkan label berbagi GPU, jangan gunakan perintah
kubectl label nodesuntuk mengubah label penjadwalan GPU atau gunakan fitur manajemen label di halaman Nodes untuk mengubah label node. Hal ini dapat menyebabkan masalah potensial. Untuk informasi lebih lanjut, lihat Aktifkan penjadwalan. Metode yang direkomendasikan dijelaskan di 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, seperti
/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-cgpuJika 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-cgpuPeriksa 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%)
Tingkatkan komponen berbagi GPU
Langkah 1: Tentukan metode upgrade
Metode upgrade bergantung pada cara komponen ack-ai-installer diinstal. Terdapat dua metode instalasi:
Diinstal melalui Cloud-native AI Suite (Direkomendasikan): Komponen diinstal dari halaman Cloud-native AI Suite.
Diinstal dari App Catalog (tidak tersedia lagi): Komponen ack-ai-installer diinstal dari halaman App Catalog di Marketplace. Metode ini kini telah ditutup, tetapi komponen yang sudah terinstal dengan cara ini masih dapat ditingkatkan melalui metode tersebut.
PentingJika Anda menguninstall komponen yang diinstal dengan metode ini, Anda harus mengaktifkan Cloud-native AI Suite dan menyelesaikan instalasi untuk menginstal ulang komponen tersebut.
Langkah 2: Tingkatkan komponen
Cloud-native AI suite
-
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
-
Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
Di bagian Components, temukan komponen ack-ai-installer dan klik Upgrade di kolom Actions.
App catalog
-
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
-
Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
Di halaman Helm, temukan rilis ack-ai-installer. Di 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 rilis ack-ai-installer adalah versi terbaru.
Langkah 3: Tingkatkan node yang ada
Menningkatkan komponen ack-ai-installer tidak secara otomatis meningkatkan 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 meningkatkan versi cGPU pada node tersebut. Untuk informasi lebih lanjut, lihat Tingkatkan versi cGPU suatu node.
Jika kluster Anda tidak memiliki node dengan fitur isolasi cGPU diaktifkan, lewati langkah ini.
CatatanJika suatu node memiliki label
ack.node.gpu.schedule=cgpuatauack.node.gpu.schedule=core_mem, fitur isolasi cGPU diaktifkan.Menningkatkan 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.