Menyiapkan dan menggunakan GPU NVIDIA

Aspek bawa node Anda sendiri dari Google Distributed Cloud (khusus software) di hardware tanpa sistem operasi memungkinkan Anda memanfaatkan hardware canggih, termasuk mesin dengan GPU, untuk mendapatkan performa dan fleksibilitas terbaik bagi cluster Anda.

Dokumen ini menjelaskan cara menginstal dan menggunakan NVIDIA GPU Operator untuk menyiapkan cluster bare metal yang dibuat dengan Google Distributed Cloud untuk digunakan dengan GPU NVIDIA.

Operator GPU NVIDIA menggunakan Operator Framework untuk mengelola komponen software NVIDIA yang diperlukan untuk menyediakan dan mengelola perangkat GPU. Sebaiknya gunakan Operator GPU NVIDIA untuk fleksibilitas dan keuntungan berikut:

  • Pilihan jenis GPU: Google Distributed Cloud khusus software kompatibel dengan berbagai jenis GPU yang didukung oleh NVIDIA GPU Operator terbaru.

  • Pilihan sistem operasi yang didukung: Node pekerja cluster dapat menggunakan sistem operasi (OS) yang didukung dengan GPU NVIDIA, dan Anda memiliki opsi untuk menggunakan driver GPU yang telah diinstal sebelumnya atau penginstalan driver dinamis dengan NVIDIA GPU Operator.

  • Pilihan model deployment: Anda dapat menggunakan GPU NVIDIA di jenis cluster apa pun dengan node pekerja: cluster pengguna, cluster mandiri, atau cluster hybrid.

Halaman ini ditujukan untuk administrator dan Operator IT yang mengelola siklus proses infrastruktur teknologi yang mendasarinya. Untuk mempelajari lebih lanjut peran umum dan contoh tugas yang kami referensikan dalam konten, lihat Peran dan tugas pengguna GKE umum. Google Cloud

Sebelum memulai

Sebelum melakukan langkah-langkah di bagian berikut, pastikan Anda telah menyiapkan persyaratan berikut:

  • Cluster operasional: Pastikan Anda memiliki cluster bare metal fungsional yang dibuat dengan Google Distributed Cloud.

  • GPU NVIDIA: Pastikan GPU NVIDIA diinstal di node pekerja cluster Anda. Bagian berikut untuk menginstal Operator GPU NVIDIA mencakup langkah-langkah untuk memverifikasi bahwa GPU telah diinstal dengan benar dan dikenali oleh sistem operasi Anda.

  • Versi driver NVIDIA yang kompatibel: Versi driver NVIDIA yang Anda gunakan harus kompatibel dengan GPU, sistem operasi, dan versi CUDA yang digunakan aplikasi Anda. Anda memiliki opsi penginstalan driver NVIDIA berikut:

    • Gunakan Operator GPU NVIDIA untuk menginstal driver GPU NVIDIA versi yang tepat seperti yang dijelaskan di bagian berikut.

    • Gunakan driver NVIDIA yang telah diinstal sebelumnya di image sistem operasi Anda.

    • Gunakan petunjuk dalam Panduan Mulai Cepat Penginstalan Driver NVIDIA untuk menginstal driver NVIDIA secara manual.

  • Helm versi 3.0.0 atau yang lebih baru: Instal antarmuka command line Helm untuk pengelolaan paket di workstation admin Anda. Anda menggunakan Helm untuk menginstal Operator GPU NVIDIA. Anda dapat menjalankan perintah berikut untuk mendownload dan menginstal alat command line Helm:

    curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 \
      && chmod 700 get_helm.sh \
      && ./get_helm.sh
    

Menginstal dan memverifikasi NVIDIA GPU Operator

