ParalelismoRuta Rendimiento

All-reduce (anillo y árbol)

Leerlo en el Capítulo 5 · checkpoint +50 XP →

Suma un buffer entre todos los rangos y entrega el resultado a todos. La colectiva de la que vive el entrenamiento con paralelismo de datos.

El all-reduce en anillo ordena n rangos en un anillo y ejecuta dos fases (reduce-scatter y luego all-gather) de n−1 pasos cada una. Cada rango envía y recibe ~2(n−1)/n × el tamaño del buffer:

T_anillo ≈ 2(n−1)/n · S/B  +  2(n−1) · α

donde S son los bytes, B el ancho de banda por enlace y α la latencia por paso. El término de ancho de banda casi no crece con n. El de latencia sí, y eso castiga a los mensajes pequeños a gran escala.

Los algoritmos de árbol (el doble árbol binario de NCCL) reducen el término de latencia a ~log₂(n) pasos y ganan con mensajes pequeños y muchísimos rangos.

El bus bandwidth, el número que reporta nccl-tests, elimina el factor 2(n−1)/n para que puedas compararlo directamente con la velocidad del enlace. Un nodo NVLink sano muestra cientos de GB/s. Uno con un enlace degradado muestra cifras de PCIe.

Usa el widget para ver cómo se relacionan el tamaño, el número de rangos y el ancho de banda.

EN VIVO Modelo de costo de all-reduce
anilloárbol
1 µs100 µs10.0 ms1.0 s1 KB100 KB10 MB1 GBtamaño del mensajetiempoárbolanillotú
Anillo
14.0 ms
Árbol
13.4 ms
Ancho de banda del algoritmo
23.6 GB/s
Ancho de banda del bus (anillo)
43.7 GB/s

Modelo α-β: anillo = 2(n−1)/n·S/B + 2(n−1)·α; árbol ≈ 2·S/B + 2·log₂(n)·α. NCCL real elige según el tamaño del mensaje y la topología.

Úsalo en una misión

Relacionado

Fuentes y lecturas adicionales

Escrito para LazyLab con nuestras propias palabras; las fuentes se citan para profundizar y verificar.