Halaman ini menjelaskan cara mengonfigurasi workload GPU untuk menggunakan alokasi resource dinamis di cluster bare metal Google Distributed Cloud Anda. Alokasi resource dinamis adalah Kubernetes API yang memungkinkan Anda meminta dan membagikan resource generik, seperti GPU, di antara Pod dan container. Driver pihak ketiga mengelola resource ini.
Dengan alokasi resource dinamis, Kubernetes menjadwalkan Pod berdasarkan konfigurasi perangkat yang dirujuk. Operator aplikasi tidak perlu memilih node tertentu dalam workload mereka dan tidak perlu memastikan bahwa setiap Pod meminta jumlah perangkat yang terpasang ke node tersebut. Proses ini mirip dengan mengalokasikan volume untuk penyimpanan.
Kemampuan ini membantu Anda menjalankan workload AI dengan mengalokasikan resource GPU secara dinamis dan tepat dalam cluster bare metal, sehingga meningkatkan pemanfaatan resource dan performa untuk workload yang berat.
Halaman ini ditujukan untuk Admin, arsitek, dan Operator yang mengelola siklus proses infrastruktur teknologi dasar. Untuk mempelajari lebih lanjut peran umum dan contoh tugas yang kami referensikan dalam konten, lihat Peran dan tugas pengguna GKE Enterprise umum. Google Cloud
Sebelum memulai
Sebelum mengonfigurasi workload GPU untuk menggunakan alokasi resource dinamis, verifikasi bahwa prasyarat berikut terpenuhi:
- Cluster bare metal Anda menggunakan versi 1.33.0 atau yang lebih baru.
- Sistem operasi Anda adalah Ubuntu 22.04 atau Red Hat Enterprise Linux (RHEL) 9.4.
- Anda telah mengupdate cluster untuk mengaktifkan alokasi resource dinamis seperti yang dijelaskan dalam Mengaktifkan alokasi resource dinamis.
- Anda memiliki setidaknya satu mesin node dengan GPU terpasang dan driver GPU NVIDIA terinstal. Untuk mengetahui informasi selengkapnya, lihat Menginstal atau meng-uninstal NVIDIA GPU Operator yang dibundel.
- Anda telah mengikuti petunjuk di Driver NVIDIA DRA untuk GPU untuk menginstal driver NVIDIA DRA di semua node yang terhubung ke GPU.
Membuat workload GPU yang menggunakan alokasi resource dinamis
Agar workload GPU Anda dapat memanfaatkan alokasi resource dinamis untuk meminta GPU, workload tersebut harus berada di namespace bersama dengan ResourceClaim
yang menjelaskan permintaan alokasi perangkat GPU. Workload Anda harus mereferensikan ResourceClaim
agar
Kubernetes dapat menetapkan resource GPU.
Langkah-langkah berikut menyiapkan lingkungan tempat workload Anda menggunakan alokasi resource dinamis untuk meminta resource GPU:
Untuk membuat resource yang terkait dengan alokasi resource dinamis, buat
Namespace
baru di cluster Anda:cat <<EOF | kubectl apply --kubeconfig=CLUSTER_KUBECONFIG -f - apiVersion: v1 kind: Namespace metadata: name: NAMESPACE_NAME EOF
Ganti kode berikut:
CLUSTER_KUBECONFIG
: jalur file kubeconfig cluster pengguna.NAMESPACE_NAME
dengan nama untuk namespace alokasi resource dinamis Anda.
Buat
ResourceClaim
untuk menjelaskan permintaan akses GPU:cat <<EOF | kubectl apply --kubeconfig=CLUSTER_KUBECONFIG -f - apiVersion: resource.k8s.io/v1beta1 kind: ResourceClaim metadata: namespace: NAMESPACE_NAME name: RESOURCE_CLAIM_NAME spec: devices: requests: - name: gpu deviceClassName: gpu.nvidia.com EOF
Ganti
RESOURCE_CLAIM_NAME
dengan nama klaim resource Anda untuk permintaan GPU.Buat workload yang mereferensikan
ResourceClaim
yang dibuat pada langkah sebelumnya.Contoh workload berikut menunjukkan cara mereferensikan
ResourceClaim
bernamagpu-claim
di namespacedra-test
. Container dipod1
Pod adalah sampel Compute Unified Device Architecture (CUDA) NVIDIA yang dirancang untuk menjalankan workload CUDA di GPU. Jika Podpod1
berhasil diselesaikan, hal ini menunjukkan bahwa kemampuan alokasi resource dinamis berfungsi dengan baik dan alokasi resource dinamis siap mengelola resource GPU di cluster Anda.Ubuntu
Gunakan perintah berikut untuk menerapkan manifes ke cluster Anda:
cat <<EOF | kubectl apply --kubeconfig=CLUSTER_KUBECONFIG -f - apiVersion: v1 kind: Pod metadata: name: pod1 namespace: dra-test spec: restartPolicy: OnFailure resourceClaims: - name: gpu resourceClaimName: gpu-claim containers: - name: ctr0 image: nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda12.5.0 resources: claims: - name: gpu - name: ctr1 image: nvcr.io/nvidia/k8s/cuda-sample:devicequery resources: claims: - name: gpu EOF
RHEL
Download dan instal modul kebijakan SELinux
nvidia_container_t
, yang diperlukan untuk mengakses GPU.Untuk mengetahui informasi selengkapnya, lihat repositori dgx-selinux NVIDIA.
Gunakan perintah berikut untuk menerapkan manifes ke cluster Anda:
cat <<EOF | kubectl apply --kubeconfig=CLUSTER_KUBECONFIG -f - apiVersion: v1 kind: Pod metadata: name: pod1 namespace: dra-test spec: restartPolicy: OnFailure securityContext: seLinuxOptions: type: nvidia_container_t resourceClaims: - name: gpu resourceClaimName: gpu-claim containers: - name: ctr0 image: nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda12.5.0 resources: claims: - name: gpu - name: ctr1 image: nvcr.io/nvidia/k8s/cuda-sample:devicequery resources: claims: - name: gpu EOF
Batasan
Pertimbangkan batasan berikut saat Anda menggunakan alokasi resource dinamis:
Saat Anda menggunakan OS RHEL, kebijakan SELinux dapat mengganggu container yang mencoba mengakses GPU. Untuk mengetahui informasi selengkapnya, lihat Cara menggunakan GPU dalam container di RHEL 8 bare metal.
Fitur ini menggunakan grup API
resource.k8s.io/v1beta1
, yang berbeda dengan grup API Kubernetes open source untuk fitur ini,resource.k8s.io/v1
. Grup API open sourcev1
menyediakan lebih banyak fitur dan stabilitas yang lebih baik daripada grup APIv1beta1
.
Langkah berikutnya
- Lihat dokumentasi Kubernetes untuk mengetahui informasi selengkapnya tentang alokasi resource dinamis.
- Pelajari cara menayangkan LLM pihak ketiga di bare metal.