Men-deploy workload container GPU

Halaman ini menjelaskan cara men-deploy workload container GPU di SKU yang Dioptimalkan untuk AI Sandbox Google Distributed Cloud (GDC).

Men-deploy workload container GPU

SKU yang Dioptimalkan untuk AI GDC Sandbox mencakup empat GPU HBM3 80 GB NVIDIA H100 dalam cluster org-infra. GPU ini dapat diakses menggunakan nama resource nvidia.com/gpu-pod-NVIDIA_H100_80GB_HBM3. Bagian ini menjelaskan cara memperbarui konfigurasi penampung untuk menggunakan GPU ini.

GPU di SKU yang Dioptimalkan untuk AI Sandbox GDC dikaitkan dengan project yang telah dikonfigurasi sebelumnya, "sandbox-gpu-project". Anda harus men-deploy penampung menggunakan project ini di dalam cluster org-1-infra untuk menggunakan GPU.

Sebelum memulai

  • Untuk menjalankan perintah terhadap cluster infrastruktur org, pastikan Anda memiliki kubeconfig cluster org-1-infra, seperti yang dijelaskan dalam Bekerja dengan cluster:

    • Mengonfigurasi dan melakukan autentikasi dengan command line gdcloud, dan
    • buat file kubeconfig untuk cluster infrastruktur org, dan tetapkan jalurnya ke variabel lingkungan KUBECONFIG.
  • Untuk menjalankan workload, Anda harus memiliki peran sandbox-gpu-admin yang ditetapkan. Secara default, peran ditetapkan kepada pengguna platform-admin. Anda dapat menetapkan peran kepada pengguna lain dengan login sebagai platform-admin dan menjalankan perintah berikut:

    kubectl --kubeconfig ${KUBECONFIG} create rolebinding ${NAME} --role=sandbox-gpu-admin \
    --user=${USER} --namespace=sandbox-gpu-project
    
  • Untuk mengizinkan traffic jaringan ke penampung, Anda harus memiliki kebijakan jaringan project. Untuk mengetahui informasi selengkapnya, lihat Membuat kebijakan jaringan.

Mengonfigurasi container untuk menggunakan resource GPU

  1. Tambahkan kolom .containers.resources.requests dan .containers.resources.limits ke spesifikasi container Anda untuk meminta GPU bagi workload. Semua container dalam sandbox-gpu-project dapat meminta hingga total 4 GPU di seluruh project. Contoh berikut meminta satu GPU sebagai bagian dari spesifikasi container.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
      namespace: sandbox-gpu-project
      labels:
        app: nginx
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:latest
            resources:
              requests:
                nvidia.com/gpu-pod-NVIDIA_H100_80GB_HBM3: 1
              limits:
                nvidia.com/gpu-pod-NVIDIA_H100_80GB_HBM3: 1
    
  1. Container juga memerlukan izin tambahan untuk mengakses GPU. Untuk setiap penampung yang meminta GPU, tambahkan pemberian .containers.securityContext securityContext.seLinuxOptions berjenis unconfined_t ke penampung.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
      namespace: sandbox-gpu-project
      labels:
        app: nginx
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:latest
            resources:
              requests:
                nvidia.com/gpu-pod-NVIDIA_H100_80GB_HBM3: 1
              limits:
                nvidia.com/gpu-pod-NVIDIA_H100_80GB_HBM3: 1
            securityContext:
              seLinuxOptions:
                type: unconfined_t
    
  2. Terapkan file manifes penampung Anda:

    kubectl apply -f ${CONTAINER_MANIFEST_FILE_PATH} \
        -n sandbox-gpu-project \
        --kubeconfig ${KUBECONFIG}