Sobes.tech
Назад к вопросам
Senior
9

Чем pipeline parallelism отличается от tensor parallelism?

Компании, где спрашивали
SelectelSelectel

Ответ от нейросети

sobes.tech AI

Что хотят услышать интервьюеры:

Pipeline parallelism делит модель по слоям: разные части сети выполняются на разных устройствах последовательно. Tensor parallelism делит вычисления внутри одного слоя: один и тот же слой считается несколькими GPU одновременно. Обычно pipeline лучше масштабирует очень глубокие модели, а tensor parallelism — очень большие слои, которые не помещаются на одну GPU.

Определение:

Pipeline parallelism — это способ распределённого обучения, при котором модель разбивается на последовательные стадии, и каждая стадия выполняется на своём устройстве. Данные проходят через эти стадии как через конвейер.

Tensor parallelism — это способ, при котором один слой или одна операция разбивается по тензорам между несколькими устройствами. GPU совместно считают один и тот же слой, деля матрицы, активации или веса на части.

Главное отличие: pipeline делит модель по глубине, а tensor parallelism делит вычисление внутри слоя по ширине.

Пример использования:

Допустим, есть очень большая языковая модель.

  • При pipeline parallelism первые 12 слоёв работают на GPU 0, следующие 12 — на GPU 1, ещё 12 — на GPU 2.
  • При tensor parallelism один большой attention-слой или MLP-слой разбивается между GPU 0 и GPU 1, и они вместе вычисляют результат этого слоя.
Pipeline parallelism:
Input -> [Layers 1-12 on GPU0] -> [Layers 13-24 on GPU1] -> [Layers 25-36 on GPU2] -> Output

Tensor parallelism:
Input -> [One layer split across GPU0 + GPU1 + GPU2] -> Output

Пояснение кода:

Код не требуется, потому что различие лучше объясняется на схеме вычислений.

Если разложить пример по шагам:

  1. В pipeline parallelism входной батч проходит через первую стадию на первой GPU.
  2. После завершения стадии активации передаются на следующую GPU.
  3. Пока одна GPU обрабатывает свой микро-батч, другие GPU могут уже работать со следующими микро-батчами — это повышает загрузку.
  4. В tensor parallelism один слой разбивается на части, и каждая GPU считает свою часть матрицы.
  5. Затем результаты частичных вычислений объединяются, чтобы получить итог слоя.

Ключевые моменты:

  • Pipeline parallelism делит слои между устройствами, tensor parallelism делит операции внутри слоя.
  • Pipeline проще понять и внедрить на уровне архитектуры модели, но может страдать от «пузырей» в конвейере.
  • Tensor parallelism требует более частых синхронизаций между GPU, потому что части одного слоя зависят друг от друга.
  • Pipeline удобен для очень глубоких моделей, tensor parallelism — для очень широких слоёв и больших матриц.
  • На практике их часто комбинируют вместе, чтобы масштабировать большие модели эффективнее.