Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Solution Architecture

Les trois fabrics décrites dans la section précédente (front-end, back-end GPU et back-end de stockage) sont interconnectées dans l’architecture globale de la solution IA JVD illustrée à la figure 2.

Figure 2 : Architecture de la solution JVD d’IA

Fabric front-end

La fabric front-end fournit l’infrastructure permettant aux utilisateurs d’interagir avec les systèmes d’IA pour orchestrer les tâches d’entraînement et d’inférence à l’aide d’outils tels que SLURM, Kubernetes et d’autres gestionnaires de flux de travail d’IA qui gèrent la planification des tâches, l’allocation des ressources et la gestion du cycle de vie.

Ces interactions ne génèrent pas de flux de données lourds et n’imposent pas d’exigences strictes en matière de latence ou de perte de paquets. Par conséquent, le trafic du plan de contrôle n’impose pas d’exigences de performances rigoureuses à la fabric.

La conception du fabric front-end consiste en une fabric IP L3 à 3 niveaux sans haute disponibilité (HA), comme illustré à la figure 3. Cette architecture offre une solution simple et efficace pour la connectivité requise dans le Frontend. Cependant, n’importe quelle architecture de fabric, y compris EVPN/VXLAN, peut être utilisée. Si vous avez besoin d’une fabric front-end compatible avec la HA, nous vous recommandons de suivre le programme en trois étapes avec la JVD de Juniper Apstra.

Figure 3 : Architecture fabric front-end

REMARQUE : Le cluster Vast Storage n’est pas connecté à la fabric front-end.

Le nombre de nœuds Leaf dépend du nombre de serveurs et de périphériques de stockage dans le cluster IA, ainsi que de tout autre périphérique utilisé pour IA planification des tâches, l’allocation des ressources et la gestion du cycle de vie.

Le nombre de nœuds spine dépend du facteur d’abonnement souhaité pour la conception. Un facteur d’abonnement de 1:1 n’est pas requis. Un surabonnement modéré est acceptable pour le trafic du plan de contrôle, à condition que la conception maintienne la résilience et évite la congestion qui aurait un impact sur la stabilité du plan de contrôle.

Il s’agit d’une structure IP de couche 3 qui utilise EBGP pour l’annonce de route avec adressage IP et les détails de configuration EBGP décrits dans la section mise en réseau de ce document. Aucun mécanisme d’équilibrage de charge spécial n’est requis. ECMP sur des chemins L3 redondants est généralement suffisant.

Étant donné que le trafic du plan de contrôle n’est généralement pas gourmand en bande passante par rapport aux fabrics de stockage ou de GPU, des mécanismes de QoS stricts sont facultatifs et uniquement recommandés en cas de partage de liens avec un trafic sans contrôle en rafales.

Les appareils et la connectivité dans la fabric front-end validée dans cette JVD sont résumés dans les tableaux suivants :

Tableau 1 : Équipements de gestion et serveurs GPU validés connectés à la fabric front-end

Serveurs GPU AMD Serveurs têtes de réseau

Supermicro AS-8125GS-TNMR2

GPU AMD Instinct MI300X 192 Go OAM

Supermicro SYS-6019U-TR4

Tableau 2 : nœuds leaf et spine de la fabric front-end validée

Modèle de commutateur de nœuds leaf front-end Modèle de commutateur de nœuds de spine de fabric front-end
QFX5130-32CD QFX5130-32CD
QFX5220-32CD QFX5220-32CD

Tableau 3 : connexions validées entre les serveurs principaux et les nœuds Leaf dans la fabric front-end

Liens par serveur GPU vers la connexion leaf Type de serveur
1 x 10GE Supermicro SYS-6019U-TR4

Tableau 4 : connexions validées entre les serveurs GPU et les nœuds Leaf dans la fabric front-end

Liens par serveur GPU vers la connexion leaf Type de serveur
1 x 100GE AMD Instinct MI300X

Tableau 5 : connexions validées entre les nœuds Leaf et Spine dans la fabric front-end

Modèle
Liens par connexion leaf et spine Modèle de nœud leafde nœud spine
2 x 400GE QFX5130-32CD QFX5130-32CD

Les tests de cette JVD ont été effectués sur 4 serveurs GPU AMD Instinct MI300X connectés à deux nœuds Leaf, eux-mêmes connectés à deux nœuds Spine, comme illustré :

Figure 4 : Topologie de test des JVD front-end

  • Les serveurs GPU sont connectés aux nœuds Leaf à l’aide d’interfaces 100G (cartes réseau ConnectX-7).
  • De nombreux appareils sont connectés aux nœuds Leaf à l’aide d’interfaces 100G

Tableau 6 : Serveurs GPU front-end agrégés <=> nœuds leaf front-end Nombre de liaisons et bande passante testée

Serveurs GPU <=> bande passante des nœuds leaf frontaux

Nombre de liaisons 100GE Serveurs GPU ó nœuds leaf frontaux = 4

(1 par serveur)

4 x 100GE = 400 Gbit/s

Nombre de liaisons 100GE entre le périphérique de stockage ó les nœuds leaf frontaux = 8

(1 par périphérique de stockage)

