Menjalankan GPU di node pool GKE Standard


Halaman ini menunjukkan cara menjalankan dan mengoptimalkan workload yang intensif komputasi, seperti kecerdasan buatan (AI) dan pemrosesan grafis, dengan memasang dan menggunakan akselerator hardware unit pemrosesan grafis (GPU) NVIDIA® di node cluster Google Kubernetes Engine (GKE) Standard.

Jika Anda menggunakan Pod Autopilot, lihat Men-deploy workload GPU di Autopilot.

Ringkasan

Dengan GKE, Anda dapat membuat node pool yang dilengkapi dengan GPU. 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. Dalam mode GKE Standard, Anda dapat memasang hardware GPU ke node dalam cluster, lalu mengalokasikan resource GPU ke workload dalam container yang berjalan pada node tersebut.

Untuk mempelajari kasus penggunaan GPU lebih lanjut, lihat halaman GPU Google Cloud. Untuk mengetahui informasi selengkapnya tentang GPU di GKE dan perbedaan antara mode Standar dan mode Autopilot, lihat Tentang GPU di GKE.

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

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

Persyaratan untuk GPU di GKE

GPU di GKE memiliki persyaratan berikut:

  • Versi Kubernetes: Versi yang tersedia bergantung pada image node yang digunakan GPU:

  • Kuota GPU: Anda harus memiliki kuota GPU Compute Engine di zona yang dipilih sebelum 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 memiliki akun penagihan yang telah ditetapkan, project Anda akan otomatis menerima kuota setelah Anda mengirimkan permintaan kuota.

    Secara default, akun Uji Coba Gratis tidak menerima kuota GPU.

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

  • GPU A100: GPU A100 hanya didukung pada jenis mesin a2. Anda harus memastikan bahwa Anda memiliki kuota yang cukup untuk jenis mesin A2 yang mendasarinya agar dapat menggunakan GPU A100.

  • GPU di node Ubuntu: Jika Anda menggunakan GPU dengan node Ubuntu, persyaratan driver berikut akan berlaku.

  • GPU L4 dan GPU H100: driver NVIDIA versi 535 atau yang lebih baru.

    Jika versi driver yang diperlukan atau versi yang lebih baru bukan versi default di versi GKE, Anda harus menginstal secara manual driver yang didukung di node.

Praktik terbaik:

Gunakan Container-Optimized OS untuk node GPU. Container-Optimized OS menyertakan driver yang diperlukan untuk mendukung versi GKE tertentu untuk node GPU.

Batasan penggunaan GPU di GKE

Sebelum menggunakan GPU di GKE, perhatikan batasan berikut:

  • Anda tidak dapat menambahkan GPU ke node pool yang sudah ada.
  • Node GPU tidak dapat dimigrasikan langsung selama peristiwa pemeliharaan.
  • Jenis GPU yang dapat Anda gunakan bergantung pada seri mesin, sebagai 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.

  • Cluster GKE Standard yang menjalankan versi 1.28.2-gke.1098000 atau yang lebih lama tidak mendukung penyediaan otomatis node yang membuat node pool dengan GPU L4. Namun, cluster yang menjalankan versi sebelumnya mendukung penskalaan autoscaler cluster pada node pool yang ada.

  • Jika menggunakan GPU H100 dan ingin menggunakan SSD Lokal di Pod, Anda harus menentukan jumlah SSD lokal yang tepat secara eksplisit untuk dilampirkan ke VM A3 yang mendasarinya. Tentukan angka menggunakan tanda --ephemeral-storage-local-ssd=count=SSD_COUNT untuk penyimpanan sementara atau tanda --local-nvme-ssd-block=count=SSD_COUNT untuk akses blok. Jika tidak menambahkan salah satu tanda ini, Anda tidak akan dapat menggunakan SSD Lokal di Pod.

    Untuk melihat jumlah persis disk SSD Lokal untuk setiap jenis mesin yang didukung, periksa baris Jenis mesin A3 di tabel Jenis mesin yang otomatis memasang disk SSD Lokal.

Ketersediaan GPU berdasarkan region dan zona

GPU tersedia di region dan zona tertentu. Saat Anda 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.

Memastikan kuota GPU yang memadai

Kuota GPU Anda adalah jumlah total GPU yang dapat berjalan di project Google Cloud. 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 GPU per node dikalikan dengan jumlah maksimum node cluster Anda.

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

  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. Di dialog Konfirmasi penggantian, klik Konfirmasi.

  9. Di layar Detail kontak, masukkan nama dan nomor telepon yang dapat 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 di cluster GKE Standard

Untuk menjalankan GPU di cluster GKE Standard, buat node pool dengan GPU yang terpasang.

Praktik terbaik:

