A maioria dos sistemas de treinamento distribuído reage a falhas de nós em vez de antecipá-las. O fluxo típico: o nó falha → todo o treinamento para → o cluster se reorganiza → reinício a partir do checkpoint. Você já desperdiçou tempo de processamento e dinheiro.
Em hardware voltado ao consumidor, falhas não são casos extremos; são o padrão. Você não consegue adicionar tolerância a falhas como um pensamento posterior. A arquitetura precisa ter a recuperação de falhas incorporada na camada de protocolo desde o primeiro dia, e não ser acoplada como simples tratamento de erros.
Pense em códigos de apagamento (erasure coding), computação redundante de gradientes ou atualizações assíncronas de parâmetros que não bloqueiem por estragglers (nós lentos). Se seu job de treinamento pressupõe 100% de disponibilidade, você está projetando para GPUs de data center, não para a realidade dos nós comuns.
Em hardware voltado ao consumidor, falhas não são casos extremos; são o padrão. Você não consegue adicionar tolerância a falhas como um pensamento posterior. A arquitetura precisa ter a recuperação de falhas incorporada na camada de protocolo desde o primeiro dia, e não ser acoplada como simples tratamento de erros.
Pense em códigos de apagamento (erasure coding), computação redundante de gradientes ou atualizações assíncronas de parâmetros que não bloqueiem por estragglers (nós lentos). Se seu job de treinamento pressupõe 100% de disponibilidade, você está projetando para GPUs de data center, não para a realidade dos nós comuns.