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 kontainer 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 bagi developer aplikasi dalam grup operator aplikasi yang bertanggung jawab untuk membuat workload aplikasi bagi organisasi mereka. Untuk mengetahui informasi selengkapnya, lihat Audiens untuk dokumentasi GDC yang terisolasi dari internet.

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 Admin Cluster Pengguna (user-cluster-admin) untuk memeriksa GPU di cluster bersama, dan peran Admin Namespace (namespace-admin) di namespace project Anda untuk men-deploy workload GPU ke cluster bersama.

  • Peran Admin Cluster Standard (standard-cluster-admin) untuk memeriksa GPU di cluster standar, dan peran Developer Cluster (cluster-developer) di cluster standar untuk men-deploy workload GPU ke cluster standar.

  • Untuk menjalankan perintah terhadap cluster Kubernetes, pastikan Anda memiliki resource berikut:

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

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

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

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

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 zonal 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 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-beda, 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. Container 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 KUBERNETES_CLUSTER_NAMESPACE \
        --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG
    

    Ganti kode berikut:

    • CONTAINER_MANIFEST_FILE: file manifes YAML untuk beban kerja 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.
    

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

Langkah berikutnya