8 x 100GE = 800 Gbit/s
Bande passante totale = 1,0 Tbit/s

Tableau 7 : Nœuds leaf front-end agrégés <=> nœuds spine front-end Nombre de liaisons et bande passante testée

Nœuds leaf front-end <=> bande passante des nœuds spine front-end

Nombre de liaisons 400GE entre les nœuds leaf front-end et les nœuds spine = 8

(2 nœuds leaf x 2 nœuds spines x 2 liens par connexion leaf vers le cœur de réseau)

8 x 400GE = 3,2 Tbit/s
Bande passante totale = 3,2 Tbit/s
Pas de surabonnement  

Fabric back-end de GPU

La fabric back-end des GPU fournit l’infrastructure permettant aux GPU de communiquer entre eux au sein d’un cluster, à l’aide de RDMA sur Ethernet convergé (RoCEv2). RoCEv2 améliore l’efficacité des datacenters, réduit la complexité et optimise la livraison des données sur les réseaux Ethernet haut débit.

Contrairement à la fabric front-end, la fabric back-end GPU achemine un trafic de plan de données qui consomme beaucoup de bande passante et est sensible à la latence. La perte de paquets, une latence excessive ou une gigue peuvent avoir un impact significatif sur les délais d’exécution des tâches et doivent donc être évitées.

Par conséquent, l’un des principaux objectifs de conception du fabric de back-end GPU est de fournir une fabric Ethernet proche de l’sans perte, tout en offrant une débit maximale, une latence minimale et une interférence réseau minimale pour le trafic GPU à GPU. RoCEv2 fonctionne plus efficacement dans les environnements où la perte de paquets est minimisée, ce qui contribue directement à optimiser les délais d’exécution des tâches.

La fabric back-end GPU de cette JVD a été conçue pour répondre à ces exigences. La conception suit une architecture IP Clos à 3 niveaux, Rail Optimized Stripe, comme illustré sur la figure 5. Les détails de l’architecture Rail Optimized Stripe sont décrits dans une section ultérieure.

Figure 5 : Architecture fabric backend GPU

La structure fonctionne comme une structure IP L3 avec EBGP pour la publication de route avec adressage IP et les détails de configuration EBGP décrits dans la section réseau de ce document.

Dans une architecture rail-optimized (rail-optimized), le nombre de nœuds Leaf est déterminé par le nombre de GPU par serveur, qui est de 8 pour les serveurs AMD inclus dans cette JVD. Le nombre de nœuds spine, ainsi que la vitesse et le nombre de liaisons entre les serveurs GPU et les nœuds leaf, et entre les nœuds leaf et spine, déterminent la bande passante effective et les caractéristiques de surabonnement de la fabric back-end GPU.

Contrairement à la fabric front-end, la fabric back-end GPU cible généralement une conception sans surabonnement (1:1) ou un taux de surabonnement très faible. Cela garantit une bande passante suffisante pour des opérations collectives simultanées et évite la congestion qui pourrait introduire une perte de paquets ou une variation de latence.

Il s’agit d’une structure IP de couche 3 qui utilise EBGP pour l’annonce de route avec adressage IP et les détails de configuration EBGP décrits dans la section mise en réseau de ce document. La distribution du trafic au sein de la fabric back-end de GPU repose sur ECMP sur plusieurs chemins L3 à coût égal, combiné à des techniques d’équilibrage de charge avancées telles que l’équilibrage de charge dynamique (DLB), l’équilibrage de charge global et l’équilibrage de charge adaptatif (ALB). Ils sont décrits dans la section Équilibrage de charge de ce document.

Étant donné que le fabric back-end GPU transporte un trafic RoCEv2 sensible aux pertes et aux latence, la conception intègre DCQCN (Data Center Quantized Congestion Notification), qui exploite l’ECN (Explicit Congestion Notification) et peut éventuellement utiliser PFC (Priority Flow Control) pour obtenir un comportement sans perte ou quasi sans perte pour le trafic RDMA. Ces mécanismes sont décrits en détail dans la section Classe de service du présent document.

Les appareils et la connectivité dans la fabric front-end validée dans cette JVD sont résumés dans les tableaux suivants :

Tableau 8 : équipements de gestion et serveurs GPU validés connectés à la fabric back-end GPU

Serveurs GPU, périphériques de stockage , serveurs de tête de réseau

Supermicro AS-8125GS-TNMR2

GPU AMD Instinct MI300X 192 Go OAM

Supermicro

SYS-6019U-TR4

Tableau 9 : nœuds leaf de la fabric back-end GPU validés

Modèle de commutateur de nœuds leaf de la fabric back-end GPU
QFX5220-32CD
QFX5230-64CD
QFX5240-64OD
QFX5241-64OD

Tableau 10 : nœuds de cœur de fabric back-end GPU validés

Modèle de commutateur de nœuds
de fabric spine back-end GPU
QFX5230-64CD
QFX5240-64OD
QFX5241-64OD
PTX10008 LC1201
PTX10008 LC1301

Tableau 11 : connexions validées entre les serveurs GPU et les nœuds Leaf dans la fabric back-end de GPU

