Secara default, penjadwal mengalokasikan semua sumber daya dari satu GPU pada node ke pod sebelum beralih ke GPU lain. Hal ini membantu mencegah fragmentasi GPU. Dalam beberapa skenario, Anda mungkin ingin menyebarkan pod ke GPU yang berbeda pada node jika terjadi gangguan bisnis ketika sebuah GPU mengalami kerusakan. Topik ini menjelaskan cara mengonfigurasi kebijakan pemilihan GPU untuk node dengan fitur berbagi GPU diaktifkan.
Prasyarat
Deskripsi Kebijakan
Jika sebuah node dengan fitur berbagi GPU diaktifkan memiliki beberapa GPU, Anda dapat memilih salah satu dari kebijakan pemilihan GPU berikut:
Binpack: Secara default, kebijakan binpack digunakan. Penjadwal mengalokasikan semua sumber daya dari satu GPU ke pod sebelum beralih ke GPU lain. Ini membantu mencegah fragmentasi GPU.
Spread: Penjadwal mencoba menyebarkan pod ke GPU yang berbeda pada node jika terjadi gangguan bisnis ketika sebuah GPU mengalami kerusakan.
Dalam contoh ini, sebuah node memiliki dua GPU. Setiap GPU menyediakan 15 GiB memori. Pod1 meminta 2 GiB memori dan Pod2 meminta 3 GiB memori.
Prosedur
Secara default, kebijakan binpack digunakan untuk memilih GPU. Untuk mengaktifkan kebijakan spread dalam berbagi GPU, ikuti langkah-langkah berikut:
Langkah 1: Buat kumpulan node
Masuk ke Konsol ACK. Di panel navigasi di sebelah kiri, klik Clusters.
Di halaman Clusters, temukan kluster yang ingin Anda kelola dan klik nama kluster untuk masuk ke halaman detail kluster. Di panel navigasi di sebelah kiri, pilih .
Di pojok kanan atas halaman Kumpulan Node, klik Buat Kumpulan Node.
Di kotak dialog Buat Kumpulan Node, konfigurasikan parameter untuk kumpulan node dan klik Confirm Order. Tabel berikut menjelaskan parameter utama. Untuk informasi lebih lanjut tentang parameter lainnya, lihat Buat dan Kelola Kumpulan Node.
Parameter
Deskripsi
Tipe Instans
Atur Architecture ke GPU-accelerated dan pilih beberapa tipe instans yang dipercepat oleh GPU.
Kebijakan spread hanya berlaku jika node memiliki lebih dari satu GPU. Oleh karena itu, pilih tipe instans yang memiliki beberapa GPU.
Node yang Diharapkan
Tentukan jumlah awal node dalam kumpulan node. Jika Anda tidak ingin membuat node dalam kumpulan node, atur parameter ini ke 0.
Label Node
Klik ikon
untuk menambahkan dua entri:Tambahkan label dengan key adalah
ack.node.gpu.scheduledan value adalahcgpu. Label ini mengaktifkan fitur berbagi GPU dan isolasi memori GPU.Tambahkan label dengan key adalah
ack.node.gpu.placementdan value adalahspread. Label ini mengaktifkan kebijakan spread.
Langkah 2: Kirim pekerjaan
Masuk ke Konsol ACK. Di panel navigasi di sebelah kiri, klik Clusters.
Di halaman Clusters, temukan kluster yang Anda inginkan dan klik namanya. Di panel sebelah kiri, pilih .
Klik Create from YAML di bagian kanan atas halaman, salin kode berikut ke editor Template, dan kemudian modifikasi parameter berdasarkan komentar berikut. Setelah Anda menyelesaikan konfigurasi, klik Create.
Deskripsi template YAML:
Template YAML ini mendefinisikan pekerjaan TensorFlow MNIST. Pekerjaan ini membuat 3 pod dan setiap pod meminta 4 GiB memori.
Batas sumber daya pod
aliyun.com/gpu-mem: 4digunakan untuk meminta memori untuk pod.Untuk membuat kebijakan pemilihan GPU berlaku pada node, tambahkan NodeSelector
kubernetes.io/hostname: <NODE_NAME>ke template YAML untuk menjadwalkan pod ke node yang ditentukan.
Langkah 3: Verifikasi apakah kebijakan spread digunakan
Gunakan alat inspeksi GPU untuk menanyakan informasi alokasi GPU dari node.
kubectl inspect cgpu
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%)Hasil menunjukkan bahwa pod tersebar ke GPU yang berbeda. Kebijakan spread sedang berlaku.