Untuk meningkatkan efisiensi biaya, keandalan, dan ketersediaan GPU di GKE, lakukan 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.
  • Konfigurasikan GKE untuk otomatis menginstal driver GPU default atau terbaru di node pool, sehingga Anda tidak perlu menginstal dan mengelola versi driver secara manual.

Seperti yang dijelaskan di bagian berikut, GKE menggunakan taint dan toleransi node untuk memastikan bahwa Pod tidak dijadwalkan ke node yang tidak sesuai.

Secara otomatis mencemari node pool GPU untuk menghindari penjadwalan yang tidak tepat

Taint node memungkinkan Anda menandai node sehingga penjadwal menghindari atau mencegah penggunaannya untuk Pod tertentu. 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

GKE hanya menambahkan taint ini jika ada node pool non-GPU di cluster. Jika Anda menambahkan node pool GPU ke cluster dengan semua node pool yang ada merupakan node pool GPU, atau jika Anda membuat cluster baru dengan node pool default yang memiliki GPU yang terpasang, taint sebelumnya tidak akan ditambahkan ke node GPU.

Jika Anda menambahkan node pool non-GPU ke cluster di masa mendatang, GKE tidak akan menerapkan taint ini pada node GPU yang sudah ada.

Membatasi penjadwalan secara otomatis dengan toleransi

Toleransi memungkinkan Anda menetapkan Pod yang dapat digunakan pada node "taint". GKE secara otomatis menerapkan toleransi sehingga hanya Pod yang meminta GPU yang dijadwalkan di node GPU. Hal ini memungkinkan penskalaan otomatis yang lebih efisien karena node GPU Anda dapat dengan cepat memperkecil skala jika jumlah Pod yang meminta GPU tidak cukup. Untuk melakukannya, GKE akan menjalankan pengontrol akses ExtendedResourceToleration.

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.

Di bidang kontrol GKE versi 1.30.1-gke.1156000 dan yang lebih baru, GKE akan otomatis menginstal versi driver NVIDIA default untuk versi node GKE Anda. Anda dapat memilih versi driver terbaru yang tersedia atau menonaktifkan penginstalan driver otomatis secara eksplisit. Pada versi sebelum 1.30.1-gke.1156000, GKE tidak menginstal driver secara default jika Anda tidak menentukan versi driver saat membuat atau memperbarui node pool.

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] \
  [--scopes=SCOPES] \
  [--service-account=SERVICE_ACCOUNT]

