Dalam beberapa skenario, Anda mungkin memerlukan berbagi GPU tanpa isolasi memori GPU. Sebagai contoh, aplikasi seperti Java memungkinkan Anda menentukan jumlah maksimum Memori GPU yang dapat digunakan. Jika isolasi memori GPU diaktifkan, pengecualian dapat terjadi. Untuk mengatasi masalah ini, Anda dapat menonaktifkan isolasi memori GPU pada node yang mendukung berbagi GPU. Topik ini menjelaskan cara mengonfigurasi berbagi GPU tanpa isolasi memori GPU.
Prasyarat
Sebuah klaster khusus Container Service for Kubernetes (ACK) dengan node akselerasi GPU telah dibuat. Untuk informasi lebih lanjut, lihat Buat Klaster Khusus ACK dengan Node Akselerasi GPU.
Komponen ack-cgpu telah diinstal. Untuk informasi lebih lanjut, lihat Instal Komponen ack-cgpu.
Langkah 1: Buat kumpulan node
Ikuti langkah-langkah berikut untuk membuat kumpulan node dengan isolasi memori GPU dinonaktifkan.
Masuk ke Konsol ACK. Di panel navigasi sisi kiri, klik Clusters.
Di halaman Clusters, klik nama klaster yang ingin Anda kelola dan pilih di panel navigasi sisi kiri.
Di halaman Node Pools, klik Create Node Pool. Di kotak dialog Create Node Pool, konfigurasikan parameter dan klik Confirm Order.
Tabel berikut menjelaskan parameter utama. Untuk informasi lebih lanjut, lihat Buat Kumpulan Node.
Node yang Diharapkan: Tentukan jumlah awal node dalam kumpulan node. Jika Anda tidak ingin menambahkan node ke kumpulan node, atur parameter ini menjadi 0.
Label Node: Tambahkan label berbagi GPU ke node. Untuk informasi lebih lanjut tentang label, lihat Label untuk Mengaktifkan Kebijakan dan Metode Penjadwalan GPU serta Cara Mengubah Nilai Label.
Klik ikon
, atur Key menjadi gpushare, lalu atur Value menjaditrue.
Langkah 2: Kirim pekerjaan
Masuk ke Konsol ACK. Di panel navigasi sisi kiri, klik Clusters.
Di halaman Clusters, temukan klaster yang Anda inginkan dan klik namanya. Di panel sisi kiri, pilih .
Di halaman Jobs, klik Create from YAML. Di editor kode pada halaman Create, tempel konten berikut dan klik Create.
apiVersion: batch/v1 kind: Job metadata: name: tensorflow-mnist-share spec: parallelism: 1 template: metadata: labels: app: tensorflow-mnist-share spec: containers: - name: tensorflow-mnist-share image: registry.cn-beijing.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: aliyun.com/gpu-mem: 4 # Minta 4 GiB memori GPU. workingDir: /root restartPolicy: NeverDeskripsi kode:
Konten YAML mendefinisikan pekerjaan TensorFlow. Pekerjaan ini membuat satu pod dan pod tersebut meminta 4 GiB memori GPU.
Anda dapat mengatur
aliyun.com/gpu-mem: 4di bawahresources.limitsuntuk meminta 4 GiB memori GPU.
Langkah 3: Verifikasi konfigurasi
Masuk ke Konsol ACK. Di panel navigasi sisi kiri, klik Clusters.
Di halaman Clusters, temukan klaster yang Anda inginkan dan klik namanya. Di panel sisi kiri, pilih .
Di halaman Pods, pilih di kolom Actions dari pod yang Anda buat di Langkah 2 untuk masuk ke pod.
Jalankan perintah berikut untuk menanyakan informasi memori GPU:
nvidia-smiOutput yang Diharapkan:
Rab Jun 14 06:45:56 2023 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 515.105.01 Driver Version: 515.105.01 CUDA Version: 11.7 | |-------------------------------+----------------------+----------------------+ | 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 35C P0 59W / 300W | 334MiB / 16384MiB | 0% Default | | | | N/A | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=============================================================================| +-----------------------------------------------------------------------------+Output menunjukkan bahwa GPU yang dialokasikan ke pod menyediakan 16.384 MiB memori. Dalam contoh ini, model GPU adalah V100. Jika isolasi memori GPU diaktifkan, nilainya sama dengan jumlah memori yang diminta oleh pod, yaitu 4 GiB. Ini menunjukkan bahwa konfigurasi sedang berlaku.
Aplikasi perlu membaca informasi alokasi memori GPU dari variabel lingkungan berikut.
ALIYUN_COM_GPU_MEM_CONTAINER=4 # Memori GPU yang tersedia untuk pod. ALIYUN_COM_GPU_MEM_DEV=16 # Total memori GPU yang disediakan oleh setiap GPU.Jika aplikasi memerlukan rasio memori GPU yang tersedia, Anda dapat menggunakan rumus berikut untuk menghitung rasio memori GPU yang digunakan oleh aplikasi terhadap total memori GPU yang disediakan oleh GPU berdasarkan variabel lingkungan sebelumnya:
persentase = ALIYUN_COM_GPU_MEM_CONTAINER / ALIYUN_COM_GPU_MEM_DEV = 4 / 16 = 0,25