ACK managed cluster Pro edition mendukung shared GPU. Shared GPU memungkinkan penjadwalan GPU bersama dan isolasi memori GPU di Kubernetes. Topik ini menjelaskan cara mengonfigurasi kebijakan berbagi multi-GPU untuk penjadwalan GPU bersama.
Prasyarat
Pengantar Berbagi Multi-GPU
Saat ini, berbagi multi-GPU mendukung isolasi memori GPU dengan berbagi daya komputasi, tetapi tidak mendukung alokasi daya komputasi.
Saat mengembangkan model, Anda mungkin memerlukan beberapa kartu GPU meskipun tidak membutuhkan sumber daya dalam jumlah besar. Mengalokasikan seluruh kartu GPU ke platform pengembangan dapat menyebabkan pemborosan sumber daya. Berbagi multi-GPU melalui penjadwalan GPU bersama menyelesaikan masalah ini.
Kebijakan berbagi multi-GPU berarti sebuah aplikasi meminta N GiB memori GPU yang dialokasikan oleh M kartu GPU, dengan setiap kartu menyediakan N/M GiB. (N/M harus berupa bilangan bulat, dan M kartu GPU tersebut harus berada pada node Kubernetes yang sama.) Sebagai contoh, jika Anda meminta 8 GiB memori GPU dan menentukan 2 kartu GPU, setiap kartu akan menyediakan 4 GiB.
Berbagi GPU tunggal: Sebuah Pod hanya meminta satu kartu GPU dan menggunakan sebagian sumber dayanya.
Berbagi multi-GPU: Sebuah Pod meminta beberapa kartu GPU. Setiap GPU menyediakan sebagian sumber dayanya, dan jumlah sumber daya yang disediakan oleh setiap GPU adalah sama.
Tetapkan Kebijakan Berbagi Multi-GPU
Masuk ke Container Service Management Console . Di panel navigasi sebelah kiri, klik Clusters.
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi sebelah kiri, klik .
Pada halaman Jobs, klik Create from YAML. Salin konten berikut ke area Template, lalu klik Create.
File YAML dijelaskan sebagai berikut:
YAML ini mendefinisikan sebuah Job yang menggunakan contoh TensorFlow MNIST. Tugas ini meminta 8 GiB memori GPU dan 2 kartu GPU, dengan setiap kartu GPU menyediakan 4 GiB memori GPU.
Anda dapat meminta 2 kartu GPU dengan mendefinisikan label
aliyun.com/gpu-count: 2dalam label Pod.Anda dapat meminta 8 GiB memori GPU dengan mendefinisikan
aliyun.com/gpu-mem: 8dalam resources.limits Pod.
Verifikasi Kebijakan Berbagi Multi-GPU
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi sebelah kiri, klik .
Pada baris container yang telah dibuat, misalnya tensorflow-mnist-multigpu-***, klik Actions. Lalu, klik Terminal untuk mengakses container. 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 tersebut menunjukkan bahwa container hanya dapat menggunakan 2 kartu GPU. Setiap kartu memiliki total memori GPU sebesar 4309 MiB (setara dengan 4 GiB memori GPU yang diminta, sedangkan memori GPU aktual per kartu adalah 16160 MiB).
Pada baris container yang telah dibuat, misalnya tensorflow-mnist-multigpu-***, klik Actions. Lalu, klik Logs untuk melihat log container. Anda akan melihat informasi penting berikut:
totalMemory: 4.21GiB freeMemory: 3.91GiB totalMemory: 4.21GiB freeMemory: 3.91GiBInformasi tersebut menunjukkan bahwa dalam informasi perangkat yang diambil oleh aplikasi, total memori GPU setiap kartu sekitar 4 GiB, bukan memori GPU aktual sebesar 16160 MiB per kartu. Hal ini berarti memori GPU yang digunakan oleh aplikasi telah diisolasi.