Pipeline parallelism — метод разделения модели на последовательные части, обучаемые конвейером на разных устройствах для повышения масштабируемости.
Определение
Pipeline parallelism — это стратегия распределённого обучения, при которой модель делится на последовательные сегменты (pipeline stages), каждая из которых размещается на отдельном GPU или узле. В отличие от tensor parallelism, где параллелятся отдельные матричные операции, pipeline parallelism параллелит выполнение forward и backward pass для разных частей модели и разных мини-батчей.
Такой подход позволяет обучать модели, которые не помещаются в память одного ускорителя, и повышать throughput при условии правильной организации конвейера.
Как работает
Модель разбивается на несколько последовательных блоков. Каждый блок выполняется на отдельном GPU. Обработка данных происходит конвейерно: пока первая стадия обрабатывает batch N+1, вторая стадия обрабатывает batch N, третья — batch N–1 и так далее.
Ключевые шаги механизма:
- Разделение модели — архитектура делится на фрагменты одинаковой вычислительной нагрузки.
- Конвейеризация — мини-батч разбивается на микробатчи, которые передаются по стадиям.
- Параллельный forward pass — разные стадии одновременно работают над разными микробатчами.
- Параллельный backward pass — градиенты также передаются по стадиям в обратном порядке.
- Синхронизация — обеспечение корректного прохождения данных и градиентов по конвейеру.
Эффективность pipeline parallelism определяется балансом нагрузки между стадиями: если одна стадия работает значительно дольше других, возникает pipeline bubble — простой в конвейере.
Где применяется
- Обучение крупных моделей, превышающих память одного GPU.
- Тренировка LLM с сотнями слоёв.
- Комбинация с tensor parallelism в Megatron-LM и DeepSpeed.
- Архитектуры, где можно легко разделить слои на последовательные сегменты.
- Обучение на больших кластерах с NVLink/InfiniBand.
Практические примеры использования
В Megatron-LM pipeline parallelism используется для обучения больших Transformer-моделей: слои равномерно распределяются между GPU, а мини-батч разбивается на микробатчи для конвейерной обработки. Такая схема позволяет существенно увеличить общую производительность.
В DeepSpeed pipeline parallelism применяется вместе с ZeRO для уменьшения memory footprint и оптимизации распределения параметров, активаций и градиентов.
При обучении особенно глубоких моделей pipeline parallelism снижает требования к памяти, позволяя размещать слои модели между устройствами без изменения архитектуры.
В гибридных системах pipeline parallelism комбинируется с tensor parallelism: конвейер разделяет модель по слоям, а внутри каждого блока матричные операции распределяются по нескольким GPU.
Ключевые свойства pipeline parallelism
- Последовательное разбиение — подходит для архитектур с линейной структурой слоёв.
- Высокий throughput — при правильной настройке конвейера.
- Требование равномерной нагрузки — дисбаланс создаёт простои.
- Зависимость от микробатчинга — размер микробатчей определяет эффективность конвейера.
Проблемы и ограничения
- Pipeline bubbles — простой стадий при дисбалансе или малом размере микробатча.
- Сложность синхронизации — требуется чёткое управление передачею активаций и градиентов.
- Высокие коммуникационные требования — нужна быстрая межсоединительная сеть.
- Чувствительность к архитектуре — не все модели легко разбить на последовательные блоки.
Преимущества и ограничения
- Плюс: позволяет обучать очень глубокие модели, не помещающиеся в один GPU.
- Плюс: повышает производительность при большом количестве микробатчей.
- Плюс: легко комбинируется с другими типами параллелизма.
- Плюс: уменьшает memory footprint на каждом устройстве.
- Минус: чувствительность к дисбалансу стадий.
- Минус: требует тщательной настройки микробатчинга.
- Минус: создаёт дополнительные коммуникационные накладные расходы.
- Минус: сложнее дебажить и профилировать.
Связанные термины
- Model parallelism
- Tensor parallelism
- Expert parallelism
- Distributed training
- Megatron-LM
- DeepSpeed
- ZeRO
- Microbatching