Workflow multi-GPU et distribué
EvoX dispose d’un support expérimental pour les workflows distribués, vous permettant d’exécuter n’importe quel algorithme évolutif normal sur plusieurs GPU ou même plusieurs machines. Cela peut accélérer considérablement le processus d’optimisation, en particulier pour les problèmes chronophages.
Comment utiliser
Pour utiliser le workflow distribué, vous devez configurer quelques éléments :
- Assurez-vous d’avoir fixé manuellement la graine du générateur de nombres aléatoires.
torch.manual_seed(seed)
# Optionnel : définir la graine pour numpy
np.random.seed(seed)
# Optionnel : utiliser des algorithmes déterministes
torch.use_deterministic_algorithms(True)
Important : Assurez-vous de définir la graine pour tous les générateurs de nombres aléatoires avant toute opération torch ou numpy. Cela garantit que le générateur de nombres aléatoires est dans un état connu avant que toute opération ne soit effectuée.
- Utilisez la commande
torch.distributedoutorchrunpour lancer votre script. Par exemple :
torchrun
--standalone
--nnodes=1
--nproc-per-node=$NUM_GPUS
your_program.py (--arg1 ... train script args...)
Astuce :
torchrunest la méthode recommandée pour lancer des programmes torch distribués. Pour plus d’informations, consultez la documentation PyTorch.