Topik ini menjelaskan cara menggunakan fitur cGPU di kluster GPU khusus setelah menginstal komponen ack-cgpu.
Prasyarat
Pastikan komponen ack-cgpu telah diinstal. Untuk informasi selengkapnya, lihat Instal komponen ack-cgpu.
Catatan penggunaan
Untuk node GPU yang dikelola di kluster Container Service for Kubernetes (ACK), perhatikan hal-hal berikut saat meminta dan menggunakan resource GPU untuk aplikasi:
Jangan menjalankan aplikasi berat GPU secara langsung di node.
Jangan menggunakan tool seperti
Docker,Podman, ataunerdctluntuk membuat kontainer dan meminta resource GPU. Misalnya, hindari menjalankan perintahdocker run --gpus allataudocker run -e NVIDIA_VISIBLE_DEVICES=allserta menjalankan aplikasi berat GPU.Jangan menambahkan variabel lingkungan
NVIDIA_VISIBLE_DEVICES=allatauNVIDIA_VISIBLE_DEVICES=<GPU ID>ke bagianenvdalam file YAML Pod. Jangan gunakan variabel lingkunganNVIDIA_VISIBLE_DEVICESuntuk meminta resource GPU bagi Pod dan menjalankan aplikasi berat GPU.Jangan mengatur
NVIDIA_VISIBLE_DEVICES=alldan menjalankan aplikasi berat GPU saat membangun gambar kontainer jika variabel lingkunganNVIDIA_VISIBLE_DEVICEStidak ditentukan dalam file YAML Pod.Jangan menambahkan
privileged: trueke bagiansecurityContextdalam file YAML Pod dan menjalankan aplikasi berat GPU.
Penggunaan metode di atas untuk meminta resource GPU dapat menyebabkan risiko berikut:
Jika Anda menggunakan salah satu metode tersebut untuk meminta resource GPU di sebuah node tetapi tidak mencatat detailnya dalam buku besar resource perangkat (device resource ledger) penjadwal (scheduler), alokasi resource GPU aktual mungkin tidak sesuai dengan catatan dalam buku besar tersebut. Akibatnya, penjadwal tetap dapat menjadwalkan Pod lain yang meminta resource GPU ke node yang sama, sehingga beberapa aplikasi bersaing untuk resource GPU yang sama dan sebagian mungkin gagal berjalan karena kekurangan resource.
Penggunaan metode tersebut juga dapat menyebabkan masalah tak terduga lainnya, seperti masalah yang dilaporkan oleh komunitas NVIDIA.
Prosedur
Login ke ACK console. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, klik nama kluster target. Di panel navigasi sebelah kiri, pilih .
Login ke node master target dan jalankan perintah berikut untuk mengkueri kemampuan cGPU kluster.
CatatanUntuk informasi lebih lanjut tentang cara login ke node master, lihat Koneksi ke instans menggunakan VNC.
Untuk mengkueri kemampuan cGPU kluster dari klien lokal, Anda harus menginstal komponen ack-cgpu dan tool kueri resource. Untuk informasi selengkapnya, lihat Langkah 4: Instal dan gunakan tool kueri resource GPU.
kubectl inspect cgpuOutput yang diharapkan:
NAME IPADDRESS GPU0(Allocated/Total) GPU1(Allocated/Total) GPU Memory(GiB) cn-beijing.192.168.XX.XX 192.168.XX.XX 0/7 0/7 0/14 --------------------------------------------------------------------- Allocated/Total GPU Memory In Cluster: 0/14 (0%)CatatanUntuk mengkueri informasi detail tentang kemampuan cGPU, jalankan perintah
kubectl inspect cgpu -d.Di panel navigasi sebelah kiri, pilih . Pada halaman Jobs, klik Create from YAML di pojok kanan atas. Pada halaman yang muncul, pilih namespace dan pilih templat dari daftar drop-down Sample Template atau gunakan templat kustom. Lalu, masukkan contoh YAML berikut ke editor kode dan klik Create.
apiVersion: v1 kind: Pod metadata: name: gpu-share-sample spec: containers: - name: gpu-share-sample image: registry.cn-hangzhou.aliyuncs.com/ai-samples/gpushare-sample:tensorflow-1.5 command: - python - tensorflow-sample-code/tfjob/docker/mnist/main.py - --max_steps=100000 - --data_dir=tensorflow-sample-code/data resources: limits: # Satuan: GiB. Pod ini meminta total 3 GiB memori GPU. aliyun.com/gpu-mem: 3 # Tentukan jumlah memori GPU. workingDir: /rootDi node master, jalankan kembali perintah berikut untuk memeriksa penggunaan memori GPU di kluster.
kubectl inspect cgpuOutput yang diharapkan:
NAME IPADDRESS GPU0(Allocated/Total) GPU Memory(GiB) cn-beijing.192.168.XX.XX 192.168.XX.XX 3/14 3/14 --------------------------------------------------------------------- Allocated/Total GPU Memory In Cluster: 3/14 (21%)Output tersebut menunjukkan bahwa node
cn-beijing.192.168.XX.XXmemiliki total 14 GiB memori GPU, dan 3 GiB telah dialokasikan.
Verifikasi hasil
Untuk memverifikasi bahwa isolasi memori GPU telah diaktifkan pada node, ikuti langkah-langkah berikut.
Login ke node master target.
Jalankan perintah berikut untuk melihat log aplikasi dan konfirmasi bahwa isolasi memori cGPU telah diaktifkan.
kubectl logs gpu-share-sample --tail=1Output yang diharapkan:
2023-08-07 09:08:13.931003: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1326] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 2832 MB memory) -> physical GPU (device: 0, name: Tesla T4, pci bus id: 0000:00:07.0, compute capability: 7.5)Output tersebut menunjukkan bahwa kontainer meminta 2.832 MB memori GPU.
Jalankan perintah berikut untuk login ke kontainer dan melihat total jumlah memori GPU yang dialokasikan kepadanya.
kubectl exec -it gpu-share-sample nvidia-smiOutput yang diharapkan:
Mon Aug 7 08:52:18 2023 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 418.87.01 Driver Version: 418.87.01 CUDA Version: 10.1 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | |===============================+======================+======================| | 0 Tesla T4 On | 00000000:00:07.0 Off | 0 | | N/A 41C P0 26W / 70W | 3043MiB / 3231MiB | 0% Default | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: GPU Memory | | GPU PID Type Process name Usage | |=============================================================================| +-----------------------------------------------------------------------------+Output tersebut menunjukkan bahwa total jumlah memori GPU yang dialokasikan ke kontainer ini adalah 3.231 MiB.
Login ke node GPU tempat aplikasi contoh dijalankan dan lihat total memori GPU node tersebut.
nvidia-smiOutput yang diharapkan:
Mon Aug 7 09:18:26 2023 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 418.87.01 Driver Version: 418.87.01 CUDA Version: 10.1 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | |===============================+======================+======================| | 0 Tesla T4 On | 00000000:00:07.0 Off | 0 | | N/A 40C P0 26W / 70W | 3053MiB / 15079MiB | 0% Default | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: GPU Memory | | GPU PID Type Process name Usage | |=============================================================================| | 0 8796 C python3 3043MiB | +-----------------------------------------------------------------------------+Output tersebut menunjukkan bahwa node host memiliki total 15.079 MiB memori GPU, dengan 3.053 MiB dialokasikan ke kontainer.