Liens par serveur GPU vers la connexion leaf Type de serveur
1 x liens 400GE par serveur GPU vers connexion leaf AMD MI300

Tableau 12 : connexions validées entre les nœuds leaf et spine dans la fabric back-end de GPU

Liaisons par connexion leaf et spine Modèle de nœud leaf Modèle de nœud spine
1 x 400GE QFX5220-32CD QFX5230-32CD
1 x 400GE QFX5230-32CD QFX5230-32CD
2 x 400GE QFX5240-64OD QFX5240-64OD
1 x 800GE QFX5240-64OD QFX5240-64OD
1 x 400GE QFX5220-32CD PTX10008 LC1201
1 x 400GE QFX5230-32CD PTX10008 LC1201
1 x 800GE QFX5240-64OD PTX10008 LC1301
2 x 800GE QFX5240-64OD PTX10008 LC1301

Cette JVD a été testée sur 4 serveurs GPU MI300 reliés à deux bandes, comme illustré :

Figure 6 : Topologie de test JVD back-end GPU

  • Chaque serveur GPU AMD MI300X est connecté aux nœuds Leaf à l’aide d’interfaces 400G (cartes réseau Thor2 et Pollara).

validated_optics_summary.html#Toc222928841__DAC_5m ont été testés avec des cartes Broadcom Thor2 et connectés comme indiqué sur le schéma ci-dessous.

Tableau 13 : Bande passante serveur-leaf par bande

Bande

Nombre de serveurs

par Stripe

Nombre de serveurs <=> liens leaf par serveur

(nombre de nœuds Leaf et nombre de GPU par serveur)

< serveur = bande passante de liaison leaf >

[Gbit/s]

Nombre total de serveurs <=> liens de branche

Bande passante par bande

[Tbit/s]

1 2 MI300 8 400 Gbit/s 2 x 8 x 400 Gbit/s = 6,4 Tbit/s
2 2 MI300 8 400 Gbit/s 2 x 8 x 400 Gbit/s = 6,4 Tbit/s
< serveur total = bande passante leaf > 12,8 Tbit/s

Tableau 14 : bande passante leaf-spine par bande avec QFX5240 en tant que leaf et spines

Bande

Nombre de

nœuds Leaf

Nombre de nœuds spine

Nombre de

400 Gbit/s

< leaf = > liens spine

par nœud Leaf

Serveur <=> Leaf

Bande passante de liaison

[Gbit/s]

Bande passante

Leaf <=> dos par bande

[Tbit/s]

1 8 4 2 400 8 x 2 x 2 x 400 Gbit/s = 12,8 Tbit/s
2 8 4 2 400 8 x 2 x 2 x 400 Gbit/s = 12,8 Tbit/s
Total des serveurs < = > bande passante leaf 25,6 Tbit/s

Facteur d’abonnement à la fabric back-end GPU

Le facteur de souscription est simplement calculé en comparant les chiffres des deux tableaux ci-dessus :

Dans l’environnement de test JVD, la bande passante entre les serveurs et les nœuds leaf est de 6,4 Tbit/s par bande, tandis que la bande passante disponible entre les nœuds leaf et spine est de 12,8 Tbit/s par bande. Cela signifie que la fabric dispose d’une capacité suffisante pour traiter tout le trafic entre les GPU, même lorsque ce trafic est 100 % inter-bandes, tout en disposant d’une capacité supplémentaire pour accueillir des serveurs supplémentaires sans surabonnement. Le facteur d’abonnement dans ce cas est de 1:2.

Figure 7 : Facteur d’abonnement 1:2 (surprovisionné)

Pour exécuter des tests de surabonnement, certaines interfaces entre le commutateur Leaf et le commutateur Spine ont été désactivées, ce qui a réduit la bande passante disponible, comme le montre l’exemple de la figure 8 :

Figure 8 : Facteur d’abonnement 1:1

De plus, un générateur de trafic Ixia émulant des appareils RoCEv2 était également connecté à la fabric, comme le montre l’exemple de la figure 9.

Figure 9 : Facteur d’abonnement 1:1

Cela ajoute 800 G de trafic supplémentaire aux branches 2 et 4 sur les bandes 1 et 2.

REMARQUE : les résultats des tests de congestion sont inclus dans le rapport de test JVD.

Optimisation de la communication GPU à GPU

L’optimisation dans les topologies rail-optimized fait référence à la façon dont la communication GPU est gérée pour minimiser la congestion et la latence tout en maximisant le débit. Un élément clé de cette stratégie d’optimisation consiste à maintenir le trafic local dans la mesure du possible. En veillant à ce que la communication du GPU reste sur le même rail ou la même bande, ou même au sein du serveur, le besoin de traverser des spines ou des liaisons externes est réduit, ce qui diminue la latence, minimise la congestion et améliore l’efficacité globale.

Bien que la localisation du trafic soit une priorité, la communication entre bandes sera nécessaire dans les grands clusters de GPU. La communication entre les bandes est optimisée au moyen de techniques de routage et d’équilibrage appropriées sur les liaisons disponibles afin d’éviter les goulots d’étranglement et la perte de paquets.

