Halaman ini menjelaskan karakteristik dan jenis beban kerja terbaik untuk setiap strategi berbagi GPU yang tersedia di Google Kubernetes Engine (GKE), seperti GPU multi-instance, berbagi waktu GPU, dan MPS NVIDIA. Berbagi GPU membantu Anda meminimalkan kapasitas yang kurang dimanfaatkan di cluster dan menyediakan kapasitas yang cukup bagi workload untuk menyelesaikan tugas.
Halaman ini ditujukan bagi admin dan operator Platform serta spesialis Data dan AI yang ingin menjalankan workload berbasis GPU yang menggunakan kapasitas GPU seefisien mungkin. Untuk mempelajari lebih lanjut peran umum yang kami rujuk dalam Google Cloud konten, lihat Peran dan tugas pengguna GKE umum.
Sebelum membaca halaman ini, pastikan Anda memahami konsep berikut:
- Konsep Kubernetes, seperti Pod, node, deployment, dan namespace.
- Konsep GKE, seperti node pool, penskalaan otomatis, dan penyediaan otomatis node.
Cara kerja permintaan GPU di Kubernetes
Kubernetes memungkinkan workload meminta jumlah resource yang diperlukan agar dapat berfungsi dengan tepat. Meskipun Anda dapat meminta unit CPU pecahan untuk workload, Anda tidak dapat meminta unit GPU pecahan. Manifes pod harus meminta resource GPU dalam bilangan bulat, yang berarti bahwa seluruh GPU fisik dialokasikan ke satu container meskipun container tersebut hanya memerlukan sebagian kecil resource untuk berfungsi dengan benar. Cara ini tidak efisien dan bisa mahal, terutama jika Anda menjalankan beberapa workload dengan persyaratan GPU rendah yang serupa.
Gunakan strategi berbagi GPU untuk meningkatkan pemanfaatan GPU saat workload Anda tidak memerlukan semua resource GPU.
Apa itu strategi berbagi GPU?
Strategi berbagi GPU memungkinkan beberapa container menggunakan GPU yang terpasang secara efisien dan menghemat biaya pengoperasian. GKE menyediakan strategi berbagi GPU berikut:
- GPU multi-instance: GKE membagi satu GPU yang didukung menjadi hingga tujuh bagian. Setiap slice dapat dialokasikan ke satu container pada node secara independen, untuk maksimum tujuh container per GPU. GPU multi-instance memberikan isolasi hardware antara workload, serta Kualitas Layanan (QoS) yang konsisten dan dapat diprediksi untuk semua container yang berjalan di GPU.
- Berbagi waktu GPU: GKE menggunakan kemampuan berbagi waktu bawaan yang disediakan oleh GPU NVIDIA dan stack software. Mulai dari arsitektur Pascal, GPU NVIDIA mendukung preempti tingkat instruksi. Saat melakukan pengalihan konteks di antara proses yang berjalan di GPU, penghentian paksa tingkat petunjuk memastikan setiap proses mendapatkan irisan waktu yang adil. Pembagian waktu GPU memberikan isolasi tingkat software antara beban kerja dalam hal isolasi ruang alamat, isolasi performa, dan isolasi error.
- NVIDIA MPS: GKE menggunakan Multi-Process Service (MPS) NVIDIA. NVIDIA MPS adalah penerapan alternatif yang kompatibel secara biner dari CUDA API yang dirancang untuk secara transparan memungkinkan beban kerja CUDA multi-proses kooperatif berjalan secara bersamaan pada satu perangkat GPU. GPU dengan NVIDIA MPS menyediakan isolasi tingkat software dalam hal batas resource (persentase thread aktif dan memori perangkat yang disematkan).
Strategi berbagi GPU yang akan digunakan
Tabel berikut merangkum dan membandingkan karakteristik strategi berbagi GPU yang tersedia:
GPU multi-instance | Berbagi waktu GPU | NVIDIA MPS | |
---|---|---|---|
Umum | Berbagi GPU paralel di antara container | Pengalihan konteks yang cepat | Berbagi GPU paralel di antara container |
Isolasi | Satu GPU dibagi menjadi hingga tujuh bagian dan setiap container pada GPU fisik yang sama memiliki komputasi, memori, dan bandwidth khusus. Oleh karena itu, container dalam partisi memiliki throughput dan latensi yang dapat diprediksi, bahkan saat container lain memenuhi partisi lain. |
Setiap container mengakses kapasitas penuh GPU fisik yang mendasarinya dengan melakukan pengalihan konteks antar-proses yang berjalan di GPU. Namun, time-sharing tidak memberikan penegakan batas memori antara Job bersama dan peralihan konteks yang cepat untuk akses bersama dapat menimbulkan overhead. |
MPS NVIDIA memiliki isolasi resource terbatas, tetapi mendapatkan lebih banyak fleksibilitas dalam dimensi lain, misalnya jenis GPU dan unit bersama maksimum, yang menyederhanakan alokasi resource. |
Cocok untuk beban kerja ini | Direkomendasikan untuk workload yang berjalan secara paralel dan memerlukan ketahanan serta QoS tertentu. Misalnya, saat menjalankan workload inferensi AI, GPU multi-instance memungkinkan beberapa kueri inferensi berjalan secara bersamaan untuk respons cepat, tanpa memperlambat satu sama lain. |
Direkomendasikan untuk beban kerja interaktif dan yang memiliki periode tidak ada aktivitas. Workload ini tidak hemat biaya dengan GPU khusus sepenuhnya. Dengan menggunakan berbagi waktu, workload mendapatkan akses cepat ke GPU saat berada dalam fase aktif. Berbagi waktu GPU sangat optimal untuk skenario yang menghindari GPU mahal yang menganggur jika isolasi penuh dan akses GPU berkelanjutan mungkin tidak diperlukan, misalnya, saat beberapa pengguna menguji atau membuat prototipe workload. Beban kerja yang menggunakan time-sharing harus dapat mentoleransi kompromi tertentu pada performa dan latensi. |
Direkomendasikan untuk pemrosesan batch untuk tugas kecil karena MPS memaksimalkan throughput dan penggunaan GPU secara serentak. MPS memungkinkan tugas batch diproses secara paralel secara efisien untuk workload berukuran kecil hingga sedang. MPS NVIDIA optimal untuk proses kooperatif yang bertindak sebagai satu aplikasi. Misalnya, tugas MPI dengan paralelisme peringkat antar-MPI. Dengan tugas ini, setiap proses CUDA kecil (biasanya peringkat MPI) dapat berjalan secara bersamaan di GPU untuk sepenuhnya memenuhi seluruh GPU. Workload yang menggunakan CUDA MPS harus mentoleransi batasan perlindungan memori dan pembatasan error. |
Pemantauan | Metrik pemakaian GPU tidak tersedia untuk GPU multi-instance. | Gunakan Cloud Monitoring untuk memantau performa berbagi waktu GPU Anda. Untuk mempelajari lebih lanjut metrik yang tersedia, lihat Memantau node berbagi waktu GPU atau NVIDIA MPS. | Gunakan Cloud Monitoring untuk memantau performa NVIDIA MPS Anda. Untuk mempelajari lebih lanjut metrik yang tersedia, lihat Memantau node berbagi waktu GPU atau NVIDIA MPS. |
Meminta GPU bersama dalam workload | Menjalankan GPU multi-instance | Menjalankan GPU dengan berbagi waktu | Menjalankan GPU dengan NVIDIA MPS |
Untuk memaksimalkan penggunaan GPU, gabungkan strategi berbagi GPU. Untuk setiap partisi GPU multi-instance, gunakan berbagi waktu atau NVIDIA MPS. Anda kemudian dapat menjalankan beberapa container pada setiap partisi, dengan container tersebut berbagi akses ke resource pada partisi tersebut. Sebaiknya gunakan salah satu kombinasi berikut:
- GPU multi-instance dan berbagi waktu GPU.
- GPU multi-instance dan MPS NVIDIA.
Cara kerja strategi berbagi GPU
Anda dapat menentukan jumlah maksimum container yang diizinkan untuk berbagi GPU fisik:
- Di cluster Autopilot, hal ini dikonfigurasi dalam spesifikasi workload Anda.
- Di cluster Standard, hal ini dikonfigurasi saat Anda membuat node pool baru dengan GPU yang terpasang. Setiap GPU di node pool dibagikan berdasarkan setelan yang Anda tentukan pada level node pool.
Bagian berikut menjelaskan perilaku penjadwalan dan pengoperasian setiap strategi berbagi GPU.
GPU multi-instance
Anda dapat meminta GPU multi-instance dalam workload dengan menentukan
label cloud.google.com/gke-gpu-partition-size
di kolom
nodeSelector
spesifikasi Pod, di bagian spec: nodeSelector
.
GKE menjadwalkan workload ke node yang tersedia dan sesuai dengan mencocokkan label ini. Jika tidak ada node yang tersedia dan sesuai, GKE akan menggunakan penskalaan otomatis dan penyediaan otomatis node untuk membuat node atau node pool baru yang cocok dengan label ini.
Berbagi waktu GPU atau MPS NVIDIA
Anda dapat meminta berbagi waktu GPU atau NVIDIA MPS dalam workload dengan menentukan
label berikut di kolom nodeSelector
spesifikasi Pod, di bagian spec:nodeSelector
.
cloud.google.com/gke-max-shared-clients-per-gpu
: Memilih node yang memungkinkan sejumlah klien tertentu untuk berbagi GPU dasar.cloud.google.com/gke-gpu-sharing-strategy
: Memilih node yang menggunakan strategi berbagi waktu atau NVIDIA MPS untuk GPU.
Tabel berikut menjelaskan bagaimana perilaku penjadwalan berubah berdasarkan kombinasi label node yang Anda tentukan dalam manifes.
Label node | |
---|---|
cloud.google.com/gke-max-shared-clients-per-gpu dan cloud.google.com/gke-gpu-sharing-strategy
|
GKE menjadwalkan workload di node yang tersedia yang cocok dengan kedua label. Jika tidak ada node yang tersedia, GKE akan menggunakan penskalaan otomatis dan penyediaan otomatis node untuk membuat node atau node pool baru yang cocok dengan kedua label tersebut. |
Hanya cloud.google.com/gke-max-shared-clients-per-gpu |
Autopilot: GKE menolak workload. Standard: GKE menjadwalkan workload di node yang tersedia yang cocok dengan label. Jika tidak ada node yang tersedia, GKE akan menggunakan penskalaan otomatis dan penyediaan otomatis node untuk membuat node atau node pool baru yang sesuai dengan label. Secara default, node yang disediakan secara otomatis diberi label dan nilai berikut untuk setiap strategi:
|
Hanya cloud.google.com/gke-gpu-sharing-strategy |
Autopilot: GKE menolak workload. Standard: GKE menjadwalkan workload di node yang tersedia yang menggunakan strategi berbagi tertentu.
|
Proses permintaan GPU yang Anda selesaikan sama untuk berbagi waktu GPU dan strategi NVIDIA MPS.
Jika Anda mengembangkan aplikasi GPU yang berjalan di GPU berbagi waktu atau NVIDIA MPS, Anda hanya dapat meminta satu GPU untuk setiap container. GKE menolak permintaan untuk lebih dari satu GPU dalam satu container untuk menghindari perilaku yang tidak terduga. Selain itu, jumlah GPU yang diminta dengan berbagi waktu dan NVIDIA MPS bukanlah ukuran daya komputasi yang tersedia untuk container.
Tabel berikut menunjukkan hal yang akan terjadi saat Anda meminta jumlah GPU tertentu.
Permintaan GPU yang berlaku untuk berbagi waktu GPU dan NVIDIA MPS | |
---|---|
Berbagi waktu satu GPU atau NVIDIA MPS per container | GKE mengizinkan permintaan, meskipun node memiliki satu GPU fisik atau beberapa GPU fisik. |
Berbagi waktu GPU lebih dari satu per container | GKE menolak permintaan tersebut. Perilaku ini sama saat meminta lebih dari satu instance GPU multi-instance dalam satu container, karena setiap instance GPU dianggap sebagai GPU fisik yang terpisah. |
Lebih dari satu NVIDIA MPS per container | Berdasarkan jumlah GPU fisik di node, GKE melakukan tindakan berikut:
|
Jika GKE menolak workload, Anda akan melihat pesan error yang mirip dengan berikut ini:
status:
message: 'Pod Allocate failed due to rpc error: code = Unknown desc = [invalid request
for sharing GPU (time-sharing), at most 1 nvidia.com/gpu can be requested on GPU nodes], which is unexpected'
phase: Failed
reason: UnexpectedAdmissionError
Memantau node berbagi waktu GPU atau NVIDIA MPS
Gunakan Cloud Monitoring untuk memantau performa node berbagi waktu GPU atau NVIDIA MPS. GKE mengirimkan metrik untuk setiap node GPU ke Cloud Monitoring. Metrik node NVIDIA MPS atau berbagi waktu GPU ini berlaku di tingkat node
(node/accelerator/
).
Anda dapat memeriksa metrik berikut untuk setiap node berbagi waktu GPU atau NVIDIA MPS di Cloud Monitoring:
- Siklus tugas (
node/accelerator/duty_cycle
): Persentase waktu selama periode sampel terakhir (10 detik) saat node GPU sedang diproses secara aktif. Rentang dari 1% sampai 100%. - Penggunaan memori (
node/accelerator/memory_used
): Jumlah memori akselerator yang dialokasikan dalam byte untuk setiap node GPU. - Kapasitas memori (
node/accelerator/memory_total
): Total memori akselerator dalam byte untuk setiap node GPU.
Metrik ini berbeda dengan
metrik untuk GPU reguler yang tidak menggunakan
berbagi waktu atau node MPS NVIDIA.
Metrik untuk
GPU fisik reguler
berlaku di level
container (container/accelerator
) dan
tidak dikumpulkan untuk container yang dijadwalkan di GPU yang menggunakan berbagi waktu GPU
atau MPS NVIDIA.
Langkah berikutnya
- Pelajari cara berbagi GPU dengan beberapa workload menggunakan berbagi waktu GPU.
- Pelajari cara berbagi GPU dengan beberapa workload menggunakan NVIDIA MPS.
- Pelajari cara menjalankan GPU multi-instance.
- Pelajari GPU lebih lanjut
- Untuk mengetahui informasi selengkapnya tentang preemption komputasi untuk GPU NVIDIA, lihat Panduan Penyesuaian NVIDIA Pascal.