Esegui il deployment dei carichi di lavoro dei container GPU

Questa pagina descrive come eseguire il deployment dei carichi di lavoro dei container GPU nello SKU ottimizzato per l'AI di Google Distributed Cloud (GDC) Sandbox.

Esegui il deployment dei carichi di lavoro dei container GPU

Lo SKU ottimizzato per l'AI di GDC Sandbox include quattro GPU NVIDIA H100 da 80 GB HBM3 all'interno del cluster di infrastruttura dell'organizzazione. Queste GPU sono accessibili utilizzando il nome della risorsa nvidia.com/gpu-pod-NVIDIA_H100_80GB_HBM3. Questa sezione descrive come aggiornare una configurazione del container per utilizzare queste GPU.

Le GPU nello SKU ottimizzato per l'AI di GDC Sandbox sono associate a un progetto preconfigurato, "sandbox-gpu-project". Per utilizzare le GPU, devi eseguire il deployment del container utilizzando questo progetto all'interno del cluster org-1-infra.

Prima di iniziare

  • Per eseguire comandi sul cluster di infrastruttura dell'organizzazione, assicurati di avere il file kubeconfig del cluster org-1-infra, come descritto in Utilizzare i cluster:

    • Configura ed esegui l'autenticazione con la riga di comando gdcloud e
    • genera il file kubeconfig per il cluster di infrastruttura dell'organizzazione e assegna il relativo percorso alla variabile di ambiente KUBECONFIG.
  • Per eseguire i carichi di lavoro, devi disporre del ruolo sandbox-gpu-admin assegnato. Per impostazione predefinita, il ruolo viene assegnato all'utente platform-admin. Puoi assegnare il ruolo ad altri utenti accedendo come platform-admin ed eseguendo il seguente comando:

    kubectl --kubeconfig ${KUBECONFIG} create rolebinding ${NAME} --role=sandbox-gpu-admin \
    --user=${USER} --namespace=sandbox-gpu-project
    
  • Per consentire il traffico di rete al container, devi disporre di un criterio di rete del progetto. Per saperne di più, consulta Creare una policy di rete.

Configura un container per utilizzare le risorse GPU

  1. Aggiungi i campi .containers.resources.requests e .containers.resources.limits alla specifica del container per richiedere le GPU per il carico di lavoro. Tutti i container all'interno di sandbox-gpu-project possono richiedere un totale massimo di 4 GPU in tutto il progetto. L'esempio seguente richiede una GPU come parte della specifica del 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. I container richiedono anche autorizzazioni aggiuntive per accedere alle GPU. Per ogni container che richiede GPU, aggiungi un .containers.securityContext che conceda securityContext.seLinuxOptions di tipo unconfined_t al 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
            securityContext:
              seLinuxOptions:
                type: unconfined_t
    
  2. Applica il file manifest del container:

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