L’essence de l’optimisation réside dans l’utilisation de la topologie pour diriger le trafic sur les chemins les plus courts et les moins encombrés, garantissant ainsi des performances constantes même lorsque le réseau évolue. Le trafic entre GPU sur les mêmes serveurs peut être transféré localement sur la fabric interne du serveur (selon le fournisseur), tandis que le trafic entre GPU sur différents serveurs s’effectue sur l’infrastructure backend GPU externe. La communication entre les GPU de différents serveurs peut se faire intra-rail ou interrail/interbande.

Le trafic intrarail est commuté (traité au niveau de la couche 2) sur le nœud Leaf local. Ainsi, les données entre les GPU de différents serveurs (mais dans la même bande) sont toujours déplacées sur le même rail et sur un seul commutateur. Cela garantit que les GPU sont à 1 saut les uns des autres et créera des canaux indépendants distincts à large bande passante, ce qui minimise les conflits et optimise les performances. D’autre part, le trafic interrail/interbande est acheminé à travers les interfaces IRB sur les nœuds leaf et les nœuds spine reliant les nœuds leaf (traité en couche 3).

Prenons l’exemple illustré à la figure 10

  • La communication entre le GPU 1 et le GPU 2 dans le serveur 1 s’effectue sur la fabric interne du serveur (1),
  • La communication entre les GPU 1 des serveurs 1 à 4 et entre les GPU 8 des serveurs 1 à 4 se produit respectivement sur les branches 1 et 8 (2), et
  • La communication entre les GPU 1 et GPU 8 (dans les serveurs 1 à 4) s’effectue à travers leaf1, les nœuds spine et leaf8 (3)

Figure 10 : Communication GPU-GPU interrail et intrarail

La figure 10 représente une topologie avec une bande et 8 rails reliant les GPU 1 à 8 sur les commutateurs leaf 1 à 8, respectivement.

La communication entre le GPU 7 et le GPU 8 du serveur 1 s’effectue sur la fabric interne, tandis que la communication entre le GPU 1 du serveur 1 et le GPU 1 du serveur N1 s’effectue via le commutateur leaf 1 (dans le même rail).

Notez que si une communication entre des GPU de différentes bandes et différents serveurs est nécessaire (par exemple, un GPU 4 dans le serveur 1 communiquant avec le GPU 5 dans le serveur N1), les données sont d’abord déplacées vers une interface GPU dans le même rail que le GPU de destination, envoyant ainsi les données au GPU de destination sans traverser les rails.

Ainsi, les données entre les GPU de différents serveurs (mais dans la même bande) sont toujours déplacées sur le même rail et sur un seul commutateur, ce qui garantit que les GPU sont distants d’un saut les uns des autres et crée des canaux indépendants distincts à large bande passante, ce qui minimise les conflits et optimise les performances.

Sur les serveurs GPU AMD, les GPU sont interconnectés via la fabric AMD Infinity, qui fournit 7 x 128 Go/s de bande passante GPU à GPU à bande passante élevée, à faible latence et une communication bidirectionnelle GPU à GPU au sein d’un seul serveur, comme illustré sur la Figure 11.

Graphique 11. Architecture AMD MI300X.

A diagram of a computer Description automatically generated

Pour plus de détails, reportez-vous à la microarchitecture AMD Instinct™ MI300 Series - Documentation ROCm

Les GPU AMD MI300X exploitent Infinity fabric, fournissant une communication à haut débit et à faible latence entre les GPU, les CPU et d’autres composants. Cette interconnexion peut gérer dynamiquement la hiérarchisation du trafic sur les liaisons, fournissant ainsi un chemin optimisé pour la communication au sein du nœud.

Par défaut, les appareils AMD MI300X mettent en œuvre une optimisation locale afin de minimiser la latence du trafic GPU à GPU. Les communications entre les GPU des mêmes serveurs sont transmises sur la fabric Infinity et restent à l’intérieur du nœud et ne traversent pas la fabric Ethernet externe. Le trafic entre GPU de même rang sur plusieurs serveurs reste intrabande.

La figure 12 montre un exemple où le GPU 1 du serveur 1 communique avec le GPU 1 du serveur 2. Le trafic est acheminé par le nœud Leaf 1 et reste sur le rail 1.

De plus, si le GPU 4 du serveur 1 souhaite communiquer avec le GPU 5 du serveur 2 et que le GPU 5 du serveur 1 est disponible en tant que saut local dans la fabric Infinity d’AMD, le trafic préfère naturellement ce chemin pour optimiser les performances et maintenir la communication GPU à GPU à l’intérieur du rail.

Figure 12 : Communication interrail de GPU à GPU entre deux serveurs avec optimisation locale.

A diagram of a diagram AI-generated content may be incorrect.

Si l’optimisation locale n’est pas réalisable en raison de contraintes de charge de travail, par exemple, le trafic doit contourner les sauts locaux (fabric interne) et utiliser RDMA (communication basée sur des NIC hors nœud). Dans ce cas, le GPU 4 du serveur 1 communique avec le GPU 5 du serveur 2 en envoyant des données directement sur la NIC à l’aide de RDMA, qui sont ensuite transmises à travers la structure, comme illustré à la figure 13.

