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 container GPU, Anda harus memiliki cluster Kubernetes yang mendukung perangkat GPU. Dukungan GPU diaktifkan secara default untuk cluster Kubernetes yang memiliki mesin GPU yang disediakan untuk cluster tersebut.

Dokumen ini ditujukan bagi developer aplikasi dalam grup operator aplikasi yang bertanggung jawab membuat workload aplikasi untuk organisasi mereka. Untuk mengetahui informasi selengkapnya, lihat Audiens untuk dokumentasi GDC dengan air gap.

Sebelum memulai

Untuk menyelesaikan tugas dalam dokumen ini, Anda harus meminta izin yang diperlukan dan menyiapkan lingkungan Anda.

Meminta peran IAM

Anda harus memiliki peran tertentu untuk mendapatkan izin yang diperlukan guna men-deploy GPU ke container Anda. Peran yang Anda perlukan bergantung pada apakah Anda bekerja dalam cluster bersama yang tercakup dalam organisasi atau cluster standar yang tercakup dalam project. Untuk mengetahui informasi selengkapnya, lihat Konfigurasi cluster Kubernetes.

Peran cluster bersama

Untuk memverifikasi node pool yang didukung GPU dan men-deploy workload GPU di cluster bersama, minta peran berikut berdasarkan tugas yang akan dilakukan:

  • User Cluster Admin (user-cluster-admin): membuat, menghapus, mengedit, atau melihat resource cluster bersama yang dihosting di server API pengelolaan. Peran ini memungkinkan Anda memeriksa GPU di cluster bersama, dan tidak terikat ke namespace project Anda.
  • Namespace Admin (namespace-admin): membuat, menghapus, mengedit, atau melihat resource cluster bersama yang dihosting dalam project. Peran ini memungkinkan Anda men-deploy workload GPU ke cluster standar, dan terikat ke namespace project Anda.

Peran cluster standar

Untuk memverifikasi node pool yang didukung GPU dan men-deploy workload GPU ke cluster standar, minta Admin Project IAM Anda untuk memberi Anda peran berikut:

  • Standard Cluster Admin (standard-cluster-admin): membuat, menghapus, mengedit, atau melihat resource cluster standar yang dihosting di server API pengelolaan. Peran ini memungkinkan Anda memeriksa GPU di cluster bersama, dan terikat ke namespace project Anda.
  • Developer Cluster (cluster-developer): membuat, menghapus, mengedit, atau melihat cluster standar. Peran ini memungkinkan Anda men-deploy workload GPU ke cluster standar dengan memberikan akses ke API bidang data yang dihosting dalam cluster standar. Peran ini terikat ke namespace project Anda.

Menyiapkan lingkungan Anda

Untuk mengonfigurasi container agar menggunakan resource GPU, pastikan Anda memiliki resource berikut:

  • Cluster Kubernetes dengan class mesin GPU. Untuk mengetahui informasi selengkapnya, lihat bagian kartu GPU yang didukung.

  • Temukan nama cluster Kubernetes, atau tanyakan kepada anggota grup administrator platform apa nama clusternya.

  • Login dan buat file kubeconfig untuk cluster Kubernetes.

  • Gunakan jalur kubeconfig cluster Kubernetes untuk mengganti KUBERNETES_CLUSTER_KUBECONFIG dalam petunjuk ini.

  • Login dan buat file kubeconfig untuk server API pengelolaan zona yang menghosting cluster Kubernetes Anda. Gunakan jalur ini untuk mengganti MANAGEMENT_API_SERVER dalam petunjuk ini.

  • Login dan buat file kubeconfig untuk cluster infrastruktur organisasi di zona yang dimaksudkan untuk menghosting GPU Anda.

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 clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME \
        -n KUBERNETES_CLUSTER_NAMESPACE \
        --kubeconfig MANAGEMENT_API_SERVER
    

    Ganti kode berikut:

    • KUBERNETES_CLUSTER_NAME: nama cluster.
    • KUBERNETES_CLUSTER_NAMESPACE: namespace cluster. Untuk cluster bersama, gunakan namespace platform. Untuk cluster standar, gunakan namespace project cluster.
    • MANAGEMENT_API_SERVER: jalur kubeconfig server API zona tempat cluster Kubernetes dihosting. Jika Anda belum membuat file kubeconfig untuk server API di zona yang ditargetkan, lihat Login.

    Output yang relevan mirip dengan cuplikan berikut:

    # Several lines of code are omitted here.
    spec:
      nodePools:
      - machineTypeName: a2-ultragpu-1g-gdc
        nodeCount: 2
    # Several lines of code are omitted here.
    

    Untuk mengetahui daftar lengkap jenis mesin GPU dan profil GPU Multi-Instance (MIG) yang didukung, 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:

     # Several lines of code are omitted here.
     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
     # Several lines of code are omitted here.
    
  3. Container juga memerlukan izin tambahan untuk mengakses GPU. Untuk setiap container yang meminta GPU, tambahkan izin berikut ke spesifikasi container Anda:

    # Several lines of code are omitted here.
    securityContext:
     seLinuxOptions:
       type: unconfined_t
    # Several lines of code are omitted here.
    
  4. Terapkan file manifes container Anda:

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

    Ganti kode berikut:

    • CONTAINER_MANIFEST_FILE: file manifes YAML untuk workload container Anda.
    • KUBERNETES_CLUSTER_NAMESPACE: namespace cluster. Untuk cluster bersama, gunakan namespace platform. Untuk cluster standar, gunakan namespace project cluster.
    • KUBERNETES_CLUSTER_KUBECONFIG: jalur kubeconfig cluster.

Memeriksa alokasi resource GPU

  • Untuk memeriksa alokasi resource GPU Anda, gunakan perintah berikut:

    kubectl describe nodes NODE_NAME --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG
    

    Ganti kode berikut:

    • NODE_NAME: node yang mengelola GPU yang ingin Anda periksa.
    • KUBERNETES_CLUSTER_KUBECONFIG: jalur kubeconfig cluster.

    Output yang relevan mirip dengan cuplikan berikut:

    # Several lines of code are omitted here.
    Capacity:
      nvidia.com/mig-1g.10gb-NVIDIA_A100_80GB_PCIE: 7
    Allocatable:
      nvidia.com/mig-1g.10gb-NVIDIA_A100_80GB_PCIE: 7
    # Several lines of code are omitted here.
    

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

Langkah berikutnya