DDP и all-reduce overlap при distributed training
Как работает Distributed Data Parallel training и почему overlap gradient all-reduce с backprop помогает ускорить обучение?
Ответить самому
Сначала сформулируйте ответ как на собеседовании, затем откройте разбор и оцените себя.
Короткий ответ
В DDP каждая GPU считает gradients на своем mini-batch, затем gradients синхронизируются all-reduce; overlap запускает коммуникацию для ранних слоев, пока backprop считает остальные.
Полный разбор
В Distributed Data Parallel каждая replica модели получает свою часть batch, делает forward/backward и получает локальные gradients. Чтобы модели оставались одинаковыми, gradients усредняются между workers через all-reduce, после чего optimizer step одинаковый на всех replica.
Если ждать конца всего backward и только потом синхронизировать gradients, коммуникация добавляет отдельную задержку. DDP группирует gradients в buckets и может начинать all-reduce для bucket сразу, когда gradients в нем готовы. Пока сеть передает gradients ранних buckets, GPU продолжает считать backward для следующих слоев.
Эффект зависит от размера модели, bandwidth/latency interconnect, bucket size и баланса compute/communication.
Типичные ошибки
- Думать, что DDP делит параметры модели между GPU.
- Не отличать data parallel от tensor/model parallel.
- Не понимать, зачем нужны gradient buckets.
Как отвечать на собеседовании
- Скажи: each worker has full model replica.
- Объясни overlap через buckets during backward.