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 untuk 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 Framework Operator untuk mengelola komponen software NVIDIA yang diperlukan untuk menyediakan dan mengelola perangkat GPU. Sebaiknya gunakan Operator GPU NVIDIA untuk fleksibilitas dan keunggulan berikut:

  • Pilihan jenis GPU: Google Distributed Cloud khusus software kompatibel dengan berbagai jenis GPU yang didukung oleh Operator GPU NVIDIA 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 Operator GPU NVIDIA.

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

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

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 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 sesuai seperti yang dijelaskan di bagian berikut.

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

    • Gunakan petunjuk di 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 Operator GPU NVIDIA

Langkah-langkah berikut akan memandu Anda menginstal Operator GPU NVIDIA di cluster bare metal dan membantu Anda mengonfirmasi bahwa Operator GPU NVIDIA 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) di 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 Operator GPU NVIDIA.

    Saat Anda menginstal Operator GPU NVIDIA, 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 flag --set untuk meneruskan kumpulan key-value pair yang dipisahkan koma untuk 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 Diagram Umum dalam dokumentasi NVIDIA. Untuk 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:

      Secara default, Operator GPU NVIDIA men-deploy driver GPU terbaru atau yang ditentukan di semua node pekerja GPU dalam cluster. Hal ini mengharuskan semua node pekerja dengan GPU harus menjalankan versi sistem operasi yang sama untuk menggunakan penampung 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 Operator GPU NVIDIA men-deploy driver.

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

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

  5. Verifikasi ekspor resource GPU:

    Setelah Operator GPU NVIDIA 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 contoh tugas GPU 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 melihat contoh output tugas:

    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 Operator GPU NVIDIA versi terbaru, konfigurasi containerd yang diterapkan oleh operator mungkin ditimpa selama update atau upgrade cluster atau node pool.

  • Versi Google Distributed Cloud yang didukung menginstal rilis LTS containerd 1.6, yang tidak mengaktifkan Antarmuka Perangkat Container (CDI). Jika Anda mengikuti petunjuk di Dukungan untuk Antarmuka Perangkat Penampung dalam dokumentasi NVIDIA, runtime nvidia-cdi mungkin tidak berfungsi. Cluster masih akan berfungsi seperti yang diharapkan, tetapi beberapa kemampuan CDI mungkin tidak tersedia.

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

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 selesai dan mulai ulang containerd agar perubahan konfigurasi dapat 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, langsung hubungi Dukungan NVIDIA.

Masukan Anda sangat berharga.