Sobre GPUs no GKE


Nesta página, descrevemos as GPUs no Google Kubernetes Engine (GKE), incluindo casos de uso, recursos com suporte e tipos de GPU, além das diferenças entre os modos Autopilot e Standard. Para instruções sobre como anexar e usar GPUs nas cargas de trabalho, consulte Implantar cargas de trabalho da GPU no Autopilot ou Executar GPUs em pools de nós padrão.

Disponibilidade da GPU no GKE

No GKE Autopilot, você solicita hardware da GPU ao especificar recursos da GPU nas cargas de trabalho. No Autopilot e no Standard do GKE, é possível anexar um hardware de GPU aos nós nos clusters e alocar recursos de GPU para cargas de trabalho conteinerizadas em execução nesses nós. Use esses aceleradores para realizar tarefas que consomem muitos recursos, como as seguintes:

  • Inferência e treinamento com machine learning (ML)
  • Processamento de dados em grande escala

O hardware de GPU disponível para uso no GKE é um subconjunto das GPUs do Compute Engine para cargas de trabalho de computação. O GKE oferece alguns recursos específicos da GPU, como o compartilhamento de tempo e GPUs de várias instâncias, que podem melhorar a eficiência de uso dos nós pelos recursos da GPU.

O hardware específico disponível depende da região ou da zona do Compute Engine do cluster. Para uma disponibilidade específica, consulte Regiões e zonas da GPU.

Cota de GPU

A cota de GPU é o número total de GPUs que podem ser executadas no projeto do Google Cloud. Para que você possa usar GPUs nos clusters do GKE, o projeto precisa ter cota de GPU suficiente.

A cota de GPU precisa ser pelo menos equivalente ao número total de GPUs que você pretende executar no cluster. Se você ativar o dimensionamento automático de cluster, será necessário solicitar uma cota de GPU equivalente pelo menos ao número máximo de nós do cluster multiplicado pelo número de GPUs por nó.

Por exemplo, se você pretende utilizar três nós com duas GPUs cada, seu projeto requer pelo menos seis cotas de GPU.

Para solicitar mais cota de GPU, siga as instruções em Como solicitar um limite de cota maior, usando gpus como métrica.

Suporte a GPUs no Autopilot e Standard

As GPUs estão disponíveis nos clusters Autopilot e Standard. A tabela a seguir descreve as diferenças entre o suporte ao GPU padrão e ao Autopilot:

Descrição Piloto automático Padrão
Disponibilidade do hardware da GPU
  • NVIDIA T4
  • NVIDIA L4
  • NVIDIA A100 40GB
  • NVIDIA A100 80GB
  • NVIDIA H100 80GB
Todos os tipos de GPU com suporte no Compute Engine
Como selecionar uma GPU Você solicita uma quantidade de GPU e digita a especificação do pod. Por padrão, o Autopilot instala o driver padrão dessa versão do GKE e gerencia seus nós. Para selecionar uma versão específica do driver no Autopilot, consulte Seleção de drivers NVIDIA para pods de GPU do Autopilot
  1. Crie um pool de nós com o tipo de GPU específico e o tipo de máquina correspondente do Compute Engine e escolha um driver para instalar.
  2. Instalar manualmente drivers de GPU nos nós, se você não usou a instalação automática.
  3. Solicitar quantidades de GPU na especificação do pod

Para instruções, consulte Executar GPUs em pools de nós Standard.

Outros recursos da GPU
Preços Preços do pod da GPU do Autopilot Preços das GPUs do Compute Engine

No Autopilot, o GKE gerencia a instalação de drivers, o escalonamento de nós, o isolamento de pods e o provisionamento de nós. Recomendamos escolher um modo de cluster para as GPUs com base na flexibilidade e no nível de controle que você quer sobre os nós, da seguinte maneira:

  • Se você quiser focar na implantação de cargas de trabalho baseadas em GPU sem precisar gerenciar os nós e se os tipos de GPU disponíveis atenderem às suas necessidades, use o Autopilot.
  • Se você preferir gerenciar os nós, o escalonamento, o isolamento e as máquinas subjacentes por conta própria, use a opção Padrão.

Recursos da GPU no GKE

O GKE fornece outros recursos que podem ser usados para otimizar o uso de recursos das cargas de trabalho de GPU. Assim, você não desperdiça recursos de GPU nos nós. Por padrão, o Kubernetes só permite atribuir GPUs a contêineres como unidades inteiras, mesmo que um contêiner precise apenas de uma fração da GPU disponível ou nem sempre use os recursos.

Os seguintes recursos estão disponíveis no GKE para reduzir a quantidade de recursos de GPU subutilizados:

Recursos da GPU
GPUs de compartilhamento de tempo

Disponível em:Autopilot e Standard

