Многопроцессорный и распределённый рабочий процесс

Многопроцессорный и распределённый рабочий процесс

EvoX имеет экспериментальную поддержку распределённых рабочих процессов, позволяющую запускать любые обычные эволюционные алгоритмы на нескольких GPU или даже нескольких машинах. Это может значительно ускорить процесс оптимизации, особенно для ресурсоёмких задач.

Как использовать

Для использования распределённого рабочего процесса необходимо настроить несколько вещей:

  1. Убедитесь, что вы вручную зафиксировали зерно генератора случайных чисел.
torch.manual_seed(seed)
# Опционально: установить зерно для numpy
np.random.seed(seed)
# Опционально: использовать детерминированные алгоритмы
torch.use_deterministic_algorithms(True)

Важно: Убедитесь, что зерно установлено для всех генераторов случайных чисел до любых операций torch или numpy. Это гарантирует, что генератор случайных чисел находится в известном состоянии перед выполнением любых операций.

  1. Используйте команду torch.distributed или torchrun для запуска вашего скрипта. Например:
torchrun
    --standalone
    --nnodes=1
    --nproc-per-node=$NUM_GPUS
    your_program.py (--arg1 ... train script args...)

Совет: torchrun — рекомендуемый способ запуска распределённых программ torch. Для получения дополнительной информации см. документацию PyTorch.