Menjalankan GPU di node pool GKE Standard


Halaman ini menunjukkan cara menggunakan akselerator hardware unit pemrosesan grafis (GPU) NVIDIA® di node cluster Google Kubernetes Engine (GKE) Standard. Untuk mengetahui informasi selengkapnya tentang GPU di GKE, silakan melihat Tentang GPU di GKE.

Anda juga dapat menggunakan GPU langsung di Pod Autopilot. Untuk mengetahui petunjuknya, silakan melihat Men-deploy workload GPU di Autopilot.

Ringkasan

Dengan GKE, Anda dapat membuat node pool yang dilengkapi dengan GPU NVIDIA Tesla® K80, P100, P4, V100, T4, L4, dan A100. GPU memberikan daya komputasi untuk mendorong tugas deep learning seperti pengenalan citra, natural language processing, serta tugas intensif komputasi lainnya seperti transcoding video dan pemrosesan gambar.

Anda juga dapat menggunakan GPU dengan Spot VM jika workload Anda dapat menoleransi seringnya gangguan node. Penggunaan Spot VM akan mengurangi harga pengoperasian GPU. Untuk mempelajari lebih lanjut, silakan membaca artikel Menggunakan Spot VM dengan node pool GPU.

Mulai versi 1.29.2-gke.1108000, kini Anda dapat membuat node pool GPU di GKE Sandbox. Untuk mengetahui informasi selengkapnya, lihat GKE Sandbox dan Konfigurasi 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 initialize gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan gcloud components update.

Persyaratan

GPU di GKE memiliki persyaratan berikut:

  • Versi Kubernetes: Untuk node pool yang menggunakan image node Container-Optimized OS, node GPU tersedia di GKE versi 1.9 atau yang lebih baru. Untuk node pool yang menggunakan image node Ubuntu, node GPU tersedia di GKE versi 1.11.3 atau yang lebih baru.
  • Kuota GPU: Anda harus memiliki kuota GPU Compute Engine di zona yang dipilih sebelum Anda dapat membuat node GPU. Untuk memastikan Anda memiliki kuota GPU yang cukup dalam project, silakan melihat Kuota di Konsol Google Cloud.

    Jika memerlukan kuota GPU tambahan, Anda harus meminta kuota GPU di Konsol Google Cloud. Jika Anda sudah memiliki akun penagihan, project Anda akan otomatis menerima kuota setelah Anda mengirimkan permintaan kuota.

  • Driver GPU NVIDIA: Saat membuat cluster atau node pool, Anda dapat memberi tahu GKE agar otomatis menginstal versi driver berdasarkan versi GKE Anda. Jika Anda tidak memberi tahu GKE untuk menginstal driver GPU secara otomatis, Anda harus menginstal driver secara manual.

  • A100 GPU: GPU A100 hanya didukung di jenis mesin a2, dan memerlukan GKE versi 1.18.6-gke.3504 atau yang lebih tinggi. Anda harus memastikan bahwa Anda memiliki kuota yang cukup bagi jenis mesin A2 yang mendasarinya untuk menggunakan GPU A100.

  • GPU L4:

    • Anda harus menggunakan GKE versi 1.22.17-gke.5400 atau yang lebih baru.
    • Versi GKE yang Anda pilih harus menyertakan driver NVIDIA versi 525 atau yang lebih baru di Container-Optimized OS. Jika versi driver 525 atau yang lebih baru bukan versi default atau terbaru di versi GKE, Anda harus menginstal driver yang didukung secara manual di node Anda.

Batasan

