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. Dukungan GPU diaktifkan secara default di perangkat Google Distributed Cloud (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

Untuk membuat, menghapus, mengedit, atau melihat resource di cluster Kubernetes, minta Admin IAM Organisasi Anda untuk memberi Anda peran Namespace Admin (namespace-admin) di namespace project Anda. Dengan peran ini, Anda dapat men-deploy workload GPU di namespace project Anda.

Menyiapkan lingkungan Anda

  • Login dan buat file kubeconfig untuk cluster Kubernetes bare metal.

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

Mengonfigurasi container untuk menggunakan resource GPU

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

  1. Pastikan node cluster Kubernetes Anda mendukung alokasi resource GPU Anda:

    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/gpu-pod-NVIDIA_A100_80GB_PCIE: 1
    Allocatable:
      nvidia.com/gpu-pod-NVIDIA_A100_80GB_PCIE: 1
    
  2. Tambahkan kolom .containers.resources.requests dan .containers.resources.limits ke spesifikasi container Anda. Karena cluster Kubernetes Anda telah dikonfigurasi sebelumnya dengan mesin GPU, konfigurasinya identik untuk semua beban kerja:

     ...
     containers:
     - name: CONTAINER_NAME
       image: CONTAINER_IMAGE
       resources:
         requests:
           nvidia.com/gpu-pod-NVIDIA_A100_80GB_PCIE: 1
         limits:
           nvidia.com/gpu-pod-NVIDIA_A100_80GB_PCIE: 1
     ...
    

    Ganti kode berikut:

    • CONTAINER_NAME: nama container.
    • CONTAINER_IMAGE: image container untuk mengakses mesin GPU. Anda harus menyertakan jalur dan versi registry container image, seperti REGISTRY_PATH/hello-app:1.0.
  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 NAMESPACE \
        --kubeconfig CLUSTER_KUBECONFIG
    

    Ganti kode berikut:

    • CONTAINER_MANIFEST_FILE: file YAML untuk resource kustom beban kerja penampung Anda.
    • NAMESPACE: namespace project tempat men-deploy workload container.
    • CLUSTER_KUBECONFIG: file kubeconfig untuk cluster Kubernetes bare metal tempat Anda men-deploy workload kontainer.
  5. Pastikan pod Anda berjalan dan menggunakan GPU:

    kubectl get pods -A | grep CONTAINER_NAME \
        -n NAMESPACE \
        --kubeconfig CLUSTER_KUBECONFIG
    

    Output yang relevan mirip dengan cuplikan berikut:

    Port:           80/TCP
    Host Port:      0/TCP
    State:          Running
    Ready:          True
    Restart Count:  0
    Limits:
      nvidia.com/gpu-pod-NVIDIA_A100_80GB_PCIE:  1
    Requests:
      nvidia.com/gpu-pod-NVIDIA_A100_80GB_PCIE:  1