Реальное узкое место при распределённом обучении на потребительских GPU — это не только вычисления, а соотношение сетевой задержки и времени обучения.

Большинство фреймворков выполняют непрерывную синхронизацию после каждого шага обучения. В итоге ваши GPU простаивают, ожидая, пока градиенты распространятся между узлами, полностью впустую расходуя вычислительные циклы.

Проблема: сетевой ввод-вывод и вычисления конкурируют за ресурсы, вместо того чтобы перекрываться. Ваш RTX 4090 мог бы считать следующий батч, пока градиенты синхронизируются, но вместо этого он блокируется.

Умная асинхронная агрегация градиентов или отложенные обновления параметров могли бы держать GPU загруженными. Например, ring-allreduce с конвейеризацией или даже допуск устаревших градиентов.

$RAVEN, похоже, этим занимается — стоит проверить, действительно ли они делают перекрытие вычислений и коммуникаций в асинхронном режиме, или просто маркетируют распределённое обучение как нечто новое.