L’encombrement du réseau n’est pas quelque chose de nouveau, mais le problème a été exacerbé par les besoins de l’IA avec le traitement de grandes quantités de données. Pour éviter ce goulet d’étranglement, plusieurs sociétés (OpenAI, AMD, Broadcom, Intel, Microsoft et Nvidia) se sont réunis dans le cadre de l'OCP (Open Compute Project) pour élaborer un protocole réseau spécifique pour optimiser le trafic entre un cluster GPU. Baptisé MRC (Multipath Reliable Connection) et destiné à des modèles entraînés sur plus de 100 000 GPU, il vise à répartir le trafic simultanément sur des centaines de chemins réseau plutôt que les canaliser vers quelques voies susceptibles d’être facilement encombrées. « La congestion du réseau, les pannes de liaison et de périphériques sont les causes les plus courantes de retard et de gigue lors des transferts », a écrit un porte-parole d'OpenAI dans un post de blog annonçant le projet. « Ces problèmes deviennent plus fréquents et plus difficiles à résoudre à mesure que la taille du cluster augmente » ajoute la société. Elle précise qu’une seule défaillance peut entraîner l’arrêt d’une tâche d’entraînement obligeant de redémarrer à partir d’un point de contrôle enregistré ou bloquant le travail pendant plusieurs secondes pendant que le réseau recalcule les routes.

De telles interruptions sont coûteuses tant en termes de cycles GPU que de temps. « Plus la tâche exécutée est importante, plus l’impact d’une simple fluctuation ou d’une défaillance de connexion est grand. Ces charges de travail agissent comme une sorte d’« amplificateur de défaillance », il est donc devenu essentiel de prévenir cela », a déclaré OpenAI. Ce dernier a piloté le développement du protocole et les autres partenaires ont apporté d’importantes contributions techniques. Dans le blog, le fournisseur indique par exemple que MRC « étend RDMA sur Ethernet convergé (RoCE) v2, une norme qui permet un accès direct à la mémoire à distance accéléré par le matériel entre les GPU et les CPU ». Le protocole reprend les travaux de Nvidia pour proposer un routage adaptatif et le contrôle de congestion. MRC s’appuie également sur des techniques développées par l’Ultra Ethernet Consortium (UEC) autour du routage basé sur SRv6 (Segment Routing over IPv6) afin de prendre en charge les réseaux IA à grande échelle.

Plusieurs éléments dans le protocole MRC

Pour expliquer MRC, OpenAI indique avoir d’abord mis en place une topologie réseau redondante. « Au lieu de traiter chaque interface réseau comme une liaison de 800 Gb/s, nous la divisons en plusieurs liaisons plus petites. Par exemple, une interface peut se connecter à 8 commutateurs différents. Vous pouvez ainsi construire 8 réseaux parallèles distincts ou plans, fonctionnant chacun à 100 Gb/s, plutôt qu’un seul réseau de 800 Gb/s. » Le consortium précise que cette orientation a un impact important sur la structure du cluster. « Un switch capable de connecter 64 ports à 800 Gb/s peut désormais en connecter 512 à 100 Gb/s. Cela permet de construire un réseau reliant entièrement environ 131 000 GPU avec seulement deux niveaux de commutateurs. Un réseau classique à 800 Gb/s nécessiterait trois ou quatre niveaux ». Le problème est que selon les protocoles réseaux traditionnels chaque transfert suit un chemin unique afin que les paquets arrivent dans l'ordre. MRC change ce postulat et « répartit les paquets d'un même transfert sur des centaines de chemins à travers le réseau, sur l'ensemble des plans distincts ».

Avec cette approche, chaque connexion MRC conserve une petite quantité d'informations d'état pour les nombreux chemins qu'elle utilise. Si elle détecte qu'un chemin commence à être saturé, elle le remplace par un autre, répartissant ainsi la charge de manière équilibrée sur l'ensemble du réseau. Si elle perd un paquet, elle opte pour la solution la plus sûre : elle part du principe qu'un élément de ce chemin a pu tomber en panne et cesse immédiatement de l'utiliser, tout en retransmettant les paquets qui auraient pu être perdus. Une fois qu'un chemin a été retiré par le protocole, celui-ci envoie des paquets de test pour vérifier s'il y a bien eu une défaillance et, le cas échéant, si le chemin a été rétabli. Mais OpenAI précise que les défaillances ne sont toutefois pas la seule cause de perte de paquets. Il y aussi la congestion à l’arrivée des paquets. Pour gérer ce problème, le fournisseur s’appuie sur la technique de découpage de paquet (trimming packet). Elle vise à réduire la taille du paquet à une taille plus petite et à l'envoyer dans une file d'attente prioritaire au lieu de le supprimer quand son arrivée dans la mémoire tampon échoue.

Un routage basé sur IPv6

Par ailleurs, MRC se passe du routage dynamique traditionnel comme BGP (Border Gateway Protocol) pour calculer les chemins disponibles et contourner les pannes. Il utilise à la place SRv6, le routage par segments IPv6. Celui-ci permet à l'expéditeur de spécifier via des adresses IPv6 directement le chemin que chaque paquet doit emprunter sur le réseau. Lors d’un transfert, un commutateur vérifie la présence de son propre identifiant. Si c’est le cas, il le supprime en décalant l’adresse de destination afin de révéler l’identifiant du commutateur suivant. Ce dernier consulte ensuite une table de routage statique pour déterminer la prochaine destination du paquet. Cette table est configurée dès la première mise en service du switch.

Nvidia a indiqué que MRC est compatible avec son switch Ethernet Spectrum-X. Ce protocole est déjà utilisé en production dans certains clusters d’OpenAI pour former des LLM comme GPT et Codex. On le retrouve aussi dans le datacenter IA Fairwater de Microsoft dans le Wisconsin ou celui d’Oracle à Abilene au Texas (qui fait partie du projet Stargate).