Figure 13 : Communication interrail de GPU à GPU entre deux serveurs sans optimisation locale.

A diagram of a diagram AI-generated content may be incorrect.

L’exemple montre que la communication entre le GPU 4 du serveur 1 et le GPU 5 du serveur N1 passe par le commutateur leaf 1, les nœuds Spine et le commutateur leaf 5 (entre deux rails différents).

Architecture optimisée pour le rail GPU back-end

Comme décrit précédemment, une architecture Rail Optimized Stripe assure un transfert de données efficace entre les GPU, en particulier lors de tâches gourmandes en calcul telles que les charges de travail d’entraînement des grands modèles de langage (LLM) de l’IA, où un transfert transparent des données est nécessaire pour accomplir les tâches dans un délai raisonnable. Une topologie rail-optimized vise à maximiser les performances en minimisant les conflits de bande passante, la latence et les interférences réseau, garantissant ainsi une transmission efficace et fiable des données sur le réseau.

Dans une architecture optimisée pour le rail, il existe deux concepts importants : le rail et le stripe.

Les GPU d’un serveur sont numérotés de 1 à 8, où le nombre représente la position du GPU sur le serveur, comme illustré sur la Figure 14. Ce nombre est parfois appelé rang ou plus précisément « rang local » par rapport aux GPU du serveur où se trouve le GPU, ou « classement global » par rapport à tous les GPU (dans plusieurs serveurs) affectés à une seule tâche.

Un rail relie des GPU du même ordre sur l’un des nœuds Leaf de la fabric ; c’est-à-dire que le rail Nth connecte tous les GPU en position Nth sur tous les serveurs, au nœud Leaf Nth, comme illustré sur la Figure 14.

Figure 14 : Rails dans une architecture optimisée pour le rail

Une bande fait référence à un module ou à un bloc de construction, composé de plusieurs rails, et comprend des nœuds Leaf et des serveurs GPU, comme illustré à la figure 15. Ce bloc modulaire peut être répliqué pour mettre à l’échelle le cluster d’IA.

Figure 15 : Rayures dans une architecture optimisée pour le rail

Tout le trafic entre GPU de même rang (trafic intra-rail) est transféré au niveau du nœud Leaf, comme illustré à la Figure 16.

Figure 16 : Exemple de trafic intrarail.

A screen shot of a computer AI-generated content may be incorrect.

Une bande peut être répliquée pour augmenter le nombre de serveurs (N1) et de GPU (N2) dans un cluster d’IA. Plusieurs bandes (N3) sont ensuite connectées sur les commutateurs Spine, comme illustré sur la Figure 17.

Figure 17 : Plusieurs bandes connectées via des nœuds Spine

Le trafic interrail et interbande sera acheminé à travers les nœuds de spines, comme le montre la figure 18.

Graphique 18. Exemple de trafic interrail et interbande de GPU à GPU.

A diagram of a computer AI-generated content may be incorrect.

Calcul du nombre de nœuds leaf et spine, de serveurs et de GPU dans une architecture rail-optimized

Le nombre de nœuds Leaf dans une seule bande dans une architecture optimisée pour les rails est défini par le nombre de GPU par serveur (nombre de rails). Chaque serveur GPU AMD MI300X comprend 8 GPU AMD Instinct MI300X. Par conséquent, une seule bande comprend 8 nœuds leaf (8 rails).

Nombre de nœuds Leaf = nombre de GPU x serveur = 8

Le nombre maximal de serveurs pris en charge dans une seule bande (N1) est défini par le nombre de ports disponibles sur le nœud Leaf, qui dépend du modèle du commutateur.

Pour maintenir un ratio d’abonnement de 1:1, la bande passante totale entre les serveurs GPU et les nœuds Leaf doit correspondre à la bande passante totale entre les nœuds Leaf et Spine.

En supposant que toutes les interfaces du nœud Leaf fonctionnent à la même vitesse, la moitié des interfaces sera utilisée pour se connecter aux serveurs GPU et l’autre moitié pour se connecter aux spines. Ainsi, le nombre maximal de serveurs dans une bande est calculé comme la moitié du nombre de ports disponibles sur chaque nœud Leaf.

Graphique 19. Nombre de liaisons montantes et descendantes pour un facteur d’abonnement 1:1

Sur le diagramme, X représente le nombre de liaisons descendantes (liaisons entre les nœuds leaf et les serveurs GPU), tandis que Y représente le nombre de liaisons montantes (liaisons entre les nœuds leaf et les nœuds spine). Pour permettre un facteur d’abonnement de 1:1, X doit être égal à Y.

Le nombre de ports disponibles sur chaque nœud Leaf est égal à X + Y ou 2 * X.

Étant donné que tous les serveurs d’une bande ont un port connecté à chaque branche de la bande, le nombre maximal de serveurs dans la bande (N1) est égal à X.

N1 (nombre maximal de serveurs par bande) = nombre de ports disponibles ÷ 2

Le nombre maximal de GPU dans la bande est calculé en multipliant simplement le nombre de GPU par serveur.

N2 (nombre maximal de GPU) = N1 (nombre maximal de serveurs par bande) * 8