Ganti kode berikut:

  • POOL_NAME: nama yang Anda pilih untuk node pool.
  • GPU_TYPE: Jenis akselerator GPU yang Anda gunakan. Misalnya, nvidia-tesla-t4.
  • DRIVER_VERSION: versi driver NVIDIA yang akan diinstal. Dapat berupa salah satu dari hal berikut:

    • default: Menginstal versi driver default untuk versi GKE node Anda. Di GKE versi 1.30.1-gke.1156000 dan yang lebih baru, jika Anda menghapus tanda gpu-driver-version, ini adalah opsi default. Pada versi sebelumnya, GKE tidak menginstal driver jika Anda menghapus tanda ini.
    • 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. Pada GKE versi yang lebih lama dari 1.30.1-gke.1156000, ini adalah opsi default.

    Opsi gpu-driver-version hanya tersedia untuk GKE versi 1.27.2-gke.1200 dan yang lebih baru. Pada versi sebelumnya, hapus flag ini dan instal driver secara manual setelah Anda membuat node pool. Jika Anda mengupgrade cluster atau node pool yang ada ke versi ini atau ke versi yang lebih baru, GKE akan otomatis menginstal versi driver default yang sesuai dengan versi GKE, kecuali jika Anda menetapkan setelan yang berbeda saat memulai upgrade.

  • AMOUNT: jumlah GPU yang akan dipasang ke node di node pool.

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

    • GPU NVIDIA H100 80 GB (sesuai dengan jenis akselerator nvidia-h100-80gb dan jenis mesin A3 High), atau GPU Mega NVIDIA H100 80 GB (sesuai dengan jenis akselerator nvidia-h100-mega-80gb dan jenis mesin A3 Mega). Untuk mengetahui informasi selengkapnya, lihat seri mesin A3 dalam dokumentasi Compute Engine.
    • GPU NVIDIA A100 40 GB (sesuai dengan jenis akselerator nvidia-tesla-a100 dan jenis mesin A2 Standard), atau GPU NVIDIA A100 80 GB (sesuai dengan jenis akselerator nvidia-a100-80gb dan jenis mesin A2 Ultra). Untuk mengetahui informasi selengkapnya, lihat rangkaian mesin A2 dalam dokumentasi Compute Engine.
    • GPU NVIDIA L4 (sesuai dengan jenis akselerator nvidia-l4 dan seri mesin G2).

    Untuk semua GPU lainnya, flag ini bersifat opsional.

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

  • CLUSTER_NAME: nama cluster tempat node pool akan dibuat.

  • COMPUTE_ZONE1,COMPUTE_ZONE2,[...]: Zona tertentu 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 dilampirkan untuk penyimpanan sementara. Flag ini diperlukan untuk menggunakan SSD Lokal dalam jenis mesin A3 dengan GPU H100.

    Secara opsional, Anda dapat membuat node pool GPU menggunakan akun layanan kustom dengan menambahkan flag berikut. Jika dihilangkan, node pool akan menggunakan akun layanan default Compute Engine:

    • SERVICE_ACCOUNT: nama akun layanan IAM yang digunakan node Anda.
    • SCOPES: adalah daftar cakupan akses yang dipisahkan koma yang akan diberikan. Pastikan salah satu cakupannya adalah storage-ro atau https://www.googleapis.com/auth/devstorage.read_only. Untuk mempelajari cakupan lebih lanjut, lihat Menetapkan cakupan akses. Jika Anda menghilangkan tanda scope, pembuatan node pool GPU akan gagal dengan error AccessDenied gagal mendownload gpu_driver_versions.bin dari bucket GCS.

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 akan otomatis menginstal driver default di 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 peringatan dan pilih Saya memahami keterbatasannya.

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

    • Dikelola Google: GKE otomatis menginstal driver. Jika Anda memilih opsi ini, pilih salah satu opsi berikut dari drop-down Version:
      • Default: Menginstal versi driver default.
      • Terbaru: Menginstal versi driver terbaru yang tersedia.
    • Dikelola pelanggan: GKE tidak menginstal driver. Anda harus menginstal driver yang kompatibel secara manual menggunakan petunjuk di 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 dalam 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 tertentu tempat GKE membuat node GPU. Zona harus berada di region yang sama yang ditentukan oleh variabel region. Zona ini harus memiliki jenis GPU yang Anda tentukan. 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 akselerator GPU yang Anda gunakan. Misalnya, nvidia-tesla-t4.
    • 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. Pada GKE versi yang lebih lama dari 1.30.1-gke.1156000, ini adalah opsi default jika Anda menghapus kolom ini.
      • DEFAULT: Menginstal versi driver default secara otomatis untuk versi sistem operasi node Anda. Di GKE versi 1.30.1-gke.1156000 dan yang lebih baru, jika Anda menghapus kolom ini, ini adalah opsi default. Pada versi sebelumnya, GKE tidak menginstal driver jika Anda menghapus kolom ini.
      • LATEST: Menginstal versi driver terbaru yang tersedia secara otomatis untuk versi OS node Anda. Hanya tersedia untuk node yang menggunakan Container-Optimized OS.

      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:

      • GPU NVIDIA H100 80 GB (sesuai dengan jenis akselerator nvidia-h100-80gb dan jenis mesin A3 High), atau GPU Mega NVIDIA H100 80 GB (sesuai dengan jenis akselerator nvidia-h100-mega-80gb dan jenis mesin A3 Mega). Untuk mengetahui informasi selengkapnya, lihat seri mesin A3 dalam dokumentasi Compute Engine.
      • GPU NVIDIA A100 40 GB (sesuai dengan jenis akselerator nvidia-tesla-a100 dan jenis mesin A2 Standard), atau GPU NVIDIA A100 80 GB (sesuai dengan jenis akselerator nvidia-a100-80gb dan jenis mesin A2 Ultra). Untuk mengetahui informasi selengkapnya, lihat seri mesin A2 dalam dokumentasi Compute Engine.
      • GPU NVIDIA L4 (sesuai dengan jenis akselerator nvidia-l4 dan seri mesin G2).

      Untuk semua GPU lainnya, flag ini bersifat opsional.

  2. Tambahkan blok berikut ke konfigurasi Terraform:

    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, lihat spesifikasi resource google_container_node_pool di terraform.io.

Praktik terbaik:

Untuk menghindari biaya lebih lanjut, hapus semua resource yang ditentukan dalam file konfigurasi menggunakan perintah terraform destroy.

Praktik terbaik: 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

Anda dapat menginstal driver GPU NVIDIA secara manual di node dengan men-deploy DaemonSet penginstalan ke node tersebut. Gunakan penginstalan manual dalam situasi berikut:

  • Anda memilih untuk menonaktifkan penginstalan driver perangkat otomatis saat membuat node pool GPU.
  • Anda menggunakan versi GKE yang lebih lama dari versi minimum yang didukung untuk penginstalan otomatis.
  • Workload Anda memerlukan versi driver NVIDIA tertentu yang tidak tersedia sebagai driver default atau terbaru dengan penginstalan otomatis.
Praktik terbaik:

Gunakan penginstalan driver otomatis jika memungkinkan. Untuk melakukannya, tentukan 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.

