Mengelola workload GPU

Halaman ini menjelaskan cara mengelola workload unit pemrosesan grafis (GPU) di Google Distributed Cloud terhubung. Untuk memanfaatkan fungsi ini, Anda harus memiliki konfigurasi hardware yang terhubung ke Distributed Cloud yang berisi GPU. Untuk mengetahui informasi selengkapnya, lihat Merencanakan konfigurasi hardware.

Workload yang terhubung ke Distributed Cloud dapat berjalan di container dan di virtual machine:

  • Workload GPU yang berjalan di container. Semua resource GPU di cluster Distributed Cloud terhubung Anda awalnya dialokasikan untuk workload yang berjalan di container. Driver GPU untuk menjalankan workload berbasis GPU yang di-container disertakan dalam Distributed Cloud terhubung. Dalam setiap container, library GPU dipasang di /opt/nvidia.

  • Workload GPU yang berjalan di mesin virtual. Untuk menjalankan workload berbasis GPU di virtual machine, Anda harus mengalokasikan resource GPU di target node terhubung Distributed Cloud ke virtual machine, seperti yang dijelaskan di halaman ini. Tindakan ini akan melewati driver GPU bawaan dan meneruskan GPU langsung ke mesin virtual. Anda harus menginstal driver GPU yang kompatibel secara manual di sistem operasi tamu setiap mesin virtual. Anda juga harus mengamankan semua lisensi yang diperlukan untuk menjalankan driver GPU khusus di virtual machine Anda.

Untuk mengonfirmasi bahwa GPU ada di node yang terhubung ke Distributed Cloud, verifikasi bahwa node memiliki label vm.cluster.gke.io.gpu=true. Jika label tidak ada di node, berarti tidak ada GPU yang diinstal di mesin fisik yang terhubung ke Distributed Cloud yang sesuai.

Mengalokasikan resource GPU

Secara default, semua resource GPU di setiap node dalam cluster dialokasikan ke workload dalam container. Untuk menyesuaikan alokasi resource GPU di setiap node, selesaikan langkah-langkah di bagian ini.

Mengonfigurasi alokasi resource GPU

  1. Untuk mengalokasikan resource GPU pada node yang terhubung ke Distributed Cloud, gunakan perintah berikut untuk mengedit resource kustom GPUAllocation pada node target:

    kubectl edit gpuallocation NODE_NAME --namespace vm-system

    Ganti NODE_NAME dengan nama target node Distributed Cloud.

    Pada contoh berikut, output perintah menunjukkan alokasi resource GPU default pabrik. Secara default, semua resource GPU dialokasikan ke workload (pod) dalam container, dan tidak ada resource GPU yang dialokasikan ke workload (vm) virtual machine:

    ...
    spec:
      pod:   2  # Number of GPUs allocated for container workloads
      vm:    0  # Number of GPUs allocated for VM workloads
    
  2. Tetapkan alokasi resource GPU Anda sebagai berikut:

    • Untuk mengalokasikan resource GPU ke workload yang di-container, naikkan nilai kolom pod dan turunkan nilai kolom vm dengan jumlah yang sama.
    • Untuk mengalokasikan resource GPU ke workload virtual machine, tingkatkan nilai kolom vm dan kurangi nilai kolom pod dengan jumlah yang sama.

    Jumlah total resource GPU yang dialokasikan tidak boleh melebihi jumlah GPU yang diinstal pada mesin yang terhubung ke Distributed Cloud fisik tempat node berjalan; jika tidak, node akan menolak alokasi yang tidak valid.

    Dalam contoh berikut, dua resource GPU telah dialokasikan ulang dari beban kerja yang di-container (pod) ke beban kerja virtual machine (vm):

    ...
    spec:
      pod:   0  # Number of GPUs allocated for container workloads
      vm:    2  # Number of GPUs allocated for VM workloads
    

    Setelah selesai, terapkan resource GPUAllocation yang telah diubah ke cluster Anda dan tunggu hingga statusnya berubah menjadi AllocationFulfilled.

