FSDP vs tensor/pipeline parallelism
Чем отличаются FSDP, tensor parallelism и pipeline parallelism при обучении больших моделей?
Короткий ответ
FSDP шардирует параметры/градиенты/optimizer states, tensor parallelism делит операции внутри слоя, pipeline parallelism делит последовательность слоев между устройствами.
Полный разбор
FSDP решает прежде всего проблему памяти: параметры, градиенты и optimizer states хранятся шардами на разных GPU, а нужные веса собираются на время computation. Это удобно, когда модель почти помещается по compute, но не помещается по optimizer/parameter memory.
Tensor parallelism делит матричные операции внутри слоя между GPU, поэтому помогает, когда один слой слишком большой или нужно ускорить compute конкретных блоков. Pipeline parallelism размещает разные слои на разных устройствах и прогоняет microbatches через pipeline; его риск - bubbles и сложность балансировки.
На практике техники комбинируют. Выбор зависит от размера модели, interconnect, batch size, activation memory, optimizer, sequence length и tolerable communication overhead.
Теория
Distributed training - это баланс compute, memory и communication. Нет одной стратегии, которая доминирует во всех режимах.
Типичные ошибки
- Смешивать data parallel и tensor parallel.
- Не упоминать optimizer states в FSDP.
- Забыть про pipeline bubbles.
Как отвечать на собеседовании
- Объясни каждую стратегию через "что именно делится".
- Назови communication overhead как главный trade-off.