Esta página descreve como implantar cargas de trabalho de contêiner de GPU na SKU otimizada para IA do Google Distributed Cloud (GDC) Sandbox.
Implantar cargas de trabalho de contêiner de GPU
A SKU otimizada para IA do GDC Sandbox inclui quatro GPUs NVIDIA H100 80GB HBM3 no cluster org-infra. Essas GPUs podem ser acessadas usando o nome do recurso nvidia.com/gpu-pod-NVIDIA_H100_80GB_HBM3. Esta seção descreve 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". É necessário implantar 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, o papel é atribuído ao usuárioplatform-admin. Para atribuir o papel a outros usuários, faça login comoplatform-admine execute o seguinte comando:kubectl --kubeconfig ${KUBECONFIG} create rolebinding ${NAME} --role=sandbox-gpu-admin \ --user=${USER} --namespace=sandbox-gpu-projectPara permitir o tráfego de rede para o contêiner, é necessário ter uma política de rede de projeto. Para mais informações, consulte Criar uma política de rede.
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 adicionais para acessar GPUs. Para cada contêiner que solicita GPUs, adicione um
.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}