MLOps и инструменты 72 просмотра

All-Reduce

All-Reduce

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

Что такое All-Reduce

All-Reduce — операция, при которой каждый GPU имеет свой тензор, и после операции каждый получает сумму всех тензоров.

До:   GPU 0: [1,2,3]  GPU 1: [4,5,6]  GPU 2: [7,8,9]
После: GPU 0: [12,15,18]  GPU 1: [12,15,18]  GPU 2: [12,15,18]

В ML

В Data Parallel обучении: каждый GPU вычисляет локальные градиенты → All-Reduce усредняет → все обновляют веса одинаково.

Алгоритмы

Алгоритм Шагов Применение
Ring All-Reduce 2(N-1) Стандарт для NVLink
Tree All-Reduce 2 log N Малые данные
Reduce-Scatter + All-Gather 2 Основа FSDP/ZeRO

Производительность

Конфигурация Bandwidth
8× H100 NVLink ~450 GB/s
2 узла × 8 GPU, NDR IB ~50 GB/s
2 узла × 8 GPU, 100G Ethernet ~12 GB/s
import torch.distributed as dist
tensor = torch.randn(1000).cuda()
dist.all_reduce(tensor, op=dist.ReduceOp.SUM)
tensor /= dist.get_world_size()

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

Использует
Необходим для
Включает

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

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

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