Container Service for Kubernetes (ACK) managed Pro clusters mendukung GPU sharing. Anda dapat menggunakan fitur ini untuk berbagi sumber daya GPU dan mengisolasi memori. Topik ini menjelaskan cara mengonfigurasi kebijakan multi-GPU sharing.
Prasyarat
Pengenalan multi-GPU sharing
Multi-GPU sharing memerlukan sumber daya komputasi bersama dengan memori GPU yang terisolasi.
Selama fase pengembangan model, aplikasi mungkin hanya memerlukan beberapa GPU tanpa menggunakan seluruh kapasitasnya. Mengalokasikan semua GPU ke lingkungan pengembangan dapat menyebabkan pemborosan sumber daya. Untuk menghindari masalah ini, gunakan multi-GPU sharing.
Multi-GPU sharing memungkinkan aplikasi untuk meminta N GiB memori GPU yang didistribusikan di M GPU, di mana setiap GPU mengalokasikan N/M GiB. Nilai dari N/M harus berupa bilangan bulat, dan semua M GPU harus berada pada node Kubernetes yang sama. Sebagai contoh, ketika meminta 8 GiB memori dan menentukan 2 GPU, setiap GPU akan mengalokasikan 4 GiB.
Berbagi GPU tunggal: Pod dapat meminta sumber daya GPU yang dialokasikan oleh satu GPU saja.
Berbagi multi-GPU: Pod dapat meminta sumber daya GPU yang dialokasikan secara merata oleh beberapa GPU.
Konfigurasikan kebijakan berbagi multi-GPU
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, temukan cluster yang diinginkan dan klik namanya. Di panel kiri, pilih .
Di halaman Jobs, klik Create from YAML. Salin konten berikut ke bagian Template dan klik Create:
Deskripsi template YAML:
Template YAML mendefinisikan pekerjaan TensorFlow MNIST. Pekerjaan tersebut meminta 8 GiB memori yang dialokasikan oleh 2 GPU. Setiap GPU mengalokasikan 4 GiB memori.
Tambahkan label pod
aliyun.com/gpu-count: 2untuk meminta dua GPU.Tambahkan batasan sumber daya
aliyun.com/gpu-mem: 8untuk meminta 8 GiB memori.
Verifikasi kebijakan berbagi multi-GPU
Di halaman Clusters, temukan cluster yang diinginkan dan klik namanya. Di panel kiri, pilih .
Klik Terminal di kolom Actions dari pod yang Anda buat, seperti tensorflow-mnist-multigpu-***, untuk masuk ke pod dan jalankan perintah berikut:
nvidia-smiOutput yang diharapkan:
Wed Jun 14 03:24:14 2023 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 470.161.03 Driver Version: 470.161.03 CUDA Version: 11.4 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |===============================+======================+======================| | 0 Tesla V100-SXM2... On | 00000000:00:09.0 Off | 0 | | N/A 38C P0 61W / 300W | 569MiB / 4309MiB | 2% Default | | | | N/A | +-------------------------------+----------------------+----------------------+ | 1 Tesla V100-SXM2... On | 00000000:00:0A.0 Off | 0 | | N/A 36C P0 61W / 300W | 381MiB / 4309MiB | 0% Default | | | | N/A | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=============================================================================| +-----------------------------------------------------------------------------+Output menunjukkan bahwa pod hanya dapat menggunakan dua GPU. Setiap GPU dapat menyediakan 4.309 MiB memori, yang diminta oleh pod. Ukuran memori aktual dari setiap GPU adalah 16.160 MiB.
Klik Logs di kolom Actions dari pod untuk melihat log pod. Informasi berikut ditampilkan:
totalMemory: 4.21GiB freeMemory: 3.91GiB totalMemory: 4.21GiB freeMemory: 3.91GiBInformasi perangkat menunjukkan bahwa setiap GPU mengalokasikan 4 GiB memori. Ukuran memori aktual dari setiap GPU adalah 16.160 MiB. Ini berarti isolasi memori telah diterapkan.