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. Para executar cargas de trabalho de contentores de GPU, tem de ter um cluster do Kubernetes que suporte dispositivos de GPU. O suporte de GPU está ativado por predefinição para clusters do Kubernetes que tenham máquinas com GPU aprovisionadas para os mesmos.
Antes de começar
Para implementar GPUs nos seus contentores, tem de ter o seguinte:
Um cluster do Kubernetes com uma classe de máquina de GPU. Consulte a secção cartões de GPU suportados para ver opções sobre o que pode configurar para as máquinas do cluster.
A função de visualizador de nós do cluster de utilizadores (
user-cluster-node-viewer
) para verificar as GPUs e 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 servidor da API de gestão zonal que aloja o seu cluster do Kubernetes. Inicie sessão e gere o ficheiro kubeconfig se não tiver um.
O caminho kubeconfig para o cluster de infraestrutura da organização na zona destinada a alojar as suas GPUs. Inicie sessão e gere o ficheiro kubeconfig se não tiver um.
O nome do cluster do Kubernetes. Peça estas informações ao administrador da plataforma se não as tiver.
O caminho kubeconfig do cluster Kubernetes. Inicie sessão e gere o ficheiro kubeconfig se não tiver um.
Configure um contentor para usar recursos da GPU
Para usar estas GPUs num contentor, conclua os seguintes passos:
Verifique se o cluster do Kubernetes tem pools de nós que suportam GPUs:
kubectl describe nodepoolclaims -n KUBERNETES_CLUSTER_NAME \ --kubeconfig ORG_INFRASTRUCTURE_CLUSTER
A saída relevante é semelhante ao seguinte fragmento:
Spec: Machine Class Name: a2-ultragpu-1g-gdc Node Count: 2
Para ver uma lista completa dos tipos de máquinas com GPU suportados e dos perfis de GPU multi-instância (MIG), consulte o artigo Tipos de máquinas de nós de cluster.
Adicione os campos
.containers.resources.requests
e.containers.resources.limits
à especificação do contentor. Cada nome de recurso é diferente consoante a classe da máquina. Verifique a atribuição de recursos da GPU para encontrar os nomes dos recursos da GPU.Por exemplo, a seguinte especificação do contentor pede três partições de uma GPU de um nó
a2-ultragpu-1g-gdc
:... containers: - name: my-container image: "my-image" resources: requests: nvidia.com/mig-1g.10gb-NVIDIA_A100_80GB_PCIE: 3 limits: nvidia.com/mig-1g.10gb-NVIDIA_A100_80GB_PCIE: 3 ...
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 KUBERNETES_CLUSTER_KUBECONFIG
Verifique a atribuição de recursos da GPU
Para verificar a atribuição de recursos da GPU, use o seguinte comando:
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/mig-1g.10gb-NVIDIA_A100_80GB_PCIE: 7 Allocatable: nvidia.com/mig-1g.10gb-NVIDIA_A100_80GB_PCIE: 7
Tenha em atenção os nomes dos recursos das suas GPUs. Tem de especificá-los quando configurar um contentor para usar recursos de GPU.