Я пытаюсь понять, в чем принципиальная разница между стратегией Tensorflow Mirror и стратегией распределения Horovod.
Из документации и исследования исходного кода я обнаружил, что Хоровод (https://github.com/horovod/horovod) использует протокол передачи сообщений (MPI) для связи между несколькими узлами. В частности, он использует all_reduce, all_gather MPI.
Из моих наблюдений (я могу ошибаться) Зеркальная стратегия также использует алгоритм all_reduce (https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/distribute).
Оба они используют параллельный к данным синхронный тренинг.
Так что я немного запутался, чем они отличаются? Разница только в реализации или есть другая (теоретическая) разница?
А как производительность зеркальной стратегии по сравнению с хороводом?