Untuk menjalankan penginstalan DaemonSet, node pool GPU memerlukan cakupan https://www.googleapis.com/auth/devstorage.read_only untuk berkomunikasi dengan Cloud Storage. Tanpa cakupan ini, proses download manifes DaemonSet penginstalan akan gagal. Cakupan ini adalah salah satu cakupan default, yang biasanya ditambahkan saat Anda membuat cluster.

Petunjuk berikut menunjukkan cara menginstal driver di node Ubuntu dan Container-Optimized OS (COS), 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 hingga selesai. Setelah diinstal, plugin perangkat GPU NVIDIA menggunakan Kubernetes API untuk menyediakan kapasitas GPU NVIDIA.

Setiap versi image Container-Optimized OS memiliki setidaknya satu versi driver GPU NVIDIA yang didukung. Lihat 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 driver NVIDIA GKE
1,30 R535 (default) atau R550
1,29 R535 (default) atau R550
1,28 R535 (default) atau R550
1.27 R470 (default), R525, R535, atau R550
1,26 R470 (default), R525, R535, atau R550

Ubuntu

DaemonSet penginstalan yang Anda deploy bergantung pada jenis GPU dan versi node GKE sebagai berikut:

  • Untuk semua GPU kecuali GPU NVIDIA L4 dan GPU NVIDIA H100, jalankan perintah berikut:

    kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/nvidia-driver-installer/ubuntu/daemonset-preloaded.yaml
    
  • Untuk GPU L4 NVIDIA atau GPU H100 yang menjalankan versi node dari rilis 2024-R05 atau yang lebih baru, instal driver R535:

    kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/nvidia-driver-installer/ubuntu/daemonset-preloaded-R535.yaml
    
  • Untuk GPU NVIDIA L4 atau GPU H100 yang menjalankan versi node dari rilis sebelum rilis 2024-R05 atau yang lebih baru, instal driver R525:

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

Penginstalan memerlukan waktu beberapa detik hingga selesai. Setelah diinstal, plugin perangkat GPU NVIDIA menggunakan Kubernetes API untuk menyediakan kapasitas GPU NVIDIA.

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

Driver GPU Ubuntu dan versi GKE
1,30 R470 atau R535
1,29 R470 atau R535
1,28 R470 atau R535
1.27 R470 atau R535
1,26 R470 atau R535

Terraform

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

  • Untuk menginstal DaemonSet di 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
      }
    

Menginstal driver 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 agar dapat 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 di 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 menghapus nodeSelector dalam manifes, ini adalah opsi defaultnya.
  • 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

alpha.kubernetes.io/nvidia-gpu tidak didukung sebagai nama resource di GKE. Sebagai gantinya, gunakan nvidia.com/gpu sebagai nama resource.

Manifes berikut 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

Menggunakan 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: Jenis akselerator GPU yang Anda gunakan. Misalnya, nvidia-tesla-t4.

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-t4

Mengupgrade node pool menggunakan akselerator (GPU dan TPU)

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

Anda juga dapat mengonfigurasi strategi upgrade node untuk node pool, seperti upgrade lonjakan 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 untuk lingkungan Anda. Untuk node pool slice TPU multi-host, GKE akan membuat ulang seluruh node pool secara otomatis dalam satu langkah, bukan menggunakan strategi upgrade node yang dikonfigurasi. Untuk mempelajari lebih lanjut, lihat definisi atomicity di Terminologi yang terkait dengan TPU di GKE.

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

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, Anda dapat mem-build dan menggunakan image Anda sendiri dengan menyertakan nilai berikut dalam variabel lingkungan LD_LIBRARY_PATH di spesifikasi penampung:

  • /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.

    Untuk memeriksa versi driver GPU minimum yang diperlukan untuk versi CUDA, lihat Toolkit CUDA dan Versi Driver yang Kompatibel.

  • /usr/local/nvidia/lib64: lokasi driver perangkat NVIDIA.
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 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.

Anda dapat menggunakan dasbor standar untuk memantau cluster dengan node GPU. Untuk informasi selengkapnya, lihat Melihat metrik kemampuan observasi. Untuk informasi umum tentang pemantauan cluster dan resource-nya, lihat Observabilitas 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.

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 petunjuk cara men-deploy paket DCGM yang dikelola GKE, lihat Mengumpulkan dan melihat metrik NVIDIA Data Center GPU Manager (DCGM).

Mengonfigurasi penghentian tuntas 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 penghentian yang akan segera terjadi. Notifikasi penonaktifan yang akan segera terjadi dapat dikonfigurasi hingga 60 menit di node GPU.

Untuk mengonfigurasi GKE agar menghentikan workload Anda dengan baik dalam jangka waktu notifikasi ini, ikuti langkah-langkah di Mengelola gangguan node GKE untuk GPU dan TPU.

Langkah selanjutnya