Flujo de trabajo distribuido y multi-GPU
EvoX cuenta con soporte experimental para flujos de trabajo distribuidos, lo que permite ejecutar cualquier algoritmo evolutivo normal en múltiples GPUs o incluso en varias máquinas. Esto puede acelerar significativamente el proceso de optimización, especialmente para problemas que consumen mucho tiempo.
Cómo usarlo
Para utilizar el flujo de trabajo distribuido, es necesario configurar algunos elementos:
- Asegúrate de fijar manualmente la semilla del generador de números aleatorios.
torch.manual_seed(seed)
# Optional: set the seed for numpy
np.random.seed(seed)
# Optional: use deterministic algorithms
torch.use_deterministic_algorithms(True)
Importante: Asegúrate de establecer la semilla para todos los generadores de números aleatorios antes de cualquier operación de
torchonumpy. Esto garantiza que el generador de números aleatorios esté en un estado conocido antes de que se realice cualquier operación.
- Utiliza el comando
torch.distributedotorchrunpara lanzar tu script. Por ejemplo:
torchrun
--standalone
--nnodes=1
--nproc-per-node=$NUM_GPUS
your_program.py (--arg1 ... train script args...)
Consejo:
torchrunes la forma recomendada de lanzar programas detorchdistribuidos. Para más información, consulta la documentación de PyTorch.