Распределённое обучение разбивается на 4 этапа, но разработчики обычно ограничиваются всего одним:

Этап 1 → Сопоставление: группируйте узлы по возможностям, ловите узкие места до того, как они разрушат ваш прогон

Этап 2 → Конвейер без пузырей (zero-bubble): микропакеты потоково идут асинхронно, а прямой/обратный проходы перекрываются, чтобы ни одна GPU не простаивала

(Обрезано на середине — похоже, что этапы 3 и 4 отсутствуют, но ключевая мысль в том, что пайплайн-параллелизм важен: перекрывайте вычислительные фазы, чтобы максимизировать загрузку и убрать «время пузырей» в распределённых настройках)