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.
Este documento destina-se aos programadores de aplicações no grupo de operadores de aplicações que são responsáveis pela criação de cargas de trabalho de aplicações para a respetiva organização. Para mais informações, consulte a documentação sobre públicos-alvo para GDC com isolamento de ar.
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 administrador do cluster de utilizadores (
user-cluster-admin) para verificar as GPUs num cluster partilhado e a função de administrador do espaço de nomes (namespace-admin) no espaço de nomes do seu projeto para implementar cargas de trabalho de GPU num cluster partilhado.A função de administrador do cluster padrão (
standard-cluster-admin) para verificar as GPUs num cluster padrão e a função de programador do cluster (cluster-developer) no seu cluster padrão para implementar cargas de trabalho de GPU num cluster padrão.Para executar comandos num cluster do Kubernetes, certifique-se de que tem os seguintes recursos:
Localize o nome do cluster do Kubernetes ou pergunte a um membro do grupo de administradores da plataforma qual é o nome do cluster.
Inicie sessão e gere o ficheiro kubeconfig para o cluster do Kubernetes, se não tiver um.
Use o caminho kubeconfig do cluster Kubernetes para substituir
KUBERNETES_CLUSTER_KUBECONFIGnestas instruções.
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.
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 clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME \ -n KUBERNETES_CLUSTER_NAMESPACE \ --kubeconfig MANAGEMENT_API_SERVERSubstitua o seguinte:
KUBERNETES_CLUSTER_NAME: o nome do cluster.KUBERNETES_CLUSTER_NAMESPACE: o espaço de nomes do cluster. Para clusters partilhados, use o espaço de nomesplatform. Para clusters padrão, use o espaço de nomes do projeto do cluster.MANAGEMENT_API_SERVER: o caminho kubeconfig do servidor da API zonal onde o cluster Kubernetes está alojado. Se ainda não gerou um ficheiro kubeconfig para o servidor da API na zona de destino, consulte Iniciar sessão.
A saída relevante é semelhante ao seguinte fragmento:
# Several lines of code are omitted here. spec: nodePools: - machineTypeName: a2-ultragpu-1g-gdc nodeCount: 2 # Several lines of code are omitted here.Para ver uma lista completa dos tipos de máquinas com GPU compatíveis 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.requestse.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 peça 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 KUBERNETES_CLUSTER_NAMESPACE \ --kubeconfig KUBERNETES_CLUSTER_KUBECONFIGSubstitua o seguinte:
CONTAINER_MANIFEST_FILE: o ficheiro de manifesto YAML para a carga de trabalho do contentor.KUBERNETES_CLUSTER_NAMESPACE: o espaço de nomes do cluster. Para clusters partilhados, use o espaço de nomesplatform. Para clusters padrão, use o espaço de nomes do projeto do cluster.KUBERNETES_CLUSTER_KUBECONFIG: o caminho kubeconfig do cluster.
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 --kubeconfig KUBERNETES_CLUSTER_KUBECONFIGSubstitua o seguinte:
NODE_NAME: o nó que gere as GPUs que quer inspecionar.KUBERNETES_CLUSTER_KUBECONFIG: o caminho kubeconfig do cluster.
A saída relevante é semelhante ao seguinte fragmento:
# Several lines of code are omitted here. Capacity: nvidia.com/mig-1g.10gb-NVIDIA_A100_80GB_PCIE: 7 Allocatable: nvidia.com/mig-1g.10gb-NVIDIA_A100_80GB_PCIE: 7 # Several lines of code are omitted here.
Tenha em atenção os nomes dos recursos das suas GPUs. Tem de especificá-los quando configurar um contentor para usar recursos de GPU.