Memeriksa alokasi resource GPU

  • Untuk memeriksa alokasi resource GPU, gunakan perintah berikut:

    kubectl describe gpuallocations NODE_NAME --namespace vm-system

    Ganti NODE_NAME dengan nama target node yang terhubung ke Distributed Cloud.

    Perintah ini menampilkan output yang mirip dengan contoh berikut:

     Name:         mynode1
     ...
     spec:
       node:  mynode1
       pod:   2  # Number of GPUs allocated for container workloads
       vm:    0  # Number of GPUs allocated for VM workloads
     Status:
       Allocated:  true
       Conditions:
         Last Transition Time:  2022-09-23T03:14:10Z
         Message:
         Observed Generation:   1
         Reason:                AllocationFulfilled
         Status:                True
         Type:                  AllocationStatus
         Last Transition Time:  2022-09-23T03:14:16Z
         Message:
         Observed Generation:   1
         Reason:                DeviceStateUpdated
         Status:                True
         Type:                  DeviceStateUpdated
       Consumption:
         pod:         0/2   # Number of GPUs currently consumed by container workloads
         vm:          0/0   # Number of GPUs currently consumed by VM workloads
       Device Model:  NVIDIA L4
     Events:          <none>
    

Mengonfigurasi container untuk menggunakan resource GPU

Untuk mengonfigurasi container yang berjalan di Distributed Cloud yang terhubung ke penggunaan resource GPU, konfigurasikan spesifikasinya seperti yang ditunjukkan dalam contoh berikut, lalu terapkan ke cluster Anda:

  apiVersion: v1
  kind: Pod
  metadata:
    name: my-gpu-pod
  spec:
    containers:
    - name: my-gpu-container
      image: CUDA_TOOLKIT_IMAGE
      command: ["/bin/bash", "-c", "--"]
      args: ["while true; do sleep 600; done;"]
      env:
      resources:
        requests:
        GPU_MODEL: 2
        limits:
        GPU_MODEL: 2
    nodeSelector:
      kubernetes.io/hostname: NODE_NAME

Ganti kode berikut:

  • CUDA_TOOLKIT_IMAGE: jalur lengkap dan nama image toolkit NVIDIA CUDA. Versi toolkit CUDA harus cocok dengan versi driver NVIDIA yang berjalan di cluster yang terhubung ke Distributed Cloud Anda. Untuk menentukan versi driver NVIDIA Anda, lihat Catatan rilis Distributed Cloud. Untuk menemukan versi toolkit CUDA yang cocok, lihat Kompatibilitas CUDA.
  • NODE_NAME: nama target node yang terhubung ke Distributed Cloud.
  • GPU_MODEL: model GPU NVIDIA yang diinstal di mesin target yang terhubung ke Distributed Cloud. Mulai rilis ini, satu-satunya nilai yang didukung adalah nvidia.com/gpu-pod-NVIDIA_L4 untuk GPU NVIDIA L4.

Mengonfigurasi virtual machine untuk menggunakan resource GPU

Untuk mengonfigurasi virtual machine yang berjalan di Distributed Cloud yang terhubung untuk menggunakan resource GPU, konfigurasikan spesifikasi resource VirtualMachine-nya seperti yang ditunjukkan dalam contoh berikut, lalu terapkan ke cluster Anda:

apiVersion: vm.cluster.gke.io/v1
kind: VirtualMachine
...
spec:
  ...
  gpu:
    model: GPU_MODEL
    quantity: 2

Ganti kode berikut:

  • GPU_MODEL: model GPU NVIDIA yang diinstal di mesin target yang terhubung ke Distributed Cloud. Mulai rilis ini, satu-satunya nilai yang didukung adalah nvidia.com/gpu-pod-NVIDIA_L4 untuk GPU NVIDIA L4.

Langkah berikutnya