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_NAME
Substitua
NODE_NAME
pelo 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: 1
Adicione os campos
.containers.resources.requests
e.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_KUBECONFIG
Substitua 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_KUBECONFIG
A 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