Horovod объединяет NCCL и MPI в оболочку для распределенного глубокого обучения, например, в TensorFlow.Ранее я не возглавлял NCCL и изучал функциональность, а на веб-сайте Nvidia говорится о NCCL:
Библиотека коллективных коммуникаций NVIDIA (NCCL) реализует мульти-GPU и мульти-GPU.примитивы коллективной связи узлов, оптимизированные по производительности для графических процессоров NVIDIA.
Из вводного видео о NCCL Я понял, что NCCL работает через PCIe, NVLink, Native Infiniband, Ethernet и может даже определять, имеет ли смысл GPU Direct через RDMA в текущемаппаратная топология и использует ее прозрачно.
Итак, я задаюсь вопросом, зачем нужен MPI в Horovod?Насколько я понимаю, MPI также используется для эффективного обмена градиентами между распределенными узлами с помощью парадигмы allreduce.Но, насколько я понимаю, NCCL уже поддерживает эти функции.
Значит, MPI используется только для простого планирования заданий в кластере?Для распределенного глубокого обучения на процессоре, так как мы не можем использовать там NCCL?
Я был бы очень признателен, если бы кто-то мог объяснить, в каких сценариях MPI и / или NCCL используются для распределенного глубокого обучения и каковы их обязанности во время учебной работы.