FSDP
Встроенный в PyTorch способ обучать модели, не помещающиеся на одну карту. Соответствует третьей стадии ZeRO: веса, градиенты и состояние оптимизатора разбиваются между участвующими GPU.
Модель делится на блоки — часто по одному блоку трансформера согласно политике обёртывания. Перед прямым проходом через блок его полные веса собираются операцией all-gather, вычисление выполняется, и копия сразу выбрасывается, освобождая память. Обратный проход делает то же и завершается reduce-scatter, чтобы каждая карта хранила лишь свой фрагмент градиентов. В итоге целиком где-либо существует лишь один блок за раз. Правильная политика важна: слишком мелкое разбиение даёт шквал мелких передач, слишком крупное — всплески памяти. На практике FSDP вытеснил DeepSpeed в проектах на PyTorch.