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-сервер