MLOps и инструменты
80 просмотров
NCCL
NVIDIA Collective Communications Library
NCCL — библиотека NVIDIA для коллективных операций между GPU. Обеспечивает All-Reduce, All-Gather и другие примитивы, необходимые для распределённого обучения.
Что такое NCCL
NCCL (произносится «никель») — библиотека для эффективного обмена данными между GPU. PyTorch, DeepSpeed и Megatron-LM используют NCCL для синхронизации градиентов и параметров.
Коллективные операции
| Операция | Что делает | Применение |
|---|---|---|
| All-Reduce | Суммирует и раздаёт всем | Градиенты (DDP) |
| All-Gather | Собирает полный тензор | Параметры (FSDP/ZeRO-3) |
| Reduce-Scatter | Суммирует по частям | Шардинг градиентов |
| Broadcast | Копирует с одного на все | Инициализация |
| All-to-All | Каждый — каждому | MoE Expert Parallelism |
Транспорт
Внутри узла: NVLink → P2P (до 900 GB/s на H100)
Между узлами: InfiniBand → RDMA (до 400 Gbps NDR)
NCCL автоматически строит топологию и выбирает оптимальный путь.
Ключевые переменные
export NCCL_DEBUG=INFO # Подробные логи
export NCCL_IB_HCA=mlx5_0 # IB-адаптер
export NCCL_SOCKET_IFNAME=eth0 # Сетевой интерфейс
export NCCL_ASYNC_ERROR_HANDLING=1 # Не зависать при ошибках
Типичные проблемы
- Hanging: зависание на init — firewall, маршрутизация
- Timeout: увеличить NCCL_IB_TIMEOUT
- Slow: Socket вместо IB — проверить NCCL_DEBUG=INFO
Связанные термины
Используется в
Требует
Является частью
Включает
Использует
Необходим для