Langkah-langkah berikut akan memandu Anda menginstal Operator GPU NVIDIA di cluster bare metal dan membantu Anda mengonfirmasi bahwa operator tersebut berfungsi dengan GPU Anda:

  1. Untuk perangkat GPU yang terhubung melalui peripheral component interconnect express (PCIe), jalankan perintah berikut untuk mendapatkan daftar bus PCI sistem dengan "NVIDIA" dalam namanya:

    sudo lspci | grep NVIDIA
    

    Outputnya mirip dengan hal berikut ini:

    25:00.0 3D controller: NVIDIA Corporation Device 20b5 (rev a1)
    
  2. Anda dapat menggunakan alat command line NVIDIA System Management Interface (nvidia-smi) pada node tertentu untuk mendapatkan informasi yang lebih mendetail tentang perangkat GPU:

    nvidia-smi
    

    Outputnya mirip dengan hal berikut ini:

    +---------------------------------------------------------------------------------------+
    | NVIDIA-SMI 535.183.01             Driver Version: 535.183.1    CUDA Veersion 12.2     |
    |-----------------------------------------+----------------------+----------------------|
    | GPU  Name                 Persistence-M | Bus-Id        Disp.A | Volatile Uncorr. ECC |
    | Fan  Temp   Perf          Pwr:Usage/Cap |         Memory-Usage | GPU-Util  Compute M. |
    |                                         |                      |               MIG M. |
    |=========================================+======================+======================|
    |   0  NVIDIA A100 80GB PCIe          Off | 00000000:25:00.0 Off |                    0 |
    | N/A   30C    P0              44W / 300W |      0MiB / 81920MiB |      0%      Default |
    |                                         |                      |             Disabled |
    +-----------------------------------------+----------------------+----------------------+
    
    +---------------------------------------------------------------------------------------+
    | Processes:                                                                            |
    |  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
    |        ID   ID                                                             Usage      |
    |=======================================================================================|
    |  No running processes found                                                           |
    +---------------------------------------------------------------------------------------+
    
  3. Tambahkan repositori Helm NVIDIA di workstation admin:

    helm repo add nvidia https://helm.ngc.nvidia.com/nvidia \
        && helm repo update
    
  4. Instal NVIDIA GPU Operator.

    Saat Anda menginstal NVIDIA GPU Operator, ada tiga variasi perintah dasar:

    • Instal Operator GPU NVIDIA dengan konfigurasi default:

      helm install --wait --generate-name \
          -n gpu-operator --create-namespace \
          nvidia/gpu-operator
      
    • Gunakan tanda --set untuk meneruskan kumpulan key-value pair yang dibatasi koma guna menentukan opsi konfigurasi:

      helm install --wait --generate-name \
          -n gpu-operator --create-namespace \
          nvidia/gpu-operator \
          --set OPTION_1_NAME=OPTION_1_VALUE,OPTION_2_NAME=OPTION_2_VALUE
      

      Untuk mengetahui daftar opsi konfigurasi yang mendetail, lihat Opsi Penyesuaian Umum Chart dalam dokumentasi NVIDIA. Untuk mengetahui informasi tentang logistik penggunaan flag --set, lihat Format dan Batasan --set dalam dokumentasi Helm.

    • Nonaktifkan penginstalan driver jika Anda telah menginstal driver GPU NVIDIA di node Anda:

      Secara default, NVIDIA GPU Operator men-deploy driver GPU terbaru atau yang ditentukan di semua node pekerja GPU dalam cluster. Hal ini mengharuskan semua node pekerja dengan GPU menjalankan versi sistem operasi yang sama untuk menggunakan container Driver GPU NVIDIA. Untuk mengatasi hal ini, Anda dapat menginstal driver GPU di node secara manual dan menjalankan perintah helm install dengan --set driver.enabled=false untuk mencegah NVIDIA GPU Operator men-deploy driver.

      helm install --wait --generate-name \
          -n gpu-operator --create-namespace \
          nvidia/gpu-operator \
          --set driver.enabled=false
      

    Untuk mengetahui skenario deployment umum dan contoh perintah, lihat Skenario Deployment Umum dalam dokumentasi NVIDIA.

  5. Verifikasi ekspor resource GPU:

    Setelah NVIDIA GPU Operator diinstal dengan driver GPU dan plugin perangkat yang berjalan dengan benar, Anda akan melihat bahwa jumlah GPU dikonfigurasi dengan benar di kolom Allocatable untuk resource node.

    kubectl describe node GPU_NODE_NAME | grep Allocatable -A7
    

    Ganti GPU_NODE_NAME dengan nama mesin node dengan GPU yang Anda uji.

    Outputnya mirip dengan hal berikut ini:

    Allocatable:
      cpu:                127130m
      ephemeral-storage:  858356868519
      hugepages-1Gi:      0
      hugepages-2Mi:      0
      memory:             509648288Ki
      nvidia.com/gpu:     1
      pods:               250
    
  6. Untuk memverifikasi bahwa GPU berfungsi, jalankan tugas GPU contoh berikut, yang menjalankan perintah nvidia-smi:

    export NODE_NAME=GPU_NODE_NAME
    
    cat <<EOF | kubectl create --kubeconfig=CLUSTER_KUBECONFIG -f -
    apiVersion: batch/v1
    kind: Job
    metadata:
      name: test-job-gpu
    spec:
      template:
        spec:
          runtimeClassName: nvidia
          containers:
          - name: nvidia-test
            image: nvidia/cuda:12.0.0-base-ubuntu22.04
            command: ["nvidia-smi"]
            resources:
              limits:
                nvidia.com/gpu: 1
          nodeSelector:
            kubernetes.io/hostname: ${NODE_NAME}
          restartPolicy: Never
    EOF
    

    Ganti CLUSTER_KUBECONFIG dengan jalur file kubeconfig cluster.

  7. Periksa log untuk output tugas contoh:

    kubectl logs job/test-job-gpu --kubeconfig=CLUSTER_KUBECONFIG
    

    Outputnya mirip dengan hal berikut ini:

    +---------------------------------------------------------------------------------------+
    | NVIDIA-SMI 535.183.01             Driver Version: 535.183.1    CUDA Veersion 12.2     |
    |-----------------------------------------+----------------------+----------------------|
    | GPU  Name                 Persistence-M | Bus-Id        Disp.A | Volatile Uncorr. ECC |
    | Fan  Temp   Perf          Pwr:Usage/Cap |         Memory-Usage | GPU-Util  Compute M. |
    |                                         |                      |               MIG M. |
    |=========================================+======================+======================|
    |   0  NVIDIA A100 80GB PCIe          Off | 00000000:25:00.0 Off |                    0 |
    | N/A   30C    P0              44W / 300W |      0MiB / 81920MiB |      0%      Default |
    |                                         |                      |             Disabled |
    +-----------------------------------------+----------------------+----------------------+
    
    +---------------------------------------------------------------------------------------+
    | Processes:                                                                            |
    |  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
    |        ID   ID                                                             Usage      |
    |=======================================================================================|
    |  No running processes found                                                           |
    +---------------------------------------------------------------------------------------+
    

