Container Service for Kubernetes (ACK) menyediakan kemampuan berbagi GPU yang memungkinkan beberapa model berbagi satu GPU dan mendukung isolasi memori GPU berdasarkan driver mode kernel NVIDIA. Jika kluster Anda telah menginstal komponen berbagi GPU tetapi versi driver GPU atau versi sistem operasi pada node tidak kompatibel dengan versi cGPU yang ada di kluster, Anda perlu meningkatkan komponen berbagi GPU ke versi terbaru. Topik ini menjelaskan cara mengelola komponen berbagi GPU pada node yang dipercepat GPU untuk menerapkan kemampuan penjadwalan dan isolasi GPU.
Prasyarat
Suite AI cloud-native diaktifkan sebelum Anda menggunakan berbagi GPU. Untuk informasi lebih lanjut mengenai informasi penagihan, lihat Penagihan suite AI cloud-native.
Kluster ACK yang dikelola telah dibuat, dan arsitektur untuk tipe instans diatur ke Elastic GPU Service.
Batasan
Jangan mengatur Kebijakan CPU ke
staticuntuk node tempat berbagi GPU diaktifkan.Untuk menentukan jalur kustom untuk file KubeConfig, jalankan perintah
export KUBECONFIG=<kubeconfig>. Perhatikan bahwa perintahkubectl inspect cgputidak mendukung parameter--kubeconfig.Jika Anda menggunakan cGPU untuk mengisolasi sumber daya GPU, Anda tidak dapat meminta memori GPU dengan menggunakan Unified Virtual Memory (UVM). Oleh karena itu, Anda tidak dapat meminta memori GPU dengan memanggil cudaMallocManaged() dari API Compute Unified Device Architecture (CUDA). Anda dapat meminta memori GPU dengan menggunakan metode lain, misalnya dengan memanggil cudaMalloc(). Untuk informasi lebih lanjut, lihat Unified Memory for CUDA Beginners.
Pod yang dikelola oleh DaemonSet GPU bersama tidak memiliki prioritas tertinggi. Oleh karena itu, sumber daya dapat dijadwalkan ke pod dengan prioritas lebih tinggi, dan node dapat mengeluarkan pod yang dikelola oleh DaemonSet. Untuk mencegah masalah ini, Anda dapat memodifikasi DaemonSet aktual GPU bersama, misalnya dengan memperbarui DaemonSet
gpushare-device-plugin-dsyang digunakan untuk berbagi memori GPU dan menetapkanpriorityClassName: system-node-criticalguna memastikan prioritas pod yang dikelola oleh DaemonSet.Untuk optimalisasi kinerja, maksimal 20 pod dapat dibuat per GPU saat menggunakan cGPU. Jika jumlah pod yang dibuat melebihi batas ini, pod berikutnya yang dijadwalkan ke GPU yang sama akan gagal berjalan dan mengembalikan kesalahan:
Error occurs when creating cGPU instance: unknown.Anda dapat menginstal komponen berbagi GPU tanpa batasan wilayah. Namun, isolasi memori GPU hanya didukung di wilayah yang tercantum dalam tabel berikut. Pastikan kluster ACK Anda diterapkan di salah satu wilayah tersebut.
Persyaratan versi.
Konfigurasi
Persyaratan versi
Versi Kubernetes
Jika versi komponen ack-ai-installer lebih rendah dari 1.12.0, Kubernetes 1.18.8 atau yang lebih baru didukung.
Jika versi komponen ack-ai-installer adalah 1.12.0 atau yang lebih baru, hanya Kubernetes 1.20 atau yang lebih baru yang didukung.
Versi driver NVIDIA
≥ 418.87.01
Versi runtime kontainer
Docker: ≥ 19.03.5
containerd: ≥ 1.4.3
Sistem operasi
Alibaba Cloud Linux 3.x (OS yang dioptimalkan kontainer memerlukan versi komponen ack-ai-installer 1.12.6 atau yang lebih baru), Alibaba Cloud Linux 2.x, CentOS 7.6, CentOS 7.7, CentOS 7.9, Ubuntu 22.04
Model GPU
Seri NVIDIA P, NVIDIA T, NVIDIA V, NVIDIA A, dan NVIDIA H
Menginstal komponen berbagi GPU
Langkah 1: Menginstal komponen berbagi GPU
Suite AI cloud-native belum diterapkan
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, temukan kluster yang diinginkan dan klik namanya. Di panel navigasi kiri, pilih .
Pada halaman Cloud-native AI Suite, klik Deploy.
Pada halaman Deploy Cloud-native AI Suite, pilih Ekstensi Kebijakan Penjadwalan (Penjadwalan Tugas Batch, Berbagi GPU, Penjadwalan GPU yang Sadar Topologi).
(Opsional) Klik Advanced di sebelah kanan Scheduling Policy Extension (Batch Task Scheduling, GPU Sharing, Topology-aware GPU Scheduling). Di panel Parameters, modifikasi parameter
policycGPU. Setelah selesai memodifikasi, klik OK.Jika Anda tidak memiliki persyaratan untuk fitur berbagi daya komputasi yang disediakan oleh cGPU, kami merekomendasikan agar Anda menggunakan pengaturan default
policy: 5, yaitu penjadwalan native. Untuk informasi lebih lanjut tentang kebijakan yang didukung oleh cGPU, lihat Menginstal dan menggunakan cGPU.
Di bagian bawah halaman Cloud-native AI Suite, klik Deploy Cloud-native AI Suite.
Setelah komponen diinstal, Anda dapat menemukan komponen berbagi GPU yang telah diinstal ack-ai-installer dalam daftar komponen di halaman Cloud-native AI Suite.
Suite AI cloud-native telah diterapkan
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, temukan kluster yang diinginkan dan klik namanya. Di panel navigasi kiri, pilih .
Temukan komponen ack-ai-installer, lalu klik Deploy di kolom Actions.
(Opsional) Di panel Parameters, modifikasi parameter
policycGPU.Jika Anda tidak memiliki persyaratan untuk fitur berbagi daya komputasi yang disediakan oleh cGPU, kami merekomendasikan agar Anda menggunakan pengaturan default
policy: 5, yaitu penjadwalan native. Untuk informasi lebih lanjut tentang kebijakan yang didukung oleh cGPU, lihat Menginstal dan menggunakan cGPU.
Setelah selesai memodifikasi, klik OK.
Setelah komponen diinstal, Status ack-ai-installer berubah menjadi Deployed.
Langkah 2: Mengaktifkan berbagi GPU dan isolasi memori GPU
Pada halaman Clusters, temukan kluster yang akan dikelola dan klik namanya. Di panel navigasi kiri, pilih .
Pada halaman Node Pools, klik Create Node Pool. Untuk informasi lebih lanjut tentang cara mengonfigurasi kelompok node, lihat Membuat dan mengelola kelompok node.
Pada halaman Create Node Pool, konfigurasikan parameter untuk membuat kelompok node dan klik Confirm. Tabel berikut menjelaskan parameter utama:
Parameter
Deskripsi
Expected Nodes
Jumlah awal node dalam kelompok node. Jika Anda tidak ingin membuat node dalam kelompok node, atur parameter ini ke 0.
Node Labels
Tambahkan label berdasarkan kebutuhan bisnis Anda. Untuk informasi lebih lanjut tentang label node, lihat Spesifikasi model node GPU dan panduan label penjadwalan.
Pada contoh berikut, nilai label diatur ke cgpu, yang menunjukkan bahwa node telah mengaktifkan berbagi GPU. Pod pada node hanya perlu meminta memori GPU. Beberapa pod dapat berbagi GPU yang sama untuk menerapkan isolasi memori GPU dan berbagi daya komputasi.
Klik ikon
di sebelah Node Label, dan atur Key ke ack.node.gpu.scheduledan Value kecgpu.PentingUntuk informasi lebih lanjut tentang beberapa masalah umum saat menggunakan kemampuan isolasi memori yang disediakan oleh cGPU, lihat FAQ cGPU.
Setelah Anda menambahkan label untuk mengaktifkan berbagi GPU ke node, jangan menjalankan perintah
kubectl label nodesuntuk mengubah nilai label atau menggunakan fitur manajemen label untuk mengubah label node di halaman Nodes di Konsol ACK. Hal ini mencegah potensi masalah. Untuk informasi lebih lanjut tentang masalah potensial ini, lihat Masalah yang mungkin terjadi jika Anda menggunakan perintah kubectl label nodes atau menggunakan fitur manajemen label untuk mengubah nilai label di Konsol ACK. Kami merekomendasikan agar Anda mengonfigurasi berbagi GPU berdasarkan kelompok node.
Langkah 3: Menambahkan node yang dipercepat GPU
Jika Anda telah menambahkan node yang dipercepat GPU ke kelompok node saat membuat kelompok node, lewati langkah ini.
Setelah kelompok node dibuat, Anda dapat menambahkan node yang dipercepat GPU ke kelompok node. Untuk menambahkan node yang dipercepat GPU, Anda perlu mengatur arsitektur untuk tipe instans ke Elastic GPU Service. Untuk informasi lebih lanjut, lihat Menambahkan instans ECS yang ada atau Membuat dan mengelola kelompok node.
Langkah 4: Menginstal dan menggunakan alat inspeksi GPU
Unduh kubectl-inspect-cgpu. File yang dapat dieksekusi harus diunduh ke direktori yang termasuk dalam variabel lingkungan PATH. Dalam contoh ini,
/usr/local/bin/digunakan.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
Jalankan perintah berikut untuk memberikan izin eksekusi ke kubectl-inspect-cgpu:
chmod +x /usr/local/bin/kubectl-inspect-cgpuJalankan perintah berikut untuk mengkueri penggunaan GPU kluster:
kubectl inspect cgpuSistem menampilkan informasi yang mirip dengan keluaran berikut:
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%)
Memperbarui komponen berbagi GPU
Langkah 1: Menentukan metode pembaruan untuk komponen berbagi GPU
Anda harus memilih metode pembaruan berdasarkan cara komponen berbagi GPU (ack-ai-installer) diinstal di kluster Anda. Ada dua cara untuk menginstal komponen berbagi GPU.
Gunakan suite AI cloud-native (direkomendasikan): Instal komponen berbagi GPU ack-ai-installer di halaman Cloud-native AI Suite.
Gunakan Katalog Aplikasi (metode ini tidak tersedia lagi): Instal komponen berbagi GPU ack-ai-installer di halaman Marketplace's App Catalog. Metode instalasi ini tidak tersedia lagi. Namun, untuk komponen yang sudah diinstal menggunakan metode ini, Anda masih dapat memperbaruinya menggunakan metode ini.
PentingJika Anda menguninstall komponen yang diinstal menggunakan metode ini dari kluster Anda, Anda harus mengaktifkan layanan suite AI cloud-native dan menyelesaikan instalasi saat menginstal ulang komponen tersebut.
Langkah 2: Memperbarui komponen
Perbarui melalui suite AI cloud-native
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, temukan kluster yang diinginkan dan klik namanya. Di panel navigasi kiri, pilih .
Di bagian Components, temukan komponen ack-ai-installer dan klik Upgrade di kolom Actions.
Perbarui melalui Katalog Aplikasi
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, temukan kluster yang diinginkan dan klik namanya. Di panel navigasi kiri, pilih .
Di daftar Helm, temukan komponen ack-ai-installer dan klik Update di kolom Actions. Ikuti petunjuk halaman untuk memilih versi chart terbaru dan selesaikan pembaruan komponen.
PentingJika Anda ingin menyesuaikan konfigurasi chart, konfirmasi pembaruan komponen setelah Anda memodifikasi konfigurasi.
Setelah pembaruan, periksa daftar Helm untuk memastikan bahwa versi chart komponen ack-ai-installer adalah versi terbaru.
Langkah 3: Memperbarui node yang ada
Setelah komponen ack-ai-installer diperbarui, versi cGPU pada node yang ada tidak diperbarui secara otomatis. Rujuk pada petunjuk berikut untuk menentukan apakah node memiliki isolasi cGPU diaktifkan.
Jika kluster Anda berisi node yang dipercepat GPU dengan isolasi cGPU diaktifkan, Anda harus memperbarui versi cGPU pada node yang ada tersebut. Untuk informasi lebih lanjut, lihat Memperbarui versi cGPU pada node.
Jika kluster Anda tidak berisi node dengan isolasi cGPU diaktifkan, lewati langkah ini.
CatatanJika sebuah node memiliki label
ack.node.gpu.schedule=cgpuatauack.node.gpu.schedule=core_mem, isolasi cGPU diaktifkan pada node tersebut.Memperbarui versi cGPU pada node yang ada memerlukan penghentian semua pod aplikasi pada node tersebut. Lakukan operasi ini selama jam non-sibuk berdasarkan skenario bisnis Anda.