Le nombre total de ports disponibles dépend du modèle de commutateur utilisé pour le nœud Leaf. Le tableau 15 en donne quelques exemples.

Tableau 15 : nombre maximal de GPU pris en charge par bande

Nœud Leaf

Modèle du commutateur QFX

nombre de ports 400GE disponibles par commutateur

Nombre maximal de serveurs pris en charge par bande pour un abonnement 1:1

(N1)

GPU par serveur

Nombre maximal de GPU pris en charge par bande

(N2)

QFX5220-32CD 32 32 ÷ 2 = 16 8 16 serveurs x 8 GPU/serveur = 128 GPU
QFX5230-64CD 64 64 ÷ 2 = 32 8 32 serveurs x 8 GPU/serveur = 256 GPU

QFX5240-64OD

QFX5241-64OD

128 128 ÷ 2 = 64 8 64 serveurs x 8 GPU/serveur = 512 GPU
  • Les commutateurs QFX5220-32CD sont équipés de 32 ports 400GE = > 16 ports pour se connecter aux serveurs et 16 pour les nœuds spine.
  • Les commutateurs QFX5230-64CD offrent jusqu’à 64 ports 400GE = > 32 ports pour se connecter aux serveurs et 32 pour se connecter aux nœuds spine.
  • Les commutateurs QFX5240-64OD offrent jusqu’à 128 ports 400GE = > 64 ports pour se connecter aux serveurs et 64 pour se connecter aux nœuds spine.
REMARQUE : Les commutateurs QFX5240-64OD sont équipés de 64 ports 800GE qui peuvent être divisés en 2 ports 400GE, pour un maximum de 128 interfaces 400GE indiquées dans le Tableau 15.

Pour obtenir des échelles plus grandes, plusieurs bandes (N3) peuvent être connectées à l’aide d’un ensemble de nœuds Spine (N4), comme illustré sur la Figure 20.

Graphique 20. Plusieurs bandes connectées sur les nœuds Spine

Le nombre de bandes requises (N3 ) est calculé en fonction du nombre requis de GPU et du nombre maximal de GPU par bande (N2).

Par exemple, supposons que le nombre requis de GPU (GPU) est de 16 000 et que la fabric utilise QFX5240-64OD comme nœuds Leaf.

Le nombre de ports 400G disponibles est de 128, ce qui signifie que :

  • nombre maximal de serveurs par bande (N1) = 64
  • nombre maximal de GPU par bande (N2) = 512

Le nombre de bandes (N3) requis est calculé en divisant le nombre de GPU requis et le nombre de GPU par bande comme indiqué :

N 3 (nombre de bandes requises) = GPU ÷ N 2 (nombre maximal de GPU par bande) = 16000 ÷ 512 = 32 bandes (arrondi à l’unité supérieure)

  • Avec 32 bandes et 64 serveurs par bande, le cluster peut fournir 16 384 GPU.

Connaissant le nombre de bandes requises (N 3) et le nombre de ports de liaison montante par nœud Leaf (Y), vous pouvez calculer le nombre de nœuds spine nécessaires.

Rappelez-vous X = Y = N1

Tout d’abord, le nombre total de nœuds feuilles peut être calculé en multipliant le nombre de bandes requises par 8 (nombre de nœuds feuilles par bande).

Nombre total de nœuds leaf = N3 x 8 = 32 x 8 = 256

On peut alors obtenir le nombre total de liaisons montantes en multipliant le nombre de liaisons montantes par nœud Leaf (N1) et le nombre total de nœuds Leaf.

Nombre total de liaisons montantes = N1 x 256 = 64 x 256 = 16384

Le nombre de cœurs requis (N4 ) peut ensuite être déterminé en divisant le nombre total de liaisons montantes par le nombre de ports disponibles sur chaque nœud Spine, qui, comme pour les nœuds Leaf, dépend du modèle de commutateur utilisé pour le rôle Spine.

Nombre de cœurs de réseau requis (N4 ) = 16384 / nombre de ports disponibles sur chaque nœud de cœur de réseau

Par exemple, si les nœuds spine sont QFX5240/41, le nombre de ports disponibles sur chaque nœud spine est de 128.

Tableau 16 : Nombre de nœuds d’épines pour deux bandes.

Nœud Spine

Modèle du commutateur QFX

Nombre maximal d’interfaces 400GE par commutateur Nombre de cœurs de réseau requis (N4) avec 64 bandes
QFX5240-64OD 128 16384 ÷ 128 = 128
PTX10008 LC1201 288 16384 ÷ 288 ~ 57
PTX10008 LC1301 576 16384 ÷ 576 ~ 29

fabric back-end de stockage

La fabric back-end de stockage fournit l’infrastructure de connectivité pour que les périphériques de stockage soient accessibles à partir des serveurs GPU.

Les performances de l’infrastructure de stockage ont un impact significatif sur l’efficacité des workflows d’IA. Un système de stockage qui fournit un accès rapide aux données peut réduire considérablement le temps nécessaire à l’entraînement des modèles d’IA. De même, un système de stockage qui prend en charge l’interrogation et l’indexation efficaces des données peut minimiser le temps de prétraitement et d’extraction des caractéristiques dans un workflow d’IA.