Sebelum menggunakan GPU di GKE, perhatikan batasan berikut:

  • Anda tidak dapat menambahkan GPU ke node pool yang sudah ada.
  • Node GPU tidak dapat dimigrasi langsung selama peristiwa pemeliharaan.
  • Jenis GPU yang dapat Anda gunakan bergantung pada seri mesin, seperti berikut:

    Anda harus memastikan bahwa Anda memiliki kuota yang cukup dalam project untuk seri mesin yang sesuai dengan jenis dan kuantitas GPU yang dipilih.

  • GPU tidak didukung dalam node pool Windows Server.

  • Pada GKE versi 1.22 hingga 1.25, autoscaler cluster hanya mendukung peningkatan dan pengecilan skala dasar node dengan GPU L4. Batasan ini tidak berlaku untuk GKE versi 1.26 dan yang lebih baru.

  • Bagi GPU H100, agar dapat menggunakan SSD lokal untuk penyimpanan Pod, Anda harus secara eksplisit menentukan jumlah SSD lokal yang tepat untuk dipasang ke VM A3 dasar dengan menggunakan flag --ephemeral-storage-local-ssd=count=SSD_COUNT untuk penyimpanan sementara atau flag --local-nvme-ssd-block=count=SSD_COUNT untuk blok akses. Jika flag ini dihapus, Anda tidak akan dapat menggunakan SSD Lokal di Pod Anda. Tanda ini hanya diperlukan jika Anda ingin menggunakan SSD Lokal untuk akses data.

    Ukuran mesin yang didukung di GKE adalah a3-highgpu-8g, dan jumlah SSD Lokal yang sesuai adalah 16.

Ketersediaan

GPU tersedia di region dan zona tertentu. Saat meminta kuota GPU, pertimbangkan region tempat Anda ingin menjalankan cluster.

Untuk mengetahui daftar lengkap region dan zona yang berlaku, silakan melihat GPU di Compute Engine.

Anda juga dapat melihat GPU yang tersedia di zona Anda menggunakan Google Cloud CLI. Untuk melihat daftar semua jenis akselerator GPU yang didukung di setiap zona, jalankan perintah berikut:

gcloud compute accelerator-types list

Harga

Untuk informasi harga GPU, silakan melihat tabel harga di halaman GPU Google Cloud.

Kuota GPU

Kuota GPU Anda adalah jumlah total GPU yang dapat dijalankan di project Google Cloud Anda. Untuk membuat cluster dengan GPU, project Anda harus memiliki kuota GPU yang memadai.

Kuota GPU Anda setidaknya harus setara dengan total jumlah GPU yang ingin Anda jalankan di cluster. Jika mengaktifkan penskalaan otomatis cluster, Anda harus meminta kuota GPU minimal setara dengan jumlah maksimum node cluster Anda dikalikan dengan jumlah GPU per node.

Misalnya, jika Anda membuat cluster dengan tiga node yang menjalankan dua GPU per node, project Anda memerlukan setidaknya enam kuota GPU.

Meminta kuota GPU

Untuk meminta kuota GPU, silakan menggunakan Konsol Google Cloud. Untuk mengetahui informasi lebih lanjut tentang permintaan kuota, silakan melihat kuota GPU dalam dokumentasi Compute Engine.

Untuk menelusuri kuota GPU dan mengirimkan permintaan kuota, silakan menggunakan Konsol Google Cloud:

  1. Buka halaman Kuota IAM & Admin di Konsol Google Cloud.

    Buka Kuota

  2. Dalam kotak Filter lakukan tindakan berikut:

    1. Pilih properti Kuota, masukkan nama model GPU, lalu tekan Enter.
    2. (Opsional) Untuk menerapkan filter lanjutan guna mempersempit hasil, pilih properti Dimensi (mis. lokasi), tambahkan nama region atau zona yang Anda gunakan, lalu tekan Enter.
  3. Dari daftar kuota GPU, pilih kuota yang ingin Anda ubah.

  4. Klik Edit Kuota. Formulir permintaan akan terbuka.

  5. Isi kolom New quota limit untuk setiap permintaan kuota.

  6. Isi kolom Deskripsi permintaan dengan detail tentang permintaan Anda.

  7. Klik Next.

  8. Pada dialog Override Confirm, klik Confirm.

  9. Di layar Detail kontak, masukkan nama dan nomor telepon yang mungkin digunakan oleh pemberi persetujuan untuk menyelesaikan permintaan perubahan kuota Anda.

  10. Klik Submit request.

  11. Anda akan menerima email konfirmasi untuk melacak perubahan kuota.

Menjalankan GPU

Untuk menjalankan GPU di cluster GKE Standard, buat node pool dengan GPU yang terpasang. Saat Anda menambahkan node pool GPU ke cluster yang ada yang sudah menjalankan node pool non-GPU, GKE secara otomatis melakukan taint pada node GPU dengan taint node berikut:

  • Kunci: nvidia.com/gpu
  • Efek: NoSchedule

Selain itu, GKE otomatis menerapkan toleransi yang sesuai ke Pod yang meminta GPU dengan menjalankan pengontrol penerimaan ExtendedResourceToleration.

