Обучение моделей 49 просмотров

Data Parallelism

Data Parallelism

Data Parallelism — стратегия распределённого обучения, при которой копия модели размещается на каждом GPU, а батч данных разделяется между ними. Градиенты синхронизируются через All-Reduce.

Что такое Data Parallelism

Data Parallelism (DP) — самая простая форма распределённого обучения. Каждый GPU хранит полную копию модели и обрабатывает свою часть батча. После вычисления градиентов они усредняются между всеми GPU через All-Reduce.

Как работает

Батч данных: [A B C D E F G H]

GPU 0: модель + [A B]    градиенты_0
GPU 1: модель + [C D]    градиенты_1
GPU 2: модель + [E F]    градиенты_2
GPU 3: модель + [G H]    градиенты_3

All-Reduce: усредняем (grad_0 + grad_1 + grad_2 + grad_3) / 4

Каждый GPU обновляет свои веса одинаковым средним градиентом
 модели остаются синхронизированными

Реализации в PyTorch

Метод Описание Ограничения
DataParallel (DP) Один процесс, копирование модели GPU 0 — узкое место
DistributedDataParallel (DDP) Процесс на каждый GPU Модель должна помещаться в 1 GPU
FSDP Шардинг весов + DP Сложнее настройка
DeepSpeed ZeRO Шардинг optimizer/grad/params Аналог FSDP

Масштабирование

Идеальный Data Parallelism даёт линейное ускорение: 8 GPU → 8× быстрее. На практике:
- 2-4 GPU: ~95% эффективности (NVLink)
- 8 GPU (1 узел): ~90% (NVLink)
- 16-64 GPU (multi-node): 70-85% (зависит от сети)

Когда использовать

  • Модель помещается в VRAM одного GPU
  • Нужно ускорить обучение, увеличив effective batch size
  • Самый простой способ утилизировать несколько GPU
# DDP — стандартный Data Parallelism в PyTorch
import torch.distributed as dist
from torch.nn.parallel import DistributedDataParallel as DDP

dist.init_process_group("nccl")
model = DDP(model.to(local_rank), device_ids=[local_rank])

Связанные термины

Требует
Включает
Использует

Попробуйте на практике

Арендуйте GPU и запустите ML-модели в Intelion Cloud

Начать работу