Nesta página, você verá opções para solicitar GPUs no Google Kubernetes Engine (GKE), incluindo:
- Como escolher recursos de GPU e eficiência para suas cargas de trabalho do GKE
- Como escolher sua cota de GPU, o número máximo de GPUs que podem ser executadas em seu projeto
- Como escolher entre os modos Autopilot e Standard
- Como escolher recursos para reduzir a quantidade de recursos de GPU subutilizados
- Como acessar bibliotecas NVIDIA CUDA-X para aplicativos CUDA
- Como monitorar métricas de nós da GPU
- Como lidar com interrupções devido à manutenção do nó
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 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.
O GKE oferece alguns recursos específicos da GPU para melhorar a utilização eficiente de recursos de GPU das cargas de trabalho em execução nos nós, incluindo compartilhamento de tempo, GPUs de várias instâncias e GPUs com NVIDIA MPS.
Planejar a 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 usar três nós com duas GPUs cada, seis são a cota de GPU necessária para o projeto.
Para solicitar mais cota de GPU, siga as instruções em
Como solicitar um limite de cota maior, usando
gpus
como métrica.
Escolher o suporte a GPUs usando o Autopilot ou Standard
As GPUs estão disponíveis nos clusters Autopilot e Standard. Recomendamos que você use clusters do Autopilot para ter uma experiência totalmente gerenciada do Kubernetes. 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.
A tabela a seguir fornece uma visão geral das diferenças entre o suporte a GPUs do Autopilot e do Standard:
Descrição | Piloto automático | Padrão |
---|---|---|
Como solicitar hardware de GPU | Especifique recursos de GPU em suas cargas de trabalho. | Anexe hardware de GPU a nós nos clusters e aloque recursos de GPU a cargas de trabalho conteinerizadas em execução nesses nós. |
Disponibilidade do hardware da GPU |
|
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 |
Siga as etapas descritas em Executar GPUs em pools de nós
padrão:
|
Melhorar o uso da GPU | ||
Segurança | GPUs com o GKE Sandbox | GPUs com o GKE Sandbox |
Preços | Preços do pod da GPU do Autopilot | Preços das GPUs do Compute Engine |
Para escolher o modo de operação do GKE mais adequado para suas cargas de trabalho, consulte Escolher um modo de operação do GKE.
Otimizar o uso de recursos usando as funcionalidades da GPU no GKE
Por padrão, o Kubernetes só permite a atribuição de GPUs como unidades inteiras a contêineres, mas o GKE fornece recursos adicionais que podem ser usados para otimizar o uso de recursos das cargas de trabalho de GPU.
Os seguintes recursos estão disponíveis no GKE para reduzir a quantidade de recursos de GPU subutilizados:
Recursos da GPU | |
---|---|
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. |
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. |
MPS da NVIDIA |
Disponível em: Standard Compartilhe uma única GPU NVIDIA física em vários contêineres. O NVIDIA MPS é uma implementação alternativa e compatível com binários da API CUDA projetada para permitir que aplicativos CUDA cooperativos de vários processos sejam executados simultaneamente em um único dispositivo de GPU. |
Acessar as bibliotecas NVIDIA CUDA-X para aplicativos CUDA
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:/usr/local/cuda-CUDA_VERSION/lib64
: a localização das bibliotecas NVIDIA CUDA-X no nó. SubstituaCUDA_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./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.
Nos clusters do Autopilot, o GKE gerencia a seleção e a instalação da versão do driver.
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:
Acesse a página Cargas de trabalho no console do Google Cloud.
Acesse "Cargas de trabalho"- 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.
Conferir as métricas do NVIDIA Data Center GPU Manager (DCGM)
É possível coletar e conferir as métricas do NVIDIA DCGM usando o Google Cloud Managed Service para Prometheus. Para clusters Standard, é preciso instalar os drivers da NVIDIA. Para clusters do Autopilot, o GKE instala os drivers.
Para instruções sobre como implantar o DCGM e o exportador do DCGM do Prometheus, consulte o Gerenciador de GPU de data center (DCGM, na sigla em inglês) NVIDIA na documentação do Google Cloud Observability.
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ó.
Nos clusters do GKE com o plano de controle executando a versão 1.29.1-gke.1425000 e posterior, é possível reduzir as interrupções nas cargas de trabalho configurando o GKE para encerrar as cargas de trabalho normalmente.
É possível configurar o GKE para enviar um sinal SIGTERM
aos pods em nós que estão prestes a ser encerrados, concedendo a eles um período de carência para concluir qualquer trabalho em andamento antes da remoção. No campo spec.terminationGracePeriodSeconds
do manifesto do pod, especifique o número de segundos até um máximo de 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, incluindo como essas duas configurações interagem, consulte
Configurar o encerramento automático do nó da GPU.