多GPU和分布式工作流

EvoX 对分布式工作流提供了实验性支持,允许您在多个 GPU 甚至多个机器上运行任何常规的演化算法。这可以显著加速优化过程,尤其是对于耗时的问题。

如何使用

要使用分布式工作流,你需要设置以下内容:

  1. 请确保您已手动固定随机数生成器的种子。

torch.manual_seed(seed)
# Optional: set the seed for numpy
np.random.seed(seed)
# Optional: use deterministic algorithms
torch.use_deterministic_algorithms(True)

重要

确保在执行任何 torch 或 numpy 操作之前为所有随机数生成器设置种子。这可以确保在执行任何操作之前,随机数生成器处于一个已知状态。

  1. 使用 torch.distributedtorchrun 命令来启动您的脚本。例如:

torchrun
    --standalone
    --nnodes=1
    --nproc-per-node=$NUM_GPUS
    your_program.py (--arg1 ... train script args...)

小技巧

torchrun 是推荐用来启动分布式 torch 程序的方式。更多信息请参阅 PyTorch 文档