Halaman ini menunjukkan cara meminta GPU untuk mempercepat tugas di beban kerja Autopilot Google Kubernetes Engine (GKE). Halaman ini juga menjelaskan cara Autopilot menjalankan GPU, cara model harga Anda berubah bergantung pada versi GKE, cara menetapkan permintaan dan batas resource Pod, serta cara memantau workload GPU.
Halaman ini ditujukan untuk admin dan operator Platform serta spesialis Data dan AI yang ingin meminta GPU untuk beban kerja yang menjalankan tugas seperti pelatihan atau inferensi machine learning (ML). Untuk mempelajari lebih lanjut peran, tanggung jawab, dan contoh tugas umum yang kami referensikan dalam konten, lihat Peran dan tugas pengguna umum GKE Enterprise. Google Cloud
Sebelum melanjutkan, pastikan Anda memahami konsep berikut:
Memilih akselerator di Pod
Autopilot menggunakan class komputasi Akselerator khusus untuk menjalankan Pod GPU. Dengan class komputasi ini, GKE menempatkan Pod di node GPU, sehingga Pod memiliki akses ke kemampuan lanjutan di virtual machine (VM). Untuk menggunakan class ini dalam workload GPU, lakukan salah satu tindakan berikut, bergantung pada versi GKE Anda:
- Versi 1.29.4-gke.1427000 dan yang lebih baru: Minta GPU dalam manifes workload Anda. Anda juga dapat menggunakan kemampuan berbagi GPU, seperti berbagi waktu. GKE tidak mengubah manifes workload Anda untuk menambahkan pemilih node atau anotasi untuk class Akselerator.
- Versi 1.29 hingga, tetapi tidak termasuk, versi 1.29.4-gke.142700: Tentukan pemilih node
cloud.google.com/compute-class: Accelerator
dalam manifes Pod Anda dan minta GPU. Jika menentukan pemilih node ini, Anda juga dapat menggunakan kemampuan berbagi GPU, seperti berbagi waktu. - Versi 1.28.9-gke.1069000 hingga, tetapi tidak termasuk, versi 1.29: Tentukan pemilih node
cloud.google.com/compute-class: Accelerator
dalam manifes Pod Anda bersama dengan pemilih GPU. Jika menentukan pemilih node ini, Anda juga dapat menggunakan kemampuan berbagi GPU, seperti berbagi waktu.
Class komputasi Accelerator tidak didukung pada versi yang lebih lama dari 1.28.9-gke.1069000. Sebagai gantinya, GKE memperlakukan Pod GPU pada versi tersebut dengan cara yang sama seperti Pod Autopilot lainnya, dan Anda akan ditagih untuk permintaan resource. Untuk mengetahui detailnya, lihat Harga.
Kompatibilitas akselerator dengan kemampuan GKE
Tabel berikut menunjukkan kemampuan GKE yang kompatibel untuk setiap metode pemilihan akselerator di GKE Autopilot:
Accelerator class compute dipilih |
Kompatibilitas dengan kemampuan GKE |
---|---|
|
|
|
Harga
Tabel berikut menjelaskan cara model penagihan yang digunakan GKE bergantung pada versi GKE cluster Anda. Untuk mengetahui deskripsi model penagihan GKE Autopilot, lihat Harga Autopilot.
Versi GKE | Harga |
---|---|
1.29.4-gke.1427000 dan yang lebih baru | Model penagihan berbasis node. Semua Pod GPU menggunakan class komputasi Akselerator. Anda akan ditagih untuk hardware Compute Engine yang menjalankan workload GPU Anda, ditambah premium Autopilot untuk pengelolaan dan skalabilitas node. Untuk mengetahui detailnya, lihat Harga mode Autopilot. |
Dari versi 1.29 hingga, tetapi tidak termasuk, versi 1.29.4-gke.1427000 | Model penagihan bergantung pada pemilih node yang Anda tentukan, sebagai berikut:
Anda hanya dapat menggunakan fitur seperti GPU multi-instance atau berbagi waktu jika
Anda secara eksplisit menentukan
pemilih node Untuk mengetahui detailnya, lihat bagian "Pod yang memiliki persyaratan hardware tertentu" di Harga Kubernetes Engine. |
Dari versi 1.28.6-gke.1095000 hingga, tetapi tidak termasuk, versi 1.29 | Model penagihan berbasis node, terlepas dari apakah Anda menentukan kelas komputasi Akselerator dalam manifes Pod Anda atau tidak. Anda hanya dapat menggunakan fitur seperti GPU multi-instance atau berbagi waktu jika
Anda secara eksplisit menentukan
pemilih node Untuk mengetahui detailnya, lihat bagian "Pod yang memiliki persyaratan hardware tertentu" di Harga Kubernetes Engine. |
Versi yang lebih lama dari 1.28.6-gke.1095000 | Model penagihan berbasis pod. Anda ditagih berdasarkan permintaan resource Pod GPU. Untuk mengetahui detailnya, lihat bagian "Pod yang memiliki persyaratan hardware tertentu" di Harga Kubernetes Engine. |
Perhatikan pertimbangan harga berikut untuk GPU Autopilot:
Semua node GPU A100 (80 GB) menggunakan SSD lokal untuk boot disk node dengan ukuran tetap berdasarkan jumlah GPU. Anda akan ditagih secara terpisah untuk SSD Lokal yang terpasang. Harga ini tidak berlaku untuk GPU A100 (40 GB).
Harga GKE Sandbox sama dengan harga Autopilot default. Untuk mempelajari lebih lanjut cara membuat sandbox pada workload akselerator, lihat GKE Sandbox dan memulai GKE Sandbox.
Sebelum memulai
Sebelum memulai, pastikan Anda telah menjalankan tugas berikut:
- Aktifkan Google Kubernetes Engine API. Aktifkan Google Kubernetes Engine API
- Jika ingin menggunakan Google Cloud CLI untuk tugas ini,
instal lalu
lakukan inisialisasi
gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan
gcloud components update
.
Pastikan Anda memiliki cluster GKE Autopilot yang menjalankan salah satu versi berikut:
- Kelas komputasi akselerator: Versi patch 1.28 apa pun yang dimulai dengan
1.28.6-gke.1095000
- GPU NVIDIA B200 (180 GB): 1.32.2-gke.1422000 atau yang lebih baru
- GPU NVIDIA H200 (141 GB): 1.31.4-gke.1183000 atau yang lebih baru
- GPU NVIDIA H100 Mega (80 GB): 1.28.9-gke.1250000 atau yang lebih baru, dan 1.29.4-gke.1542000 atau yang lebih baru
- GPU NVIDIA H100 (80 GB): 1.28.6-gke.1369000 atau yang lebih baru, dan 1.29.1-gke.1575000 atau yang lebih baru
- Beberapa Pod GPU per VM: 1.29.2-gke.1355000 atau yang lebih baru
Tidak ada pilihan class komputasi:
- GPU NVIDIA L4: 1.28.3-gke.1203000 atau yang lebih baru
- GPU NVIDIA A100 (80 GB): 1.27 atau yang lebih baru
- Kelas komputasi akselerator: Versi patch 1.28 apa pun yang dimulai dengan
1.28.6-gke.1095000
Pastikan Anda memiliki kuota GPU yang cukup yang tersedia di project Anda. Anda harus memiliki kuota GPU Compute Engine yang cukup untuk model GPU yang ingin Anda buat di setiap region. Jika Anda memerlukan kuota GPU tambahan, minta penyesuaian kuota.
Batasan
- GPU berbagi waktu dan GPU multi-instance tersedia dengan Autopilot di GKE versi 1.29.3-gke.1093000 dan yang lebih baru.
- Ketersediaan GPU bergantung pada Google Cloud region cluster Autopilot dan kuota GPU Anda. Untuk menemukan model GPU berdasarkan region atau zona, lihat Ketersediaan region dan zona GPU.
- Untuk GPU NVIDIA A100 (80 GB), Anda akan dikenai harga tetap untuk SSD Lokal yang terpasang ke node, terlepas dari apakah Pod Anda menggunakan kapasitas tersebut atau tidak.
- Untuk versi GKE sebelum 1.29.2-gke.1355000, jika Anda secara eksplisit meminta node GPU tertentu yang sudah ada untuk Pod, Pod harus menggunakan semua resource GPU pada node tersebut. Misalnya, jika node yang ada memiliki 8 GPU dan container Pod Anda meminta total 4 GPU, Autopilot akan menolak Pod.
- Untuk GKE versi 1.29.2-gke.1355000 atau yang lebih baru, jika Anda ingin beberapa pod GPU cocok ke dalam satu node, jumlah permintaan GPU untuk pod tersebut harus kurang dari atau sama dengan jumlah resource GPU yang terpasang ke node tersebut. Misalnya, node dengan
gke-accelerator-count
4 dapat menampung hingga empat Pod yang masing-masing meminta satu GPU.
Menempatkan beberapa Pod di satu node GPU berguna dalam situasi seperti berikut:
- Anda memiliki reservasi kapasitas untuk jenis mesin Akselerator besar dan menjalankan beban kerja GPU tunggal, sehingga men-deploy satu Pod per node akan menyia-nyiakan GPU lain di mesin tersebut
- Anda memiliki workload GPU yang harus berjalan di host yang sama
Dalam situasi ini, sebaiknya Anda menggunakan semua GPU di node dengan memastikan bahwa jumlah permintaan resource GPU Pod di node sama dengan jumlah GPU yang terpasang ke node.
Meminta GPU di container Anda
Guna meminta resource GPU untuk container Anda, tambahkan kolom berikut ke spesifikasi Pod Anda.
Bergantung pada persyaratan workload, Anda dapat secara opsional menghilangkan pemilih
cloud.google.com/gke-accelerator-count
.
apiVersion: v1
kind: Pod
metadata:
name: my-gpu-pod
spec:
# Optional: Use GKE Sandbox
# runtimeClassName: gvisor
nodeSelector:
cloud.google.com/gke-accelerator: GPU_TYPE
cloud.google.com/gke-accelerator-count: "GPU_COUNT"
containers:
- name: my-gpu-container
image: nvidia/cuda:11.0.3-runtime-ubuntu20.04
command: ["/bin/bash", "-c", "--"]
args: ["while true; do sleep 600; done;"]
resources:
limits:
nvidia.com/gpu: GPU_QUANTITY
Ganti kode berikut:
GPU_TYPE
: jenis hardware GPU. Nilai yang diperbolehkan adalah sebagai berikut:nvidia-b200
: NVIDIA B200 (180GB)nvidia-h200-141gb
: NVIDIA H200 (141GB)nvidia-h100-mega-80gb
: NVIDIA H100 Mega (80GB)nvidia-h100-80gb
: NVIDIA H100 (80GB)nvidia-a100-80gb
: NVIDIA A100 (80GB)nvidia-tesla-a100
: NVIDIA A100 (40GB)nvidia-l4
: NVIDIA L4nvidia-tesla-t4
: NVIDIA T4
GPU_COUNT
: jumlah total GPU yang tersedia untuk dipasang ke node. Harus lebih besar dari atau sama denganGPU_QUANTITY
dan jumlah GPU yang didukung untuk jenis GPU yang Anda pilih. Jika Anda menghapus nodeSelector ini, Autopilot akan menempatkan satu Pod di setiap node GPU.GPU_QUANTITY
: jumlah GPU yang akan dialokasikan ke container. Harus kurang dari atau sama denganGPU_COUNT
dan jumlah GPU yang didukung untuk jenis GPU yang Anda pilih.runtimeClassname: gvisor
Opsional: setelan yang memungkinkan Anda menjalankan Pod ini di GKE Sandbox. Untuk menggunakannya, hapus komentar pada baris ini. Untuk mempelajari lebih lanjut, lihat GKE Sandbox.
Untuk mengetahui detail tentang cara penagihan penggunaan akselerator dalam mode Autopilot, lihat bagian Harga.
Anda harus menentukan jenis GPU dan jumlah GPU di spesifikasi Pod. Jika Anda menghapus salah satu nilai ini, Autopilot akan menolak Pod Anda.
Saat Anda men-deploy manifes ini, Autopilot akan otomatis menginstal driver NVIDIA default untuk versi GKE node. Pada versi 1.29.2-gke.1108000 dan yang lebih baru, Anda dapat memilih untuk menginstal versi driver terbaru untuk versi GKE tersebut dengan menambahkan pemilih node berikut ke manifes Anda:
spec:
nodeSelector:
cloud.google.com/gke-gpu-driver-version: "DRIVER_VERSION"
Ganti DRIVER_VERSION
dengan salah satu nilai berikut:
default
- driver default yang stabil untuk versi GKE node Anda. Jika Anda menghapus nodeSelector dalam manifes, ini adalah opsi defaultnya.latest
- versi driver terbaru yang tersedia untuk versi GKE node Anda.
Meminta CPU dan memori untuk Pod GPU Autopilot
Saat menentukan Pod GPU, Anda juga harus meminta resource CPU dan memori agar container Anda berperforma seperti yang diharapkan. Autopilot menerapkan jumlah minimum, maksimum, dan default CPU dan memori tertentu berdasarkan jenis dan jumlah GPU. Jika Anda menjalankan beberapa Pod GPU pada satu node, tentukan CPU dan memori, atau secara default akan menggunakan seluruh kapasitas node. Untuk mengetahui detailnya, lihat Permintaan resource di Autopilot.
Spesifikasi Pod Anda akan terlihat seperti contoh berikut, yang meminta empat GPU T4:
apiVersion: v1
kind: Pod
metadata:
name: t4-pod
spec:
# Optional: Use GKE Sandbox
# runtimeClassName: gvisor
nodeSelector:
cloud.google.com/gke-accelerator: "nvidia-tesla-t4"
containers:
- name: t4-container-1
image: nvidia/cuda:11.0.3-runtime-ubuntu20.04
command: ["/bin/bash", "-c", "--"]
args: ["while true; do sleep 600; done;"]
resources:
limits:
nvidia.com/gpu: 3
cpu: "54"
memory: "54Gi"
requests:
cpu: "54"
memory: "54Gi"
- name: t4-container-2
image: nvidia/cuda:11.0.3-runtime-ubuntu20.04
command: ["/bin/bash", "-c", "--"]
args: ["while true; do sleep 600; done;"]
resources:
limits:
nvidia.com/gpu: 1
cpu: "18"
memory: "18Gi"
requests:
cpu: "18"
memory: "18Gi"
runtimeClassname: gvisor
Opsional: setelan yang memungkinkan Anda menjalankan Pod ini di GKE Sandbox. Untuk menggunakannya, hapus komentar pada baris ini. Untuk mempelajari lebih lanjut, lihat GKE Sandbox.
Manifes ini menentukan limits
untuk sumber daya CPU dan memori. Jika Anda menghapus
limits
untuk CPU atau memori di GKE versi 1.29.2-gke.1060000 dan
yang lebih baru, GKE akan memberikan class QoS Burstable
ke Pod Anda dan memungkinkan
Pod Anda menggunakan resource yang tidak digunakan dari jumlah permintaan resource di
node. Untuk mengetahui informasi selengkapnya, lihat
Mengonfigurasi bursting Pod di GKE.
Meminta penyimpanan sementara untuk Pod GPU Autopilot
Anda juga dapat meminta penyimpanan sementara di Pod yang memerlukan penyimpanan jangka pendek. Penyimpanan sementara maksimum yang tersedia dan jenis hardware penyimpanan yang digunakan bergantung pada jenis dan jumlah GPU yang diminta Pod. Anda dapat menggunakan SSD Lokal untuk penyimpanan efemeral jika menggunakan GPU NVIDIA L4, class komputasi Akselerator, dan menjalankan patch GKE versi 1.28.6-gke.1369000 dan yang lebih baru atau 1.29.1-gke.1575000 dan yang lebih baru.
Untuk menggunakan SSD Lokal untuk penyimpanan sementara, tambahkan nodeSelector
cloud.google.com/gke-ephemeral-storage-local-ssd: "true"
ke manifes workload Anda. Lihat contoh manifes di Menggunakan penyimpanan efemeral yang didukung SSD Lokal dengan cluster Autopilot.
GPU NVIDIA H100 (80 GB) dan GPU NVIDIA A100 (80 GB) selalu menggunakan SSD Lokal untuk penyimpanan sementara, dan Anda tidak dapat menentukan pemilih node ini untuk GPU tersebut.
Memverifikasi alokasi GPU yang di-deploy
Untuk memeriksa apakah beban kerja GPU yang di-deploy memiliki GPU yang diminta, jalankan perintah berikut:
kubectl describe node NODE_NAME
Ganti NODE_NAME
dengan nama node tempat Pod dijadwalkan.
Outputnya mirip dengan hal berikut ini:
apiVersion: v1
kind: Node
metadata:
...
labels:
...
cloud.google.com/gke-accelerator: nvidia-tesla-t4
cloud.google.com/gke-accelerator-count: "1"
cloud.google.com/machine-family: custom-48
...
...
Memeriksa versi driver GPU
Dalam cluster Autopilot, GKE otomatis menginstal driver perangkat NVIDIA di semua node GPU. Untuk menemukan versi driver yang diinstal GKE di cluster Anda, jalankan perintah berikut:
kubectl logs --selector=k8s-app=nvidia-gpu-device-plugin \
--container="nvidia-gpu-device-plugin" \
--tail=-1 \
--namespace=kube-system | grep Driver
Outputnya mirip dengan hal berikut ini:
I1206 18:37:08.251742 5851 metrics.go:144] nvml initialized successfully. Driver version: 535.104.12
Cara kerja alokasi GPU di Autopilot
Setelah Anda meminta jenis GPU dan jumlah untuk container di dalam Pod dan men-deploy Pod, hal berikut akan terjadi:
- Jika tidak ada node GPU yang dapat dialokasikan, Autopilot akan menyediakan node GPU baru untuk menjadwalkan Pod. Autopilot menginstal driver NVIDIA untuk memfasilitasi hardware secara otomatis.
- Autopilot menambahkan taint node ke node GPU dan menambahkan toleransi yang sesuai ke Pod. Hal ini mencegah GKE menjadwalkan Pod lain pada node GPU.
Autopilot menempatkan tepat satu Pod GPU di setiap node GPU, serta beban kerja yang dikelola GKE yang berjalan di semua node, dan DaemonSet yang dikonfigurasi untuk menoleransi semua taint node.
Menjalankan DaemonSets pada setiap node
Anda mungkin ingin menjalankan DaemonSets pada setiap node, bahkan node dengan taint yang diterapkan. Misalnya, beberapa agen logging dan pemantauan harus berjalan di setiap node dalam cluster. Anda dapat mengonfigurasi DaemonSets tersebut untuk mengabaikan taint node sehingga GKE menempatkan beban kerja tersebut di setiap node.
Untuk menjalankan DaemonSets pada setiap node dalam cluster, termasuk node GPU, tambahkan toleransi berikut ke spesifikasi Anda:
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: logging-agent
spec:
tolerations:
- key: ""
operator: "Exists"
effect: ""
containers:
- name: logging-agent-v1
image: IMAGE_PATH
Ganti IMAGE_PATH
dengan jalur ke image container.
Untuk menjalankan DaemonSets pada node GPU tertentu di cluster Anda, tambahkan hal berikut ini ke spesifikasi Anda:
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: logging-agent
spec:
nodeSelector:
cloud.google.com/gke-accelerator: "GPU_TYPE"
tolerations:
- key: ""
operator: "Exists"
effect: ""
containers:
- name: logging-agent-v1
image: IMAGE_PATH
Ganti GPU_TYPE
dengan jenis GPU di node target Anda. Ini dapat berupa salah satu dari berikut ini:
nvidia-b200
: NVIDIA B200 (180GB)nvidia-h200-141gb
: NVIDIA H200 (141GB)nvidia-h100-mega-80gb
: NVIDIA H100 Mega (80GB)nvidia-h100-80gb
: NVIDIA H100 (80GB)nvidia-a100-80gb
: NVIDIA A100 (80GB)nvidia-tesla-a100
: NVIDIA A100 (40GB)nvidia-l4
: NVIDIA L4nvidia-tesla-t4
: NVIDIA T4
Kasus penggunaan GPU di Autopilot
Anda dapat mengalokasikan GPU ke container di Pod Autopilot untuk memfasilitasi beban kerja seperti berikut:
- Inferensi machine learning (ML)
- Pelatihan ML
- Rendering
Jumlah GPU yang didukung
Saat meminta GPU dalam spesifikasi Pod, Anda harus menggunakan jumlah berikut berdasarkan jenis GPU:
Kuantitas GPU | |
---|---|
NVIDIA L4nvidia-l4 |
1, 2, 4, 8 |
NVIDIA T4 nvidia-tesla-t4 |
1, 2, 4 |
NVIDIA A100 (40GB)nvidia-tesla-a100 |
1, 2, 4, 8, 16 |
NVIDIA A100 (80GB)nvidia-a100-80gb |
1, 2, 4, 8 |
NVIDIA H100 (80GB)nvidia-h100-80gb |
1, 2, 4, 8 |
NVIDIA H100 Mega (80GB)nvidia-h100-mega-80gb |
8 |
NVIDIA H200 (141GB)nvidia-h200-141gb |
8 |
NVIDIA B200 (180GB)nvidia-b200 |
8 |
Memantau performa workload node GPU
Jika cluster GKE Anda telah mengaktifkan metrik sistem, metrik berikut akan tersedia di Cloud Monitoring untuk memantau performa workload GPU Anda:
- Siklus Tugas (
container/accelerator/duty_cycle
): Persentase waktu selama periode sampel terakhir (10 detik) di mana akselerator secara aktif berproses. Antara 1 dan 100. - Penggunaan Memori (
container/accelerator/memory_used
): Jumlah memori akselerator yang dialokasikan dalam byte. - Kapasitas Memori (
container/accelerator/memory_total
): Total memori akselerator dalam byte.
Metrik ini berlaku di tingkat container (container/accelerator
) dan tidak dikumpulkan untuk container yang dijadwalkan di GPU yang menggunakan berbagi waktu GPU atau NVIDIA MPS.
Anda dapat menggunakan dasbor standar untuk memantau cluster dengan node GPU. Untuk mengetahui informasi selengkapnya, lihat Melihat metrik kemampuan observasi. Untuk informasi umum tentang pemantauan cluster dan resource-nya, lihat Observability for GKE.
Melihat metrik penggunaan untuk beban kerja
Anda dapat melihat metrik penggunaan GPU workload dari dasbor Workloads di konsol Google Cloud .
Untuk melihat penggunaan GPU workload Anda, lakukan langkah-langkah berikut:
Buka halaman Workloads di konsol Google Cloud .
Buka Workloads- Pilih beban kerja
Dasbor Workload menampilkan diagram untuk penggunaan dan kapasitas memori GPU, serta siklus tugas GPU.
Melihat metrik NVIDIA Data Center GPU Manager (DCGM)
Anda dapat mengumpulkan dan memvisualisasikan metrik NVIDIA DCGM menggunakan Google Cloud Managed Service for Prometheus. Untuk cluster Autopilot, GKE menginstal driver. Untuk cluster Standard, Anda harus menginstal driver NVIDIA.
Untuk mengetahui petunjuk cara men-deploy paket DCGM yang dikelola GKE, lihat Mengumpulkan dan melihat metrik NVIDIA Data Center GPU Manager (DCGM).
Langkah berikutnya
- Pelajari lebih lanjut dukungan GPU di GKE.
- Baca cara kelas komputasi Autopilot dioptimalkan untuk kasus penggunaan khusus.
- Baca tentang cara men-deploy GPU untuk workload batch dengan Dynamic Workload Scheduler.
- Pelajari cara melakukan sandboxing pada workload GPU dengan GKE Sandbox