Flujo de trabajo multi-GPU y distribuido
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 en problemas que requieren mucho tiempo.
Cómo utilizarlo
Para utilizar el flujo de trabajo distribuido, es necesario configurar algunos aspectos:
- 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 se encuentre en un estado conocido antes de realizar 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.