Falhas de GPU no Kubernetes: Lidando com Falhas de Dispositivos sem Pendência Infinita
Meta
NVIDIA
Em 2024, o cluster de 16.384 H100s da Meta, que treinava o Llama 3 405B, sofreu 419 interrupções, com 58,7% atribuídas às GPUs. O Kubernetes frequentemente lida com essas falhas simplesmente reiniciando contêineres no mesmo dispositivo defeituoso, levando a estados de Pendência infinitos. Este artigo explica como os novos recursos de Alocação Dinâmica de Recursos em inglês: Dynamic Resource Allocation, doravante denominada DRA, no Kubernetes 1.36 finalmente oferecem uma saída, usando uma demonstração ao vivo em um cluster gerenciado pela VK Cloud.
O artigo destaca a experiência da Meta no treinamento do Llama 3 405B, onde o cluster de 16.384 GPUs H100 sofreu 419 interrupções, sendo 58,7% delas relacionadas a GPUs. Ele aponta que o Kubernetes tradicionalmente trata falhas de dispositivos como falhas de serviços stateless, tentando reiniciar na mesma GPU quebrada, o que leva a um loop de crash. Para resolver isso, o Kubernetes 1.36 introduz vários mecanismos: DRA (Dynamic Resource Allocation, ou Alocação Dinâmica de Recursos) está estável desde a versão 1.34, fornecendo um modelo baseado em objetos em vez de um contador simples; lista priorizada (firstAvailable) para dispositivos de backup; status de saúde do dispositivo no status do pod; taints e tolerations de dispositivo; e condições de vínculo de dispositivo, entre outros. O autor monta um ambiente de teste no VK Cloud Managed Kubernetes 1.36 com um nó GPU e simula uma falha de GPU removendo o dispositivo PCIe a quente. Eles mostram que o nó reporta o dispositivo como não saudável e a contagem alocável diminui, mas o pod continua reiniciando na GPU morta sem qualquer reagendamento. O artigo conclui explicando por que o Kubernetes não oferece um desschedulamento embutido para pods em estado CrashLoopBackOff e menciona padrões do tipo DIY (faça você mesmo), como controladores de saúde de nó que matam o nó inteiro, o que é um instrumento pouco refinado.
Fonte: Habr — хаб ML —
original
