Workflow Multi-GPU e Distribuído
O EvoX tem suporte experimental para workflows distribuídos, permitindo-lhe executar qualquer algoritmo evolutivo normal em múltiplas GPUs ou até em múltiplas máquinas. Isto pode acelerar significativamente o processo de otimização, especialmente para problemas que consomem muito tempo.
Como utilizar
Para utilizar o workflow distribuído, precisa de configurar algumas coisas:
- Certifique-se de que fixou manualmente a semente do gerador de números aleatórios.
torch.manual_seed(seed)
# Optional: set the seed for numpy
np.random.seed(seed)
# Optional: use deterministic algorithms
torch.use_deterministic_algorithms(True)
Importante: Certifique-se de definir a semente para todos os geradores de números aleatórios antes de quaisquer operações torch ou numpy. Isto garante que o gerador de números aleatórios está num estado conhecido antes de quaisquer operações serem realizadas.
- Utilize o comando
torch.distributedoutorchrunpara lançar o seu script. Por exemplo:
torchrun
--standalone
--nnodes=1
--nproc-per-node=$NUM_GPUS
your_program.py (--arg1 ... train script args...)
Dica:
torchruné a forma recomendada de lançar programas torch distribuídos. Para mais informações, consulte a documentação do PyTorch.