Hal ini menyebabkan hanya Pod yang meminta GPU yang akan dijadwalkan pada node GPU, sehingga memungkinkan penskalaan otomatis yang lebih efisien: node GPU Anda dapat dengan cepat memperkecil skala jika jumlah Pod yang meminta GPU tidak cukup.

Untuk efisiensi biaya, keandalan, dan ketersediaan GPU yang lebih baik di GKE, kami merekomendasikan tindakan berikut:

  • Buat node pool GPU yang terpisah. Untuk setiap node pool, batasi lokasi node ke zona tempat GPU yang Anda inginkan tersedia.
  • Aktifkan penskalaan otomatis di setiap node pool.
  • Gunakan cluster regional untuk meningkatkan ketersediaan dengan mereplikasi panel kontrol Kubernetes di seluruh zona dalam region.
  • Beri tahu GKE untuk otomatis menginstal driver GPU default atau terbaru di node pool, sehingga Anda tidak perlu menginstal dan mengelola versi driver secara manual.

Membuat node pool GPU

Untuk membuat node pool GPU yang terpisah di cluster yang ada, Anda dapat menggunakan Konsol Google Cloud atau Google Cloud CLI. Anda juga dapat menggunakan Terraform untuk menyediakan cluster GKE dan node pool GPU.

Anda dapat memberi tahu GKE untuk otomatis menginstal versi driver NVIDIA default atau terbaru yang sesuai dengan versi OS yang Dioptimalkan untuk Container.

gcloud

Untuk membuat node pool dengan GPU di cluster, jalankan perintah berikut:

gcloud container node-pools create POOL_NAME \
  --accelerator type=GPU_TYPE,count=AMOUNT,gpu-driver-version=DRIVER_VERSION \
  [--machine-type MACHINE_TYPE] \
  --region COMPUTE_REGION --cluster CLUSTER_NAME \
  --node-locations COMPUTE_ZONE1[,COMPUTE_ZONE2] \
  [--enable-autoscaling \
   --min-nodes MIN_NODES \
   --max-nodes MAX_NODES] \
  [--ephemeral-storage-local-ssd=count=SSD_COUNT]

Ganti kode berikut:

  • POOL_NAME: nama yang Anda pilih untuk node pool.
  • GPU_TYPE: jenis GPU. Dapat berupa salah satu dari berikut ini:
    • nvidia-tesla-k80
    • nvidia-tesla-p100
    • nvidia-tesla-p4
    • nvidia-tesla-v100
    • nvidia-tesla-t4
    • nvidia-tesla-a100
    • nvidia-a100-80gb
    • nvidia-l4
    • nvidia-h100-80gb
  • DRIVER_VERSION: versi driver NVIDIA yang akan diinstal. Dapat berupa salah satu dari hal berikut:

    • default: Menginstal versi driver default untuk versi GKE Anda.
    • latest: Instal versi driver terbaru yang tersedia untuk versi GKE Anda. Hanya tersedia untuk node yang menggunakan Container-Optimized OS.
    • disabled: Melewati penginstalan driver otomatis. Anda harus menginstal driver secara manual setelah membuat node pool. Jika Anda menghilangkan gpu-driver-version, ini adalah opsi defaultnya.
  • AMOUNT: jumlah GPU yang akan dipasang ke node di node pool.

  • MACHINE_TYPE: jenis mesin Compute Engine untuk node. Diperlukan untuk jenis GPU berikut:

    Untuk semua GPU lainnya, flag ini bersifat opsional.

  • COMPUTE_REGION: region Compute Engine cluster, seperti us-central1. Pilih region yang memiliki setidaknya satu zona tempat GPU yang diminta tersedia.

  • CLUSTER_NAME: nama cluster tempat node pool akan dibuat.

  • COMPUTE_ZONE1,COMPUTE_ZONE2,[...]: zona spesifik tempat GKE membuat node GPU. Zona harus berada di region yang sama dengan cluster, yang ditentukan oleh flag --region. Jenis GPU yang Anda tentukan harus tersedia di setiap zona yang dipilih. Sebaiknya selalu gunakan flag --node-locations saat membuat node pool untuk menentukan zona atau zona-zona yang berisi GPU yang diminta.

  • MIN_NODES: jumlah minimum node untuk setiap zona dalam node pool untuk setiap waktu. Nilai ini hanya relevan jika flag --enable-autoscaling digunakan.

  • MAX_NODES: jumlah node maksimum untuk setiap zona dalam node pool untuk setiap waktu. Nilai ini hanya relevan jika flag --enable-autoscaling digunakan.

  • SSD_COUNT: jumlah SSD Lokal yang akan dipasang untuk penyimpanan sementara. Tanda ini diperlukan untuk menggunakan SSD Lokal pada jenis mesin A3 dengan GPU H100.

