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 men-deploy GPU ke container, Anda harus memiliki hal berikut:

  • Peran Namespace Admin (namespace-admin) untuk men-deploy beban kerja GPU di namespace project Anda.

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

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 sama 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. 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 CLUSTER_KUBECONFIG
    

    Ganti kode berikut:

    • CONTAINER_MANIFEST_FILE: file YAML untuk resource kustom workload kontainer 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