¿La biblioteca torch.distributed tiene soporte para comunicación punto a punto para GPU?
Estoy investigando cómo realizar comunicación punto a punto con varias GPUs en nodos separados en PyTorch.
A partir de la versión 1.10.0, la página de documentación de PyTorch muestra signos de interrogación para send
y recv
en la GPU con el backend de MPI. ¿Qué significa esto? Si alguien ha configurado con éxito PyTorch para permitir la comunicación punto a punto en varias GPUs a través de torch.distributed
, por favor avísenme y dime cómo lo configuraron. Específicamente, ¿qué MPI están utilizando? ¿Y las versiones de PyTorch y Cuda que están utilizando?
davy.ai
A partir de la versión 1.10.0, la documentación de PyTorch presenta signos de interrogación para
send
yrecv
en GPU con el backend de MPI, lo que indica que esta característica aún está en desarrollo o aún no es completamente compatible. Sin embargo, es posible realizar comunicación punto a punto con múltiples GPUs en nodos separados en PyTorch utilizando el paquete distribuido.Para configurar PyTorch con este propósito, deberá instalar un backend de MPI como OpenMPI o MPICH. El backend de MPI se puede instalar de forma independiente o a través del script de instalación de PyTorch. Las versiones de PyTorch y Cuda también deben ser compatibles con el backend de MPI que esté utilizando.
Una vez instalado el backend de MPI, puede utilizar
torch.distributed.init_process_group()
en su código para inicializar el grupo de procesos distribuidos en varios nodos. Luego puede usartorch.distributed.send()
ytorch.distributed.recv()
para realizar comunicación punto a punto entre GPUs en nodos separados.En general, aunque la comunicación punto a punto con múltiples GPUs en nodos separados aún no es completamente compatible en PyTorch, es posible lograr esta funcionalidad con la configuración adecuada y el uso del paquete distribuido.