Alokasi resource dinamis adalah API Kubernetes yang memungkinkan Anda meminta dan berbagi resource, seperti GPU, di seluruh Pod dan container dalam cluster bare metal Google Distributed Cloud Anda. Driver pihak ketiga mengelola perangkat ini, dan Kubernetes mengalokasikannya secara dinamis, seperti volume penyimpanan. Workload AI Anda tidak perlu menargetkan node tertentu atau meminta jumlah perangkat terpasang yang tepat. Dokumen ini menunjukkan cara mengonfigurasi workload GPU untuk menggunakan alokasi resource dinamis.
Sebelum memulai
Sebelum mengonfigurasi workload GPU untuk menggunakan alokasi resource dinamis, pastikan 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 Operator GPU NVIDIA yang dipaketkan.
- Jika Anda menggunakan operator GPU NVIDIA yang dipaketkan, versi 1.33.0 atau yang lebih baru akan mengaktifkan Container Device Interface (CDI) secara default.
Jika Anda menggunakan operator GPU yang diinstal secara manual, pastikan CDI diaktifkan di
ClusterPolicy. - Anda telah mengikuti petunjuk di Driver DRA NVIDIA untuk GPU guna menginstal driver DRA NVIDIA di semua node yang terpasang 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 dalam 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
Namespacebaru di cluster Anda:cat <<EOF | kubectl apply --kubeconfig=CLUSTER_KUBECONFIG -f - apiVersion: v1 kind: Namespace metadata: name: NAMESPACE_NAME EOFGanti kode berikut:
CLUSTER_KUBECONFIG: jalur file kubeconfig cluster pengguna.NAMESPACE_NAMEdengan nama untuk namespace alokasi resource dinamis Anda.
Buat
ResourceClaimuntuk 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 EOFGanti
RESOURCE_CLAIM_NAMEdengan nama klaim resource Anda untuk permintaan GPU.Buat workload yang merujuk ke
ResourceClaimyang dibuat pada langkah sebelumnya.Contoh workload berikut menunjukkan cara mereferensikan
ResourceClaimbernamagpu-claimdi namespacedra-test. Container di Podpod1adalah sampel arsitektur perangkat terpadu komputasi (CUDA) NVIDIA yang dirancang untuk menjalankan workload CUDA di GPU. Jika Podpod1berhasil 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
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
Batasan
Pertimbangkan batasan berikut saat Anda menggunakan alokasi resource dinamis:
Saat Anda menggunakan OS RHEL dengan versi operator GPU NVIDIA yang didukung, Container Device Interface (CDI) akan menangani injeksi perangkat dan pelabelan SELinux secara otomatis. Anda tidak perlu menggunakan konfigurasi kebijakan SELinux manual atau menetapkan pod
securityContext.Fitur ini menggunakan grup API
resource.k8s.io/v1beta1, yang berbeda dari grup Kubernetes API open source untuk fitur ini,resource.k8s.io/v1. Grup API open sourcev1menyediakan lebih banyak fitur dan stabilitas yang lebih baik daripada grup APIv1beta1.
Langkah berikutnya
- Baca dokumentasi Kubernetes untuk mengetahui informasi selengkapnya tentang alokasi resource dinamis.
- Pelajari cara menyajikan LLM pihak ketiga di bare metal.