Misalnya, perintah berikut membuat node pool penskalaan otomatis yang sangat tersedia, p100, dengan dua GPU P100 untuk setiap node, di cluster regional p100-cluster. GKE otomatis menginstal driver default pada node tersebut.

gcloud container node-pools create p100 \
  --accelerator type=nvidia-tesla-p100,count=2,gpu-driver-version=default \
  --region us-central1 --cluster p100-cluster \
  --node-locations us-central1-c \
  --min-nodes 0 --max-nodes 5 --enable-autoscaling

Konsol

Untuk membuat node pool dengan GPU:

  1. Buka halaman Google Kubernetes Engine di konsol Google Cloud.

    Buka Google Kubernetes Engine

  2. Di daftar cluster, klik nama cluster yang ingin diubah.

  3. Klik Tambahkan Node Pool.

  4. Secara opsional, di halaman Detail node pool, pilih kotak centang Aktifkan penskalaan otomatis.

  5. Konfigurasikan node pool Anda sesuai keinginan.

  6. Dari panel navigasi, pilih Node.

  7. Di bagian Konfigurasi mesin, klik GPU.

  8. Pilih Jenis GPU dan Jumlah GPU yang akan dijalankan di setiap node.

  9. Baca peringatannya, lalu pilih Saya memahami batasan-batasannya.

  10. Di bagian Penginstalan Driver GPU, pilih salah satu metode berikut:

    • Dikelola Google: GKE menginstal driver secara otomatis. Jika Anda memilih opsi ini, pilih salah satu opsi berikut dari drop-down Versi:
      • Default: Menginstal versi driver default.
      • Terbaru: Instal versi driver terbaru yang tersedia.
    • Dikelola pelanggan: GKE tidak menginstal driver. Anda harus menginstal driver yang kompatibel secara manual menggunakan petunjuk dalam Menginstal driver perangkat GPU NVIDIA.
  11. Klik Create.

Terraform

