Nesta página, descrevemos como implantar cargas de trabalho de contêineres de GPU na SKU otimizada para IA do Sandbox do Google Distributed Cloud (GDC).
Implantar cargas de trabalho de contêineres de GPU
A SKU otimizada para IA do GDC Sandbox inclui quatro GPUs NVIDIA H100 de 80 GB HBM3 no cluster org-infra. Essas GPUs podem ser acessadas usando o nome do recurso
nvidia.com/gpu-pod-NVIDIA_H100_80GB_HBM3. Nesta seção, descrevemos como atualizar uma configuração de contêiner para usar essas GPUs.
As GPUs na SKU otimizada para IA do GDC Sandbox estão associadas a um projeto pré-configurado, "sandbox-gpu-project". Implante o contêiner usando esse
projeto no cluster org-1-infra para usar as GPUs.
Antes de começar
Para executar comandos no cluster de infraestrutura da organização, verifique se você tem o kubeconfig do cluster
org-1-infra, conforme descrito em Trabalhar com clusters:- Configure e autentique com a linha de comando
gdcloude - gere o arquivo kubeconfig para o cluster de infraestrutura da organização e
atribua o caminho dele à variável de ambiente
KUBECONFIG.
- Configure e autentique com a linha de comando
Para executar as cargas de trabalho, é necessário ter o papel
sandbox-gpu-adminatribuído. Por padrão, a função é atribuída ao usuárioplatform-admin. Você pode atribuir a função a outros usuários fazendo login comoplatform-admine executando o seguinte comando:kubectl --kubeconfig ${KUBECONFIG} create rolebinding ${NAME} --role=sandbox-gpu-admin \ --user=${USER} --namespace=sandbox-gpu-project
Configurar um contêiner para usar recursos de GPU
Adicione os campos
.containers.resources.requestse.containers.resources.limitsà especificação do contêiner para solicitar GPUs para a carga de trabalho. Todos os contêineres no sandbox-gpu-project podem solicitar até quatro GPUs no total em todo o projeto. O exemplo a seguir solicita uma GPU como parte da especificação do contêiner.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
Os contêineres também exigem permissões extras para acessar GPUs. Para cada contêiner que solicita GPUs, adicione uma
.containers.securityContextque concedasecurityContext.seLinuxOptionsdo tipounconfined_tao contêiner.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_tAplique o arquivo de manifesto do contêiner:
kubectl apply -f ${CONTAINER_MANIFEST_FILE_PATH} \ -n sandbox-gpu-project \ --kubeconfig ${KUBECONFIG}