Dans les petits clusters, il peut suffire d’utiliser le stockage local sur chaque serveur GPU ou de l’agréger à l’aide d’un logiciel open source ou commercial. Dans les clusters plus grands avec des charges de travail plus lourdes, un système de stockage externe dédié est nécessaire pour assurer la mise en relation du jeu de données pour l’ingestion et pour le point de contrôle du cluster pendant l’entraînement.

Deux plates-formes de premier plan, WEKA et Vast Storage, fournissent des solutions de pointe pour le stockage partagé dans les environnements GPU. Bien que nous ayons testé les deux solutions dans notre laboratoire, cette JVD se concentre sur la solution de stockage Vast. Ainsi, le reste de ceci, ainsi que d’autres sections de ce document, couvrira des détails sur les périphériques Vast Storage et la connectivité à la fabric backend de stockage.

Les détails sur le stockage WEKA sont inclus dans le réseau Datacenter IA avec Juniper Apstra, les GPU NVIDIA et le stockage WEKA - Conception validée Juniper (JVD).

La conception du fabric back-end de stockage de la JVD suit également une architecture IP Clos à 3 niveaux, comme illustré à la figure 21. Il n’existe pas de concept d’optimisation rail dans un cluster de stockage. Chaque serveur GPU dispose d’une connexion unique aux nœuds Leaf, au lieu d’une connexion par GPU.

Figure 21 : Architecture fabric backend de stockage

Le nombre de nœuds Leaf dépend du nombre de GPU de serveurs et de périphériques de stockage dans le cluster d’IA.

Le nombre de nœuds spine dépend du facteur d’abonnement souhaité pour la conception. Comme le fabric de back-end GPU, le fabric de stockage nécessite une conception sans surabonnement (facteur d’abonnement 1:1) afin de garantir une bande passante suffisante pour le trafic volumineux et d’éviter les congestion, les pertes de paquets et les latence excessives.

Le trafic de stockage peut utiliser différents mécanismes de transport, notamment NFS, POSIX et RoCEv2. Pour RoCEv2, les mêmes mécanismes d’équilibrage de charge et de classe de service que ceux décrits pour la fabric back-end des GPU doivent être implémentés. Ils sont décrits dans les sections Équilibrage de charge et Classe de service de ce document.

Les périphériques et la connectivité de la Storage Fabric validée dans cette JVD sont résumés dans les tableaux suivants :

Tableau 17 : Validation du stockage fabric nœuds leaf et spine

Modèle
Modèle de commutateur de nœuds leaf de fabric de stockagede commutateur de nœuds spine de fabric de stockage
QFX5130-32CD QFX5130-32CD
QFX5220-32CD QFX5220-32CD
QFX5230-32CD QFX5230-32CD
QFX5240-64OD QFX5240-64OD

Tableau 18 : connexions validées entre les serveurs GPU, les périphériques de stockage et les nœuds Leaf dans la fabric de stockage

Liens par serveur GPU vers la connexion leaf Type de serveur
1 x 100GE nœuds C VAST
1 x 200GE Serveurs GPU AMD MI300

Tableau 19 : connexions validées entre les nœuds leaf et spine dans la fabric de stockage

Modèle
Liens par connexion leaf et spine Modèle de nœud leafde nœud spine
2 x 400GE, 3 x 400GE QFX5130-32CD QFX5130-32CD
2 x 400GE, 3 x 400GE QFX5130-32CD QFX5130-32CD
2 x 400GE, 3 x 400GE

QFX5240-32CD

QFX5241-32CD

QFX5240-32CD

QFX5241-32CD

Les tests de cette JVD ont été réalisés sur 4 serveurs GPU AMD Instinct MI300X et 8 périphériques de stockage VAST, connectés à 4 nœuds Leaf, eux-mêmes connectés à 2 nœuds Spine, comme illustré sur la Figure 22 :

Figure 22 : Topologie de test des JVD de la fabric de stockage

Tableau 20 : Nombre total de liaisons de stockage et bande passante testée

Serveurs GPU <=> nœuds leaf de stockage nœuds leaf de stockage <=> nœuds spine front-end

Nombre total de liaisons 200GE entre

Serveurs GPU et nœuds leaf de stockage = 4

(1 lien par serveur)

+

Nombre total de liaisons 100GE entre

Vastes périphériques de stockage et nœuds leaf de stockage

(2 liens par appareil) = 16

Nombre total de liaisons 400GE entre

nœuds leaf et spine front-end = 16

(2 liens par connexion Leaf vers le cœur de réseau)

Bande passante totale = 2,4 Tbit/s Bande passante totale = 6,4 Tbit/s
  Pas de surabonnement.

Mise à l’échelle de la fabric back-end GPU

La taille d’un cluster d’IA varie considérablement en fonction des exigences spécifiques de la charge de travail. Le nombre de nœuds dans un cluster d’IA dépend de facteurs tels que la complexité des modèles de machine learning, la taille des jeux de données, la vitesse d’entraînement souhaitée et le budget disponible. Le nombre varie d’un petit cluster de moins de 100 nœuds à un cluster à l’échelle d’un datacenter comprenant des milliers de nœuds de calcul, de stockage et de réseau. Un minimum de 4 spines doit toujours être déployé pour diversifier les chemins et réduire les chemins de défaillance des PFC.

