Saat mengembangkan model, Anda mungkin memerlukan beberapa kartu GPU tanpa membutuhkan sumber daya dalam jumlah besar. Mengalokasikan satu kartu GPU penuh untuk setiap platform pengembangan dapat menyebabkan pemborosan sumber daya. Fitur berbagi multi-GPU memungkinkan satu Pod mengambil alokasi memori GPU dari beberapa kartu tanpa menduduki salah satunya secara eksklusif. Kluster ACK Pro mendukung fitur ini dengan isolasi memori GPU untuk pemanfaatan sumber daya yang lebih efisien.
Prasyarat
Pastikan hal-hal berikut:
Batasan
Berbagi multi-GPU hanya mendukung isolasi memori GPU dengan berbagi daya komputasi, bukan alokasi daya komputasi.
Cara kerja
Berbagi multi-GPU memungkinkan satu Pod meminta memori GPU dari beberapa kartu, dengan setiap kartu memberikan kontribusi yang sama.
| Mode | Deskripsi |
|---|---|
| Single-GPU sharing | Sebuah Pod menggunakan sebagian sumber daya dari satu kartu GPU. |
| Multi-GPU sharing | Sebuah Pod mencakup beberapa kartu GPU, dengan setiap kartu memberikan kontribusi memori GPU yang sama. |
Rumus alokasi: Jika sebuah Pod meminta N GiB dari M kartu GPU, setiap kartu mengalokasikan N/M GiB.
Sebagai contoh, sebuah Pod yang meminta 8 GiB dari 2 kartu akan menerima 4 GiB dari masing-masing kartu.
Batasan:
-
N/M harus berupa bilangan bulat.
-
Semua M kartu GPU harus berada pada node Kubernetes yang sama.
Konfigurasikan berbagi multi-GPU
-
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
-
Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Workloads > Jobs.
-
Di halaman Jobs, klik Create from YAML. Tempel YAML berikut ke dalam Template, lalu klik Create.
apiVersion: batch/v1 kind: Job metadata: name: tensorflow-mnist-multigpu spec: parallelism: 1 template: metadata: labels: app: tensorflow-mnist-multigpu aliyun.com/gpu-count: "2" # Jumlah kartu GPU yang akan digunakan spec: containers: - name: tensorflow-mnist-multigpu 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: 8 # Total memori GPU dalam GiB dari semua kartu workingDir: /root restartPolicy: NeverParameter utama:
Parameter Tipe Deskripsi aliyun.com/gpu-countString (label Pod) Jumlah kartu GPU. Diatur di metadata.labels. Contoh:"2"meminta memori dari 2 kartu.aliyun.com/gpu-memInteger (batas sumber daya) Total memori GPU (GiB) dari semua kartu. Diatur di resources.limits. Contoh:8berarti total 8 GiB — 4 GiB per kartu.
Verifikasi isolasi memori GPU
Setelah Pekerjaan dimulai, verifikasi bahwa Pod hanya dapat mengakses memori GPU yang dialokasikan untuknya.
-
Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Workloads > Pods.
-
Untuk Pod tersebut (misalnya,
tensorflow-mnist-multigpu-***), klik Actions > Terminal dan jalankan: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 | |=============================================================================| +-----------------------------------------------------------------------------+Konfirmasi hal berikut dalam output:
-
Dua kartu GPU tercantum (GPU 0 dan GPU 1), sesuai dengan
aliyun.com/gpu-count: "2". -
Setiap kartu menampilkan total memori 4.309 MiB — yaitu 4 GiB per kartu, bukan 16.160 MiB fisik — yang mengonfirmasi isolasi memori GPU.
-
-
Untuk Pod yang sama, klik Actions > Logs. Konfirmasi bahwa output berikut muncul dua kali (sekali per kartu):
totalMemory: 4.21GiB freeMemory: 3.91GiBNilai totalMemory sekitar 4 GiB per kartu — bukan 16.160 MiB fisik — mengonfirmasi bahwa isolasi memori GPU aktif.