Anda dapat membuat cluster regional dengan Terraform dengan GPU menggunakan Modul Terraform.

  1. Tetapkan variabel Terraform dengan menyertakan blok berikut di file variables.tf:

    variable "project_id" {
      default     = PROJECT_ID
      description = "the gcp_name_short project where GKE creates the cluster"
    }
    
    variable "region" {
      default     = CLUSTER_REGION
      description = "the gcp_name_short region where GKE creates the cluster"
    }
    
    variable "zone" {
      default     = "COMPUTE_ZONE1,COMPUTE_ZONE2"
      description = "the GPU nodes zone"
    }
    
    variable "cluster_name" {
      default     = "CLUSTER_NAME"
      description = "the name of the cluster"
    }
    
    variable "gpu_type" {
      default     = "GPU_TYPE"
      description = "the GPU accelerator type"
    }
    
    variable "gpu_driver_version" {
      default = "DRIVER_VERSION"
      description = "the NVIDIA driver version to install"
    }
    
    variable "machine_type" {
      default = "MACHINE_TYPE"
      description = "The Compute Engine machine type for the VM"
    }
    

    Ganti kode berikut:

    • PROJECT_ID: project ID Anda.
    • CLUSTER_NAME: nama cluster GKE.
    • CLUSTER_REGION: region komputasi untuk cluster.
    • COMPUTE_ZONE1,COMPUTE_ZONE2,[...]: zona spesifik tempat GKE membuat node GPU. Zona harus berada di region yang sama dengan yang ditentukan oleh variabel region. Semua zona ini harus memiliki jenis GPU yang Anda tentukan yang tersedia. Untuk mempelajari zona mana yang memiliki GPU, silakan melihat Ketersediaan. Anda harus menggunakan variabel node_locations saat membuat node pool GPU untuk menentukan zona atau zona-zona yang berisi GPU yang diminta.
    • GPU_TYPE: jenis GPU. Dapat berupa salah satu dari hal berikut:

      • nvidia-tesla-k80
      • nvidia-tesla-p100
      • nvidia-tesla-p4
      • nvidia-tesla-v100
      • nvidia-tesla-t4
      • nvidia-tesla-a100
      • nvidia-a100-80gb
      • nvidia-l4
      • nvidia-h100-80gb
    • DRIVER_VERSION: versi driver GPU yang akan diinstal secara otomatis oleh GKE. Kolom ini bersifat opsional. Nilai-nilai berikut didukung:

      • INSTALLATION_DISABLED: Menonaktifkan penginstalan driver GPU otomatis. Anda harus menginstal driver secara manual untuk menjalankan GPU.
      • DEFAULT: Menginstal versi driver default secara otomatis untuk versi sistem operasi node Anda.
      • LATEST: Menginstal versi driver terbaru yang tersedia secara otomatis untuk versi OS node Anda.

    Jika Anda menghapus kolom ini, GKE tidak akan secara otomatis menginstal driver. Kolom ini tidak didukung di node pool yang menggunakan penyediaan otomatis node. Untuk menginstal driver secara manual, silakan melihat Menginstal driver GPU NVIDIA secara manual dalam dokumen ini. * MACHINE_TYPE: jenis mesin Compute Engine untuk node. Diperlukan untuk jenis GPU berikut:

    Untuk semua GPU lainnya, flag ini bersifat opsional.

  2. Tambahkan blok berikut ke konfigurasi Terraform Anda:

    provider "google" {
      project = var.project_id
      region  = var.region
    }
    
    resource "google_container_cluster" "ml_cluster" {
      name     = var.cluster_name
      location = var.region
      node_locations = [var.zone]
    }
    
    resource "google_container_node_pool" "gpu_pool" {
      name       = google_container_cluster.ml_cluster.name
      location   = var.region
      cluster    = google_container_cluster.ml_cluster.name
      node_count = 3
    
      autoscaling {
        total_min_node_count = "1"
        total_max_node_count = "5"
      }
    
      management {
        auto_repair  = "true"
        auto_upgrade = "true"
      }
    
      node_config {
        oauth_scopes = [
          "https://www.googleapis.com/auth/logging.write",
          "https://www.googleapis.com/auth/monitoring",
          "https://www.googleapis.com/auth/devstorage.read_only",
          "https://www.googleapis.com/auth/trace.append",
          "https://www.googleapis.com/auth/service.management.readonly",
          "https://www.googleapis.com/auth/servicecontrol",
        ]
    
        labels = {
          env = var.project_id
        }
    
        guest_accelerator {
          type  = var.gpu_type
          count = 1
          gpu_driver_installation_config {
            gpu_driver_version = var.gpu_driver_version
          }
        }
    
        image_type   = "cos_containerd"
        machine_type = var.machine_type
        tags         = ["gke-node", "${var.project_id}-gke"]
    
        disk_size_gb = "30"
        disk_type    = "pd-standard"
    
        metadata = {
          disable-legacy-endpoints = "true"
        }
      }
    }
    

Terraform memanggil Google Cloud API untuk menetapkan cluster baru dengan node pool yang menggunakan GPU. Node pool awalnya memiliki tiga node dan penskalaan otomatis diaktifkan. Untuk mempelajari Terraform lebih lanjut, silakan membaca spesifikasi resource google_container_node_pool.

Anda juga dapat membuat cluster baru dengan GPU serta menentukan zona menggunakan flag --node-locations. Namun, sebaiknya Anda membuat node pool GPU yang terpisah di cluster yang ada, seperti yang ditunjukkan di bagian ini.

Menginstal driver GPU NVIDIA secara manual

Jika Anda memilih menonaktifkan penginstalan driver perangkat otomatis saat membuat node pool GPU, atau jika Anda menggunakan versi GKE yang lebih lama dari versi minimum yang didukung untuk penginstalan otomatis, Anda harus menginstal secara manual driver GPU NVIDIA yang kompatibel pada node. Google menyediakan DaemonSet yang dapat Anda terapkan untuk menginstal driver. Pada node GPU yang menggunakan Container-Optimized OS, Anda juga memiliki opsi untuk memilih antara versi driver GPU default atau versi yang lebih baru.

