GPU Hardware

NCCL

Библиотека NVIDIA для коллективных коммуникаций между GPU в распределённых вычислениях.

Что такое NCCL

NCCL (NVIDIA Collective Communications Library) — библиотека для эффективных коллективных операций между GPU: AllReduce, AllGather, ReduceScatter, Broadcast. Является стандартным транспортом для распределённого обучения в PyTorch, DeepSpeed, Megatron-LM.

NCCL автоматически выбирает оптимальный маршрут передачи данных: NVLink (внутри узла) или InfiniBand/RoCE (между узлами) — в зависимости от топологии.

Основные коллективные операции

Операция Что делает Применение
AllReduce Суммирует и распределяет тензор Синхронизация градиентов
AllGather Собирает части со всех GPU Сбор параметров при ZeRO
ReduceScatter Редукция + шардирование ZeRO-3, FSDP
Broadcast Рассылает тензор со всех GPU Синхронизация начальных весов

Настройка NCCL

# Основные переменные окружения для оптимизации
export NCCL_DEBUG=INFO          # подробный лог для диагностики
export NCCL_IB_DISABLE=0        # включить InfiniBand
export NCCL_SOCKET_IFNAME=eth0  # сетевой интерфейс
export NCCL_TREE_THRESHOLD=0    # алгоритм кольца вместо дерева

# Проверка топологии NCCL
python3 -c "
import torch
torch.distributed.init_process_group('nccl')
# NCCL выведет топологию при NCCL_DEBUG=INFO
"

Диагностика проблем

# Тест связности NCCL между GPU
NCCL_DEBUG=WARN python -m torch.distributed.launch --nproc_per_node=8 \
  -c "import torch; torch.distributed.barrier()"

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

  • NVLink — быстрый транспорт, используемый NCCL внутри узла
  • tensor parallelism — использует NCCL AllReduce
  • DeepSpeed — фреймворк поверх NCCL
  • CUDA — платформа, поверх которой работает NCCL

Готовы запустить GPU-задачу?

Запустить GPU-сервер