Batasan

Batasan berikut berlaku saat Anda menggunakan Operator GPU NVIDIA dengan cluster yang dibuat dengan Google Distributed Cloud:

  • Jika Anda menginstal NVIDIA GPU Operator versi terbaru, konfigurasi containerd yang diterapkan oleh operator dapat ditimpa selama update atau upgrade cluster atau node pool.

  • Penginstalan Google Distributed Cloud versi yang didukung berisi rilis LTS containerd 1.6, yang tidak mengaktifkan Container Device Interface (CDI). Jika Anda mengikuti petunjuk di Dukungan untuk Antarmuka Perangkat Container dalam dokumentasi NVIDIA, runtime nvidia-cdi mungkin tidak berfungsi. Cluster tetap berfungsi seperti yang diharapkan, tetapi beberapa kemampuan CDI mungkin tidak tersedia.

  • Node pool load balancer otomatis menjalankan tugas update setiap 7 hari. Pekerjaan ini menggantikan konfigurasi containerd, termasuk yang ditambahkan oleh NVIDIA GPU Operator.

Praktik terbaik

Untuk meminimalkan konflik dan masalah dengan konfigurasi NVIDIA, sebaiknya gunakan tindakan pencegahan berikut:

  • Cadangkan file konfigurasi containerd, /etc/containerd/config.toml, sebelum Anda mengupgrade atau mengupdate cluster atau kumpulan node. File ini berisi konfigurasi runtime nvidia. Pulihkan file config.toml setelah upgrade atau update berhasil diselesaikan dan mulai ulang containerd agar perubahan konfigurasi diterapkan.

  • Untuk mencegah potensi konflik atau masalah dengan konfigurasi containerd, jangan gunakan node GPU sebagai node load balancer (loadBalancer.nodePoolSpec).

Dapatkan Dukungan

Jika Anda memerlukan bantuan tambahan terkait penggunaan GPU dengan Google Distributed Cloud, hubungi Cloud Customer Care.

Untuk masalah terkait penyiapan atau penggunaan hardware GPU di sistem operasi Anda, hubungi vendor hardware Anda atau, jika berlaku, Dukungan NVIDIA secara langsung.

Masukan Anda sangat berharga.