Sebaiknya gunakan penginstalan driver otomatis jika memungkinkan, dengan menentukan opsi gpu-driver-version dalam flag --accelerator saat membuat cluster Standard. Jika Anda menggunakan DaemonSet penginstalan untuk menginstal driver GPU secara manual pada atau sebelum 25 Januari 2023, Anda mungkin perlu menerapkan ulang DaemonSet untuk mendapatkan versi yang mengabaikan node yang menggunakan penginstalan driver otomatis.

Petunjuk berikut menunjukkan cara menginstal driver pada node Container-Optimized OS (COS) dan Ubuntu, serta menggunakan Terraform.

COS

Untuk men-deploy DaemonSet penginstalan dan menginstal versi driver GPU default, jalankan perintah berikut:

kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/nvidia-driver-installer/cos/daemonset-preloaded.yaml

Atau, untuk menginstal versi driver GPU yang lebih baru (lihat tabel di bawah), jalankan perintah berikut:

kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/nvidia-driver-installer/cos/daemonset-preloaded-latest.yaml

Penginstalan memerlukan waktu beberapa detik untuk diselesaikan. Setelah diinstal, plugin perangkat GPU NVIDIA akan menampilkan kapasitas GPU NVIDIA melalui Kubernetes API.

Setiap versi image Container-Optimized OS memiliki setidaknya satu versi driver GPU NVIDIA yang didukung. Silakan melihat catatan rilis tentang tonggak pencapaian utama LTS Container-Optimized OS untuk versi default yang didukung.

Tabel berikut mencantumkan versi driver yang tersedia di setiap versi GKE:

Versi GKE Driver NVIDIA
1.26 R470 (default), R510, atau R525
1.25 R470 (default), R510, atau R525
1.24 R470 (default), R510, atau R525
1.23 R450 (default), R470, R510, atau R525
1.22 R450 (default), R470, R510, atau R525
1.21 R450 (default), R470, atau R510
1.20 R450 (default), R470

Ubuntu

Guna men-deploy DaemonSet penginstalan untuk semua GPU kecuali GPU L4 NVIDIA, jalankan perintah berikut:

kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/nvidia-driver-installer/ubuntu/daemonset-preloaded.yaml

Penginstalan memerlukan waktu beberapa detik untuk diselesaikan. Setelah diinstal, plugin perangkat GPU NVIDIA akan menampilkan kapasitas GPU NVIDIA melalui Kubernetes API.

Untuk GPU L4 NVIDIA, instal driver R525 menggunakan perintah berikut:

kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/nvidia-driver-installer/ubuntu/daemonset-preloaded-R525.yaml

Tabel berikut mencantumkan versi driver yang tersedia di setiap versi GKE:

Versi GKE Driver NVIDIA
1.27 R470
1.26 R470
1.25 R470
1.24 R470
1.23 R470
1.22 R450
1.21 R450
1.20 R450

Terraform

Anda dapat menggunakan Terraform untuk menginstal versi driver GPU default berdasarkan jenis node. Pada kedua kasus ini, Anda harus mengonfigurasi jenis resource Terraform kubectl_manifest.

  • Untuk menginstal DaemonSet on COS, tambahkan blok berikut dalam konfigurasi Terraform Anda:

      data "http" "nvidia_driver_installer_manifest" {
        url = "https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/nvidia-driver-installer/cos/daemonset-preloaded.yaml"
      }
    
      resource "kubectl_manifest" "nvidia_driver_installer" {
        yaml_body = data.http.nvidia_driver_installer_manifest.body
      }
    
  • Untuk menginstal DaemonSet di Ubuntu, tambahkan blok berikut dalam konfigurasi Terraform Anda:

      data "http" "nvidia_driver_installer_manifest" {
        url = "https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/nvidia-driver-installer/ubuntu/daemonset-preloaded.yaml"
      }
    
      resource "kubectl_manifest" "nvidia_driver_installer" {
        yaml_body = data.http.nvidia_driver_installer_manifest.body
      }
    

Menggunakan penyediaan otomatis node dengan GPU

