RDMA
Remote Direct Memory Access
RDMA (Remote Direct Memory Access) — технология прямого доступа к памяти удалённого сервера без участия CPU. Ключевой компонент высокоскоростных сетей для распределённого ML-обучения.
Что такое RDMA
RDMA (Remote Direct Memory Access) — сетевая технология, позволяющая одному серверу читать и писать в память другого напрямую, минуя CPU и операционную систему обоих узлов. Это даёт минимальную латентность (<1 мкс) и максимальную пропускную способность.
Почему это важно для ML
При распределённом обучении GPU-серверы постоянно обмениваются градиентами через All-Reduce. Каждую итерацию нужно синхронизировать гигабайты данных между всеми узлами. С обычным TCP/IP это создаёт огромный оверхед — CPU тратит время на копирование данных между буферами, а сетевой стек добавляет латентность.
RDMA решает это:
- Zero-copy: данные идут напрямую из GPU-памяти одного узла в GPU-память другого
- Kernel bypass: обход сетевого стека ОС
- CPU offload: CPU свободен для других задач
Реализации RDMA
| Технология | Сеть | Скорость | Применение |
|---|---|---|---|
| InfiniBand | Выделенная IB-сеть | 200-800 Gbps | AI-кластеры, HPC |
| RoCE v2 | Ethernet | 25-400 Gbps | Облачные GPU |
| iWARP | Ethernet | 10-100 Gbps | Хранилища |
GPUDirect RDMA
NVIDIA GPUDirect RDMA позволяет передавать данные между GPU разных серверов без промежуточного копирования в CPU-память:
GPU сервера A → NIC → Сеть → NIC → GPU сервера B
(без копирования в RAM)
Это критично для NCCL — библиотеки коллективных операций NVIDIA, используемой в PyTorch Distributed, DeepSpeed и Megatron-LM.
Диагностика
# Проверка RDMA-устройств
rdma link show
# Тест пропускной способности
ib_write_bw -d mlx5_0 --report_gbits
# Проверка GPUDirect
nvidia-smi topo -m # Показывает топологию GPU-NIC