English · Español
Lab 01 — Microbenchmark de comunicación colectiva¶
🇪🇸 Mide AllReduce real en 2 nodos × 8 GPUs. Compáralo con la teoría del §03. La brecha es la historia.
Objetivo¶
Corre nccl-tests en un alquiler de 2 nodos, 8 GPUs por nodo. Mide el bandwidth de AllReduce para tamaños de mensaje de 1 MB, 100 MB y 1 GB. Compáralo con los techos teóricos de NVLink + InfiniBand. Explica la brecha.
Aquí es donde la matemática de bandwidth del §03 se encuentra con un reloj de pared.
Prerrequisitos¶
- Teoría §03 leída.
- Cuenta en la nube capaz de aprovisionar instancias multi-nodo, con RDMA GPU-a-GPU habilitado. Un solo nodo de 8 GPUs no es suficiente — necesitamos cruzar la frontera InfiniBand.
- Un presupuesto de ~$15-20 para una corrida de 1 hora.
Target de hardware¶
| Proveedor | SKU | Spec | Coste por hora | Total |
|---|---|---|---|---|
| RunPod | "2× H100 SXM 8-pack (Secure Cloud)" | 2 nodos × 8× H100 SXM5, NVLink intra + InfiniBand inter | ~\(3.50/h por H100 × 16 ≈ ~\)56/h | ~$15 por 15 min |
| Lambda Cloud | "8× H100 SXM5" cluster reservado + multi-nodo | similar | ~\(2.50/h por H100 × 16 ≈ ~\)40/h | ~$10 por 15 min |
| CoreWeave | par "HGX H100 ×8" con NDR IB | 2 nodos × 8× H100, NDR 400 Gb/s IB | a cotizar | ~$15-20 / hora |
Nota: no todo alquiler "multi-GPU" tiene RDMA real entre nodos. Busca SKUs que anuncien explícitamente NDR InfiniBand o 400 Gb/s RoCE entre nodos. Si el enlace inter-nodo es "Ethernet compartido", tus números de AllReduce serán 10× más lentos y habrás medido la cosa equivocada.
Alternativa A100 (más barata, lecciones similares de topología):
- RunPod 2 nodos × 8× A100 SXM4 con HDR IB (200 Gb/s). ~\(1.80/h × 16 ≈ ~\)30/h. Total para corrida de 30 min: ~$15.
Setup¶
# 1. On each node, install nccl-tests.
git clone https://github.com/NVIDIA/nccl-tests
cd nccl-tests
make MPI=1 MPI_HOME=/usr/local/mpi CUDA_HOME=/usr/local/cuda
# 2. Verify NCCL sees the right interconnect.
export NCCL_DEBUG=INFO
export NCCL_DEBUG_SUBSYS=INIT,NET
# 3. Verify InfiniBand is up.
ibstatus # Expect "LinkUp" on at least one mlx5_*.
ibv_devinfo # Expect NDR (400 Gb/s) or HDR (200 Gb/s) per port.
Corre el benchmark¶
# Single-node, 8 GPU intra-node AllReduce (sanity check)
./build/all_reduce_perf -b 1M -e 1G -f 2 -g 8
# Two-node, 16 GPU AllReduce
mpirun -np 16 \
--hostfile hostfile \
-x NCCL_DEBUG=INFO \
-x NCCL_IB_DISABLE=0 \
-x NCCL_NET_GDR_LEVEL=2 \
./build/all_reduce_perf -b 1M -e 1G -f 2 -g 1
Donde hostfile es:
El flag -f 2 escala los tamaños de mensaje por 2× desde -b hasta -e.
Qué registras¶
Para cada tamaño de mensaje, nccl-tests reporta:
time(us): tiempo de reloj de pared mediano por AllReduce.algbw(GB/s): bandwidth algorítmico = \(D / t\) (tamaño de datos / tiempo, por rank).busbw(GB/s): bandwidth del bus = \(\text{algbw} \cdot \frac{2(N-1)}{N}\) — tiene en cuenta el factor \(2(N-1)/N\) en ring AllReduce, así que debería acercarse al bandwidth del enlace.
busbw es el número a comparar contra el pico teórico de NVLink / InfiniBand.
Resultados esperados (16× H100, NVLink + 400 Gb/s NDR IB)¶
| Tamaño de mensaje | Tiempo esperado | algbw esperado |
busbw esperado |
Notas |
|---|---|---|---|---|
| 1 MB | ~50-100 µs | ~10-20 GB/s | ~9-18 GB/s | Limitado por latencia; algoritmo tree; los saltos de switch dominan |
| 100 MB | ~3-5 ms | ~25-35 GB/s | ~23-33 GB/s | Región de cruce |
| 1 GB | ~25-40 ms | ~25-40 GB/s | ~23-37 GB/s | Limitado por bandwidth; el IB inter-nodo es el techo |
[fuente: números publicados de benchmark NCCL en setups de 2 nodos de clase DGX; notas de release de NCCL 2023-2024]
Comprobación de sanidad vs teoría¶
NDR IB inter-nodo es 400 Gb/s = 50 GB/s unidireccional por puerto. Con IB single-port por nodo y ring AllReduce en \(N = 16\):
Así que busbw debe acercarse a 50 GB/s según \(D\) crece. Si mides ~30-40 GB/s en el AllReduce de 1 GB, eso es el 60-80% del teórico — típico del mundo real. La brecha es:
- Overhead del protocolo (cabeceras NCCL, ACKs).
- Overhead de memcopy de GPU a NIC (mitigado por GPUDirect RDMA, gobernado por
NCCL_NET_GDR_LEVEL). - Contención del buffer del switch IB.
Intra-nodo (nodo único, solo 8× H100)¶
Para el AllReduce intra-nodo de 8 GPUs sobre NVLink/NVSwitch, el bandwidth del enlace es 900 GB/s. Teoría para AllReduce de 1 GB en N=8:
Deberías medir ~2.5-3 ms (75-85% del teórico). busbw debe acercarse a 700-800 GB/s.
La enorme brecha entre intra-nodo (700+ GB/s) e inter-nodo (~40 GB/s) es el punto entero de este lab.
Prompt de explicación de la brecha¶
Escribe un informe de 1 página respondiendo:
- ¿Dónde está el precipicio? Traza
busbwvs tamaño de mensaje. La curva intra-nodo debe estabilizarse cerca de 700 GB/s; la curva inter-nodo debe estabilizarse cerca de 40 GB/s. Identifica el tamaño de mensaje de cruce. - ¿Por qué el inter-nodo es ~20× más lento que el intra-nodo? Enmárcalo en términos de: bandwidth NVLink por GPU (900 GB/s) vs bandwidth IB por nodo (50 GB/s) dividido entre 8 GPUs (6.25 GB/s/GPU). El factor es ~140× a nivel de cable; la planificación jerárquica de NCCL lo reduce al ~20× observado.
- ¿Qué doblaría tu bandwidth inter-nodo? IB dual-port (800 Gb/s por nodo), o dos NICs por nodo. Algunas SKUs de H100 envían con hasta 8× NIC/nodo — usadas a escala SuperPOD.
- ¿Qué significa esto para el entrenamiento distribuido? La sincronización de gradiente de un modelo de 70B (~140 GB de gradientes) tarda ~5 s en esta red. El paso de cómputo a 200 ms significa que estamos 25× por encima del presupuesto para AllReduce a menos que solapemos.
Entregables¶
experiments/x4-collectives/manifest.json— versiones, seeds, detalles de SKU, variables de entorno de NCCL.experiments/x4-collectives/nccl_log.txt— salida completa de debug de NCCL (prueba que la topología fue detectada).experiments/x4-collectives/results.csv— message_size, time, algbw, busbw, theoretical_busbw, fraction.experiments/x4-collectives/REPORT.md— la página de explicación de la brecha.
Definition of Done¶
-
nccl-testscorrió con NCCL_DEBUG=INFO mostrando la topología correcta (NVLink intra, IB inter). - Los tres tamaños de mensaje medidos para las configuraciones solo-intra-nodo e inter-nodo.
-
busbwen 1 GB está dentro del 60-90% del teórico para ambas configuraciones. - El informe explica la brecha intra-vs-inter con números concretos.
Enlaces cruzados¶
theory/03-interconnects-and-topology.md: la matemática que estás verificando.- Fase 35 — Entrenamiento distribuido: donde esto importa para el tiempo de entrenamiento end-to-end.
Referencias¶
- NVIDIA NCCL Developer Guide, 2024.
- Repositorio NVIDIA NCCL Tests (github.com/NVIDIA/nccl-tests).
- Patarasuk P. y Yuan X. 2009, Bandwidth-Optimal AllReduce Algorithms, JPDC.
- NVIDIA DGX H100 Architecture, 2023.
- Especificaciones NDR InfiniBand (Mellanox / NVIDIA Networking).