Kubernetes 1.36: Lidando com Falhas de GPU sem Pendência Infinita
NVIDIA
Meta
No Kubernetes, uma falha de dispositivo GPU não leva automaticamente ao reagendamento do pod; em vez disso, o kubelet reinicia o contêiner no mesmo dispositivo defeituoso, causando um loop de travamento. O artigo demonstra esse cenário em um ambiente de teste e mostra como novos mecanismos no Kubernetes 1.36, como status de saúde do dispositivo e taints, podem quebrar o ciclo.
O artigo destaca que o Kubernetes, por padrão, lida com falhas de dispositivos simplesmente reiniciando o contêiner, o que é insuficiente para cargas de trabalho aceleradas por GPU. Citando um estudo da Meta sobre treinamento do Llama 3 405B, observa-se que clusters com milhares de GPUs enfrentam interrupções frequentes, muitas vezes devido a falhas de GPU e memória. O autor explica as limitações da abordagem clássica de plugin de dispositivo, que apenas reduz a contagem alocável, e a contrasta com o modelo mais recente de DRA (Dynamic Resource Allocation), que fornece gerenciamento de dispositivos baseado em objetos. Em um cluster de teste, o autor simula uma falha de GPU removendo a quente um dispositivo do barramento PCIe, resultando em Xid 79. O pod então entra em um loop de falhas, reiniciando no dispositivo morto, e o agendador não o reescalona porque ele ainda está vinculado ao nó. O Kubernetes 1.36 introduz vários recursos beta para lidar com isso: status de saúde do dispositivo no status do pod, taints e tolerâncias de dispositivo, e dispositivos particionáveis. Usando esses recursos, o cluster pode ser configurado para reconhecer a falha e agendar o pod em uma GPU saudável, evitando reinicializações infinitas.
Fonte: Habr — хаб ML —
original