Tableau 21 : Mise à l’échelle de la fabric - Dispositifs et positionnement

Mise à l’échelle de la fabric
Petit, Moyen, Grand
jusqu’à 4 096 GPU jusqu’à 8 192 GPU 8192 et jusqu’à 73 728 GPU

Prend en charge jusqu’à 4 096 GPU avec Juniper QFX5240-64CD comme nœuds spine et QFX5230-64CD comme nœuds leaf (implémentations à une ou plusieurs bandes).

Ce tissu ferroviaire à 3 étages se compose de 32 nœuds Spines et 128 nœuds Leaf, ce qui permet de maintenir un abonnement 1:1.

La structure fournit une connectivité physique pour un maximum de 16 bandes, avec 32 serveurs (256 GPU) par bande, pour un total de 4 096 GPU.

Prend en charge plus de 4 096 GPU et jusqu’à 8 192 GPU avec Juniper QFX5240-64CD comme nœuds Spine et Leaf.

Ce tissu sur rail à 3 étages comprend jusqu’à 64 épines et jusqu’à 128 nœuds leaf, ce qui permet de maintenir un abonnement 1:1.

La structure fournit une connectivité physique pour un maximum de 16 Stripes, avec 64 serveurs (512 GPU) par bande, pour un total de 8 192 GPU

Prise en charge de plus de 8192 GPU et jusqu’à. 73 728 GPU avec Juniper châssis PTX10000 comme nœuds spine et Juniper QFX5240 à 64CD comme nœuds leaf.

Ce tissu ferroviaire à 3 étages se compose de 64 épines et de 1 152 nœuds leaf, ce qui permet de maintenir un abonnement 1:1.

La structure fournit une connectivité physique pour un maximum de 144 Stripes, avec 64 serveurs (512 GPU) par stripe, pour un total de 73 728 GPU.

REMARQUE : Pour suivre les bonnes pratiques, un minimum de 4 Spines doit être déployé, même dans un fabric à une seule bande.

Composants matériels et logiciels validés de la solution Juniper

Les produits et versions logicielles de Juniper répertoriés ci-dessous se rapportent à la dernière configuration validée pour le cas d’usage du datacenter IA. Dans le cadre d’un processus de validation continu, nous testons régulièrement différents modèles matériels et versions logicielles et mettons à jour les recommandations de conception en conséquence.

La version de Juniper Apstra dans le setup est la 6.1.

Le tableau suivant récapitule les appareils Juniper validés pour cette JVD et inclut les appareils testés pour le réseau de datacenter IA avec Juniper Apstra, des GPU NVIDIA et un stockage WEKA – Conception validée par Juniper (JVD).

Tableau 22 : Dispositifs validés et positionnement

FABRIC FRONT-END DE L’APPAREIL , GPU, FABRIC BACK-END, FABRIC DE STOCKAGE
FEUILLE Colonne vertébrale FEUILLE Colonne vertébrale FEUILLE Colonne vertébrale
QFX5130-32CD X X     X X
QFX5220-32CD X X X   X X
QFX5230-32CD     X   X X
QFX5230-64CD     X X X X
QFX5240-64OD     X X X X
QFX5241-64OD     X X X X
PTX10008 JNP10K-LC1201       X    
PTX10008 JNP10K-LC1301       X    

Le tableau suivant récapitule les versions logicielles testées et validées par rôle.

Tableau 23 : Version recommandée pour la plate-forme

Version
Rôle de plate-formede Junos OS
QFX5240-64CD Leaf back-end GPU 23,4 x 100 à D31
QFX5240-64OD/QD Spine back-end GPU 23,4 X 100 À D42
QFX5220-32CD Leaf back-end GPU 23,4 X 100 À D20
QFX5230-64CD Leaf back-end GPU 23,4 X 100 À D20
QFX5240-64CD Spine back-end GPU 23,4 x 100 à D31
QFX5240-64OD/QD Spine back-end GPU 23,4 X 100 À D42
QFX5230-64CD Spine back-end GPU 23,4 X 100 À D20
PTX10008 avec LC1201 Spine back-end GPU 23.4R2-S3
QFX5130-32CD Leaf front-end 23.43R2-S3
QFX5130-32CD Front-end Spine 23.43R2-S3
QFX5220-32CD Leaf back-end de stockage 23,4 X 100 À D20
QFX5230-64CD Leaf back-end de stockage 23,4 X 100 À D20
QFX5240-64CD Leaf back-end de stockage 23,4 X 100 À D20
QFX5240-64OD/QD Leaf back-end de stockage 23,4 X 100 À D42
QFX5220-32CD Back-end de stockage au cœur de réseau 23,4 X 100 À D20
QFX5230-64CD Back-end de stockage au cœur de réseau 23,4 X 100 À D20
QFX5240-64CD Back-end de stockage au cœur de réseau 23,4 X 100 À D20
QFX5240-64OD/QD Back-end de stockage au cœur de réseau 23,4 X 100 À D42