Saat menggunakan penyediaan otomatis node dengan GPU, node pool yang disediakan secara otomatis secara default tidak memiliki cakupan yang memadai untuk menginstal driver. Untuk memberikan cakupan yang diperlukan, ubah cakupan default untuk penyediaan otomatis node guna menambahkan logging.write, monitoring, devstorage.read_only, dan compute, seperti dalam contoh berikut.

gcloud container clusters update CLUSTER_NAME --enable-autoprovisioning \
    --min-cpu=1 --max-cpu=10 --min-memory=1 --max-memory=32 \
    --autoprovisioning-scopes=https://www.googleapis.com/auth/logging.write,https://www.googleapis.com/auth/monitoring,https://www.googleapis.com/auth/devstorage.read_only,https://www.googleapis.com/auth/compute

Di GKE versi 1.29.2-gke.1108000 dan yang lebih baru, Anda dapat memilih versi driver GPU untuk GKE agar otomatis diinstal dalam node GPU yang disediakan secara otomatis. Tambahkan kolom 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 menghilangkan nodeSelector dalam manifes, ini adalah opsi default.
  • latest - versi driver terbaru yang tersedia untuk versi GKE node Anda.

Untuk mempelajari penyediaan otomatis lebih lanjut, silakan melihat Menggunakan penyediaan otomatis node.

Mengonfigurasi Pod agar memakai GPU

Anda menggunakan batas resource untuk mengonfigurasi Pod agar memakai GPU. Anda menentukan batas resource di spesifikasi Pod menggunakan pasangan nilai kunci berikut

  • Kunci: nvidia.com/gpu
  • Nilai: Jumlah GPU yang akan dipakai

Di bawah ini adalah contoh spesifikasi Pod yang menggunakan GPU:

apiVersion: v1
kind: Pod
metadata:
  name: my-gpu-pod
spec:
  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: 2

Memakai beberapa jenis GPU

Jika ingin menggunakan beberapa jenis akselerator GPU per cluster, Anda harus membuat beberapa node pool, masing-masing dengan jenis akseleratornya sendiri. GKE memasang pemilih node unik ke node GPU untuk membantu menempatkan workload GPU pada node dengan jenis GPU tertentu:

  • Kunci: cloud.google.com/gke-accelerator
  • Nilai: nvidia-tesla-k80, nvidia-tesla-p100, nvidia-tesla-p4, nvidia-tesla-v100, nvidia-tesla-t4, nvidia-tesla-a100, nvidia-a100-80gb, nvidia-h100-80gb, atau nvidia-l4.

Anda dapat menargetkan jenis GPU tertentu dengan menambahkan pemilih node ini ke spesifikasi Pod workload Anda. Contoh:

apiVersion: v1
kind: Pod
metadata:
  name: my-gpu-pod
spec:
  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: 2
  nodeSelector:
    cloud.google.com/gke-accelerator: nvidia-tesla-k80

Mengupgrade node pool menggunakan akselerator (GPU dan TPU)

GKE otomatis mengupgrade Cluster standar, termasuk node pool. Anda juga dapat mengupgrade kumpulan node secara manual jika ingin node Anda pada versi yang lebih baru lebih cepat. Untuk mengontrol cara kerja upgrade untuk cluster Anda, gunakan saluran rilis, periode pemeliharaan dan pengecualian, dan urutan peluncuran.

Anda juga dapat mengonfigurasi strategi upgrade node untuk kumpulan node, seperti upgrade surge atau upgrade biru-hijau. Dengan mengonfigurasi strategi ini, Anda dapat memastikan bahwa node pool diupgrade dengan cara yang mencapai keseimbangan optimal antara kecepatan dan gangguan bagi lingkungan Anda. Untuk kumpulan node slice TPU multi-host, daripada menggunakan strategi upgrade node yang telah dikonfigurasi, GKE membuat ulang seluruh kumpulan node secara atomik dalam satu langkah. Untuk mempelajari lebih lanjut, lihat definisi atomicity dalam Terminologi terkait TPU di GKE.

Penggunaan strategi upgrade node akan memerlukan GKE untuk menyediakan resource tambahan untuk sementara, bergantung pada konfigurasinya. Jika Google Cloud memiliki kapasitas terbatas untuk resource node pool—misalnya, Anda melihat error ketersediaan resource saat mencoba membuat lebih banyak node dengan GPU atau TPU—lihat Mengupgrade di lingkungan dengan resource terbatas.

Tentang library NVIDIA CUDA-X

