Mengelola workload container GPU

Anda dapat mengaktifkan dan mengelola resource unit pemrosesan grafis (GPU) di container. 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 untuknya.

Dokumen ini ditujukan untuk 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.

Meminta peran IAM

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

Peran cluster bersama

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

  • Admin Cluster Pengguna (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.
  • Admin Namespace (namespace-admin): membuat, menghapus, mengedit, atau melihat resource cluster bersama yang dihosting di 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 mendukung GPU dan men-deploy workload GPU ke cluster standar, minta Admin IAM Project Anda untuk memberi Anda peran berikut:

  • Admin Cluster Standar (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 data plane 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 nama cluster.

  • 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 agar 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 target, 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 Multi-Instance GPU (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-beda, bergantung pada class mesin Anda. Periksa alokasi resource GPU Anda untuk menemukan nama resource GPU.

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

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

Langkah berikutnya