El protocolo RDMA propio de Meta aguanta un 10% de pérdida de paquetes

El 24 de agosto, Meta publicó los detalles de diseño de MetaRoCE, un protocolo de transporte RDMA desarrollado internamente para sustituir a RoCE estándar. En la OCP Global Summit de octubre se publicarán juntos la especificación completa del protocolo, una implementación de referencia llamada libsoftmetaroce y un conjunto de pruebas de conformidad para producción.

RoCE estándar no aguanta a escala de cientos de miles de tarjetas

RoCE se diseñó bajo la premisa de que la red entrega cada trama en orden, apoyándose en el PFC (Priority Flow Control) de los switches para garantizar que no se pierdan paquetes. Esa premisa funciona bastante bien en clústeres de unas pocas centenas de tarjetas, pero empieza a fallar en la escala actual de Meta.

Según la propia Meta, RoCE estándar espera una entrega ordenada de cada trama, depende del PFC y desaconseja el packet spraying, precisamente la técnica que mejora el rendimiento en redes de gran escala con múltiples planos. Ahí está el conflicto: repartir los paquetes de un mismo flujo por varias rutas a la vez contradice directamente la "entrega en orden". El PFC, además, funciona como contrapresión salto a salto: una congestión en un punto se propaga hacia atrás por toda la ruta, lo que a gran escala tiende a provocar efectos en cadena. Y las comunicaciones colectivas, como all-reduce, necesitan sincronizar miles de aceleradores, de modo que la transferencia más lenta marca el ritmo de todo el trabajo.

El escenario objetivo que menciona Meta es "cientos de miles de GPU distribuidas en varios centros de datos y regiones". A esa escala, depender de los switches para mantener una red sin pérdidas ya es, en la práctica, apostar contra la probabilidad.

La inteligencia se traslada a la tarjeta de red

Meta resume el principio de diseño de MetaRoCE en una frase:

"The fabric sees packets, but the NIC sees intent."
La red solo ve paquetes; la tarjeta de red es la que entiende la intención.

Esto se concreta en seis puntos: entrega nativa fuera de orden, con paquetes repartidos deliberadamente por varias rutas y datos escritos directamente en la dirección de memoria de destino, sin búfer de reordenación; multirruta nativa, en la que cada conexión mantiene varias rutas lógicas que registran por separado su latencia de ida y vuelta y su estado ECN; tolerancia a la pérdida de paquetes, tratada como algo normal y compensada con un mapa de bits de confirmación selectiva, sin necesidad de PFC; control de congestión doble, que combina AIMD en el emisor con señales de tasa justa en el receptor; independencia de la topología, que solo exige marcado ECN y ECMP, y funciona en fat-tree, múltiples planos o switches con búferes reducidos; y conexión unificada, donde una sola cola transporta varios flujos de mensajes ordenados y varias rutas, compartiendo un único controlador de congestión.

Las cifras del clúster de 64 nodos

Las pruebas se realizaron en un clúster de 64 nodos con GPU de AMD. El throughput se mantuvo consistentemente por encima de RoCEv2; con un 1% de pérdida de paquetes se conservó alrededor del 86% del throughput, y con un 10% de pérdida el sistema seguía funcionando. En topologías de 4 y 8 planos, el throughput escaló de forma lineal, con pruebas de hasta 4.000 conexiones simultáneas. Cuando falla un solo plano, el tráfico se redistribuye por sí mismo sin que la capa de aplicación tenga que intervenir.

Entre 64 nodos y "cientos de miles de tarjetas" todavía queda un largo camino. La propia Meta divide el trabajo futuro en tres frentes: el scale-up dentro de un rack necesita optimizar la señalización rápida para operaciones de memoria cortas, eliminando la latencia que introducen los búferes de reordenación y el PFC; el scale-across a escala de miles de kilómetros necesita adaptación por ruta y equidad en enlaces de larga distancia con tiempos de ida y vuelta de milisegundos; y en los escenarios de almacenamiento y caché KV, la idea es usar señales de tasa en el receptor para lidiar con el incast que se produce cuando una sola lectura se abre hacia varios servidores.

El código abierto es un mensaje para los fabricantes de tarjetas de red

Del lado de las tarjetas de red, por ahora solo AMD Pensando cuenta con una implementación verificada; el resto de fabricantes sigue trabajando en ello. Este punto determinará hasta dónde puede llegar MetaRoCE: por muy elegante que sea el protocolo, si no consigue entrar en el firmware de las tarjetas de red más extendidas, seguirá siendo solo una solución interna de Meta.

Publicarlo a través del OCP, alineándolo explícitamente con la iniciativa ESUN (Ethernet Scalable Unified Network), tiene una intención clara: que los fabricantes de tarjetas de red produzcan según esta especificación, ampliando así las opciones de compra de la propia Meta. Es un camino que el ecosistema Ethernet ya recorrió una vez: RoCE le quitó cuota de mercado a InfiniBand gracias a que el ecosistema Ethernet era más barato y tenía más proveedores. Ahora que RoCE se ha convertido en el propio cuello de botella, Meta quiere repetir la jugada: poner primero la especificación sobre la mesa y conseguir que todos la sigan.

Para los equipos que construyen grandes clústeres de cómputo de IA, una vez publicada la especificación de octubre merece la pena revisarla, en especial el punto de que "no hace falta PFC". Eliminar el ajuste del PFC quita de en medio una de las fuentes de problemas más complicadas en la operación diaria.

Fuentes: blog de ingeniería de Meta, CocoLoop, materiales relacionados con la iniciativa ESUN del OCP; cifras como el 86% de throughput aproximado con 1% de pérdida, el funcionamiento mantenido con 10% de pérdida, el clúster de 64 nodos con GPU de AMD y las 4.000 conexiones simultáneas se han verificado según la descripción de pruebas publicada por Meta.