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

NCCL

NVIDIA Collective Communications Library

NCCL (NVIDIA Collective Communications Library) — библиотека для коллективных коммуникаций между GPU (All-Reduce, All-Gather и др.). Автоматически оптимизирует передачу данных через NVLink, PCIe и InfiniBand.

Что такое NCCL

NCCL (произносится «никель») — библиотека NVIDIA для оптимизированных коллективных операций между GPU. Используется как backend для PyTorch distributed, DeepSpeed и всех фреймворков распределённого обучения.

Операции

NCCL реализует: All-Reduce, All-Gather, Reduce-Scatter, Broadcast, Reduce, All-to-All, Send/Recv.

Автоматическая оптимизация

NCCL автоматически определяет топологию (NVLink, PCIe, InfiniBand) и выбирает оптимальный алгоритм:

Топология Алгоритм Производительность
NVLink (внутри ноды) NVLS (NVLink SHARP) Максимальная
PCIe (внутри ноды) Ring Средняя
InfiniBand (между нодами) Ring / Tree Зависит от размера

Ключевые переменные окружения

# Отладка
export NCCL_DEBUG=INFO          # Подробные логи
export NCCL_DEBUG_SUBSYS=ALL    # Все подсистемы

# Обнаружение зависаний (ВАЖНО!)
export NCCL_ASYNC_ERROR_HANDLING=1

# Производительность
export NCCL_IB_TIMEOUT=23       # InfiniBand таймаут
export NCCL_NET_GDR_LEVEL=5     # GPUDirect RDMA уровень
export NCCL_P2P_LEVEL=NVL       # NVLink P2P

# Выбор сетевого интерфейса
export NCCL_SOCKET_IFNAME=eth0
export NCCL_IB_HCA=mlx5

Отладка производительности

# Бенчмарк NCCL
git clone https://github.com/NVIDIA/nccl-tests
cd nccl-tests && make
mpirun -np 16 --npernode 8 ./build/all_reduce_perf -b 1M -e 8G -f 2 -g 1

# Ожидаемый bus bandwidth:
# 8x A100 NVLink: ~280 GB/s
# 8x H100 NVLink: ~430 GB/s
# InfiniBand NDR: ~48 GB/s (per GPU)

Типичные проблемы

  1. Зависание — одна GPU не доходит до коллективной операции → все ждут бесконечно. Решение: NCCL_ASYNC_ERROR_HANDLING=1
  2. Медленный All-Reduce — плохой кабель InfiniBand. Проверьте symbol_errors
  3. Busy loop — при ожидании NCCL опрашивает через cudaStreamQuery, создавая фейковую 100% утилизацию GPU
  4. Несовместимость версий — NCCL, драйвер и CUDA должны быть совместимы

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

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

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

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

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