Pode ativar e gerir recursos da unidade de processamento de gráficos (GPU) nos seus contentores. Por exemplo, pode preferir executar blocos de notas de inteligência artificial (IA) e aprendizagem automática (AA) num ambiente de GPU. O suporte de GPU está ativado por predefinição no dispositivo isolado do Google Distributed Cloud (GDC).
Antes de começar
Para implementar GPUs nos seus contentores, tem de ter o seguinte:
A função de administrador do espaço de nomes (
namespace-admin) para implementar cargas de trabalho de GPU no espaço de nomes do seu projeto.O caminho kubeconfig para o cluster do Kubernetes de metal exposto. Inicie sessão e gere o ficheiro kubeconfig se não tiver um.
Configure um contentor para usar recursos da GPU
Para usar GPUs num contentor, conclua os seguintes passos:
Confirme se os nós do cluster do Kubernetes suportam a sua atribuição de recursos de GPU:
kubectl describe nodes NODE_NAMESubstitua
NODE_NAMEpelo nó que gere as GPUs que quer inspecionar.A saída relevante é semelhante ao seguinte fragmento:
Capacity: nvidia.com/gpu-pod-NVIDIA_A100_80GB_PCIE: 1 Allocatable: nvidia.com/gpu-pod-NVIDIA_A100_80GB_PCIE: 1Adicione os campos
.containers.resources.requestse.containers.resources.limitsà especificação do contentor. Uma vez que o cluster do Kubernetes está pré-configurado com máquinas de GPU, a configuração é a mesma para todas as cargas de trabalho:... 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 ...Substitua o seguinte:
CONTAINER_NAME: o nome do contentor.CONTAINER_IMAGE: a imagem do contentor para aceder às máquinas com GPU. Tem de incluir o caminho do registo de contentores e a versão da imagem, comoREGISTRY_PATH/hello-app:1.0.
Os contentores também requerem autorizações adicionais para aceder às GPUs. Para cada contentor que solicite GPUs, adicione as seguintes autorizações à especificação do contentor:
... securityContext: seLinuxOptions: type: unconfined_t ...Aplique o ficheiro de manifesto do contentor:
kubectl apply -f CONTAINER_MANIFEST_FILE \ -n NAMESPACE \ --kubeconfig CLUSTER_KUBECONFIGSubstitua o seguinte:
CONTAINER_MANIFEST_FILE: o ficheiro YAML para o recurso personalizado da carga de trabalho do contentor.NAMESPACE: o espaço de nomes do projeto no qual implementar as cargas de trabalho do contentor.CLUSTER_KUBECONFIG: o ficheiro kubeconfig para o cluster do Kubernetes bare metal para o qual está a implementar cargas de trabalho de contentores.
Verifique se os pods estão em execução e a usar as GPUs:
kubectl get pods -A | grep CONTAINER_NAME \ -n NAMESPACE \ --kubeconfig CLUSTER_KUBECONFIGA saída relevante é semelhante ao seguinte fragmento:
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