Mengelola workload container GPU

Anda dapat mengaktifkan dan mengelola resource unit pemrosesan grafis (GPU) di container Anda. Misalnya, Anda mungkin lebih suka menjalankan notebook kecerdasan buatan (AI) dan machine learning (ML) di lingkungan GPU. Untuk menjalankan workload kontainer GPU, Anda harus memiliki cluster Kubernetes yang mendukung perangkat GPU. Dukungan GPU diaktifkan secara default untuk cluster Kubernetes yang telah menyediakan mesin GPU.

Sebelum memulai

Untuk men-deploy GPU ke container, Anda harus memiliki hal berikut:

  • Cluster Kubernetes dengan class mesin GPU. Periksa bagian kartu GPU yang didukung untuk mengetahui opsi yang dapat Anda konfigurasi untuk mesin cluster.

  • Peran User Cluster Node Viewer (user-cluster-node-viewer) untuk memeriksa GPU, dan peran Namespace Admin (namespace-admin) untuk men-deploy workload GPU di namespace project Anda.

  • Jalur kubeconfig untuk server API pengelolaan zonal yang menghosting cluster Kubernetes Anda. Login dan buat file kubeconfig jika Anda belum memilikinya.

  • Jalur kubeconfig untuk cluster infrastruktur org di zona yang ditujukan untuk menghosting GPU Anda. Login dan buat file kubeconfig jika Anda belum memilikinya.

  • Nama cluster Kubernetes. Minta informasi ini kepada Administrator Platform Anda jika Anda tidak memilikinya.

  • Jalur kubeconfig cluster Kubernetes. Login dan buat file kubeconfig jika Anda belum memilikinya.

Mengonfigurasi container untuk menggunakan resource GPU

Untuk menggunakan GPU ini dalam container, selesaikan langkah-langkah berikut:

  1. Pastikan cluster Kubernetes Anda memiliki node pool yang mendukung GPU:

    kubectl describe nodepoolclaims -n KUBERNETES_CLUSTER_NAME \
        --kubeconfig ORG_INFRASTRUCTURE_CLUSTER
    

    Output yang relevan mirip dengan cuplikan berikut:

    Spec:
      Machine Class Name:  a2-ultragpu-1g-gdc
      Node Count:          2
    

    Untuk mengetahui daftar lengkap jenis mesin GPU yang didukung dan profil GPU Multi-Instance (MIG), lihat Jenis mesin node cluster.

  2. Tambahkan kolom .containers.resources.requests dan .containers.resources.limits ke spesifikasi container Anda. Setiap nama resource berbeda, bergantung pada class mesin Anda. Periksa alokasi resource GPU Anda untuk menemukan nama resource GPU Anda.

    Misalnya, spesifikasi container berikut meminta tiga partisi GPU dari node a2-ultragpu-1g-gdc:

     ...
     containers:
     - name: my-container
       image: "my-image"
       resources:
         requests:
           nvidia.com/mig-1g.10gb-NVIDIA_A100_80GB_PCIE: 3
         limits:
           nvidia.com/mig-1g.10gb-NVIDIA_A100_80GB_PCIE: 3
     ...
    
  3. Kontainer juga memerlukan izin tambahan untuk mengakses GPU. Untuk setiap container yang meminta GPU, tambahkan izin berikut ke spesifikasi container Anda:

    ...
    securityContext:
     seLinuxOptions:
       type: unconfined_t
    ...
    
  4. Terapkan file manifes penampung Anda:

    kubectl apply -f CONTAINER_MANIFEST_FILE \
        -n NAMESPACE \
        --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG
    

Memeriksa alokasi resource GPU

  • Untuk memeriksa alokasi resource GPU, gunakan perintah berikut:

    kubectl describe nodes NODE_NAME
    

    Ganti NODE_NAME dengan node yang mengelola GPU yang ingin Anda periksa.

    Output yang relevan mirip dengan cuplikan berikut:

    Capacity:
      nvidia.com/mig-1g.10gb-NVIDIA_A100_80GB_PCIE: 7
    Allocatable:
      nvidia.com/mig-1g.10gb-NVIDIA_A100_80GB_PCIE: 7
    

Catat nama resource untuk GPU Anda; Anda harus menentukannya saat mengonfigurasi container untuk menggunakan resource GPU.