Apresente uma única GPU como várias unidades a vários contêineres em um único nó. O driver da GPU alterna o contexto e aloca todos os recursos da GPU para cada contêiner atribuído conforme necessário ao longo do tempo.

GPUs de várias instâncias

Disponível em:Autopilot e Standard

Divida uma GPU em até sete instâncias separadas por hardware que possam ser atribuídas como GPUs individuais a contêineres em um nó. Cada contêiner atribuído recebe os recursos disponíveis para essa instância.

Sobre as bibliotecas CUDA-X da NVIDIA

Nos clusters do Autopilot, o GKE gerencia a seleção e a instalação da versão do driver.

O CUDA® é a plataforma de computação paralela e o modelo de programação da NVIDIA para GPUs. Para usar aplicativos CUDA, a imagem usada precisa ter as bibliotecas. Para adicionar as bibliotecas CUDA-X da NVIDIA, use um dos seguintes métodos:

  • Recomendado: Use uma imagem com as bibliotecas CUDA-X da NVIDIA pré-instaladas. Por exemplo, você pode usar contêineres de aprendizado profundo. Esses contêineres pré-instalam os principais frameworks de ciência de dados, as bibliotecas CUDA-X da NVIDIA e as ferramentas. Como alternativa, a imagem da NVIDIA CUDA contém apenas as bibliotecas da NVIDIA CUDA-X.
  • Crie e use sua própria imagem. Nesse caso, inclua os seguintes valores na variável de ambiente LD_LIBRARY_PATH na especificação do contêiner:
    1. /usr/local/cuda-CUDA_VERSION/lib64: a localização das bibliotecas NVIDIA CUDA-X no nó. Substitua CUDA_VERSION pela versão da imagem CUDA-X que você usou. Algumas versões também contêm utilitários de depuração em /usr/local/nvidia/bin. Para mais detalhes, veja a imagem NVIDIA CUDA no DockerHub.
    2. /usr/local/nvidia/lib64: a localização dos drivers de dispositivo da NVIDIA;

Para verificar a versão mínima do driver da GPU necessária para a versão do CUDA, consulte Kit de ferramentas CUDA e versões compatíveis do driver. Verifique se a versão do patch do GKE em execução nos nós inclui uma versão do driver da GPU compatível com a versão CUDA escolhida. Para ver uma lista de versões dos drivers da GPU associadas à versão do GKE, consulte a página correspondente do Container-Optimized OS vinculada na tabela de versões atuais do GKE.

Monitorar os nós da GPUs

Se o cluster do GKE tiver métricas do sistema ativadas, as seguintes métricas estarão disponíveis no Cloud Monitoring para monitorar o desempenho da carga de trabalho da GPU:

  • Ciclo de trabalho (container/accelerator/duty_cycle): porcentagem de tempo durante o período de amostra anterior (10 segundos) em que o acelerador estava realizando o processamento. Entre 1 e 100.
  • Uso da memória (container/accelerator/memory_used): quantidade de memória do acelerador alocada em bytes.
  • Capacidade de memória (container/accelerator/memory_total): memória total do acelerador em bytes.

É possível usar painéis predefinidos para monitorar seus clusters com nós de GPU. Para mais informações, consulte Conferir métricas de observabilidade. Para informações gerais sobre como monitorar os clusters e os recursos deles, consulte Observabilidade no GKE.

Conferir as métricas de uso das cargas de trabalho

Veja as métricas de uso da GPU da carga de trabalho no painel Cargas de trabalho no Console do Google Cloud.

Para ver o uso da GPU nas cargas de trabalho, siga estas etapas:

  1. Acesse a página Cargas de trabalho no console do Google Cloud.

    Acesse "Cargas de trabalho"
  2. Selecionar uma carga de trabalho

O painel Cargas de trabalho exibe gráficos de uso e capacidade de memória da GPU e de ciclo de trabalho da GPU.

Lidar com interrupções devido à manutenção do nó

Os nós do GKE que hospedam as GPUs estão sujeitos a eventos de manutenção ou outras interrupções que podem causar o encerramento do nó. É possível reduzir as interrupções nas cargas de trabalho em execução nos clusters do GKE com o plano de controle executando a versão 1.29.1-gke.1425000 e posterior. O GKE alerta os nós de um encerramento iminente enviando um sinal SIGTERM ao nó até 60 minutos antes das remoções.

É possível configurar o GKE para encerrar as cargas de trabalho normalmente. No manifesto do pod, defina o campo spec.terminationGracePeriodSeconds como um valor de até 3600 segundos (uma hora). O GKE faz o possível para encerrar esses pods normalmente e executar a ação de encerramento definida por você, por exemplo, salvando um estado de treinamento. O GKE respeita qualquer configuração de até 60 minutos para as configurações PodDisruptionBudget ou terminationGracePeriodSeconds. ,

Para saber mais, consulte Configurar o encerramento automático do nó da GPU.

A seguir