CUDA adalah model pemrograman dan platform komputasi paralel NVIDIA untuk GPU. Untuk menggunakan aplikasi CUDA, gambar yang Anda gunakan harus memiliki library. Untuk menambahkan library NVIDIA CUDA-X, gunakan salah satu metode berikut:

  • Direkomendasikan: Gunakan image dengan library NVIDIA CUDA-X yang telah diinstal sebelumnya. Misalnya, Anda dapat menggunakan Deep Learning Containers. Container ini menginstal lebih dulu framework data science kunci, library, dan alat NVIDIA CUDA-X. Atau, image NVIDIA CUDA hanya berisi library NVIDIA CUDA-X.
  • Buat dan gunakan image Anda sendiri. Dalam hal ini, sertakan nilai berikut pada variabel lingkungan LD_LIBRARY_PATH di spesifikasi container Anda:
    1. /usr/local/cuda-CUDA_VERSION/lib64: lokasi library NVIDIA CUDA-X pada node. Ganti CUDA_VERSION dengan versi image CUDA-X yang Anda gunakan. Beberapa versi juga berisi utilitas debug di /usr/local/nvidia/bin. Untuk mengetahui detailnya, lihat image CUDA NVIDIA di DockerHub.
    2. /usr/local/nvidia/lib64: lokasi driver perangkat NVIDIA.

Untuk memeriksa versi driver GPU minimum yang diperlukan pada versi CUDA, lihat Toolkit CUDA dan Versi Driver yang Kompatibel. Pastikan versi patch GKE yang berjalan di node Anda menyertakan versi driver GPU yang kompatibel dengan versi CUDA yang Anda pilih. Untuk mengetahui daftar versi driver GPU yang terkait dengan versi GKE, silakan melihat halaman Container-Optimized OS terkait yang ditautkan di tabel versi GKE saat ini.

Memantau 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.

Anda dapat menggunakan dasbor standar untuk memantau cluster dengan node GPU. Untuk mengetahui informasi selengkapnya, baca Melihat metrik kemampuan observasi. Untuk informasi umum tentang pemantauan cluster Anda dan resource-nya, lihat Kemampuan observasi untuk GKE.

Melihat metrik penggunaan untuk workload

Anda dapat melihat metrik penggunaan GPU workload dari dasbor Beban kerja di Konsol Google Cloud.

Untuk melihat penggunaan GPU workload Anda, lakukan langkah-langkah berikut:

  1. Buka halaman Workload di Konsol Google Cloud.

    Buka Workload
  2. Pilih beban kerja

Dasbor Workload menampilkan diagram untuk penggunaan dan kapasitas memori GPU, serta siklus tugas GPU.

Lihat metrik NVIDIA Data Center GPU Manager (DCGM)

Anda dapat mengumpulkan dan memvisualisasikan metrik NVIDIA DCGM dengan cluster Standar menggunakan Google Cloud Managed Service for Prometheus.

Untuk mengetahui petunjuk cara men-deploy DCGM dan pengekspor Prometheus DCGM untuk cluster Standar Anda, lihat NVIDIA Data Center GPU Manager (DCGM) dalam dokumentasi Kemampuan observasi Google Cloud.

Konfigurasi penghentian halus node GPU

Di cluster GKE dengan bidang kontrol yang menjalankan 1.29.1-gke.1425000 atau yang lebih baru, node GPU mendukung sinyal SIGTERM yang memberi tahu node tentang penonaktifan dalam waktu dekat. Notifikasi penonaktifan yang akan segera dapat dikonfigurasi hingga 60 menit di node GPU.

Anda dapat mengonfigurasi GKE untuk menghentikan workload secara halus dalam jangka waktu notifikasi ini. Dalam manifes Pod, tetapkan kolom spec.terminationGracePeriodSeconds ke nilai hingga maksimum 60 menit (3600 detik). Misalnya, untuk mendapatkan waktu notifikasi selama 10 menit, dalam manifes Pod, tetapkan kolom spec.terminationGracePeriodSeconds ke 600 detik seperti berikut:

  spec:
    terminationGracePeriodSeconds: 600

GKE berusaha sebaik mungkin untuk menghentikan Pod ini dengan baik dan menjalankan tindakan penghentian yang Anda tentukan, misalnya, menyimpan status pelatihan.

Langkah selanjutnya