Lignes PCIe et topologie dans un serveur IA multi-GPU

Il existe dans le monde de l’IA grand public un mythe tenace : « x8 ou x16 en PCIe, cela ne change rien en inférence ». C’est globalement vrai, et ceux qui le répètent ne savent presque jamais pourquoi. Ils se retrouvent d’ailleurs bien démunis dès qu’on leur demande pourquoi une carte mère de bureau ne peut pas accueillir un quatrième GPU à pleine bande passante, ou pourquoi un serveur EPYC à 8 GPU ne se comporte pas comme deux machines de bureau à 4 GPU collées l’une à l’autre.

Cet article est la version longue. Il explique ce qu’est une ligne PCIe, comment elles sont réparties sur les processeurs que Kentino utilise, à quoi servent la bifurcation et les switches, où NVLink intervient (et où il n’intervient pas), et quand la topologie compte vraiment. Il se termine par des schémas concrets à 4 et 8 GPU pour les plateformes EPYC que nous livrons.

Ce qu’est une ligne PCIe, en bref

Une ligne PCIe est une paire de liaisons série différentielles — une par sens — entre un root complex de CPU (ou un switch en aval) et un périphérique. Plusieurs lignes sont agrégées pour former un lien plus large : x1, x4, x8, x16. La bande passante croît linéairement avec le nombre de lignes et double à peu près à chaque génération.

Génération Brut par ligne x16 brut x16 utile (~)
Gen3 8 GT/s 16 GB/s ~15.75 GB/s
Gen4 16 GT/s 32 GB/s ~31.5 GB/s
Gen5 32 GT/s 64 GB/s ~63 GB/s
Gen6 64 GT/s 128 GB/s ~121 GB/s

Deux réserves. La bande passante s’entend par sens — un lien Gen5 x16 délivre 64 GB/s dans chaque sens simultanément, d’où les slides marketing qui annoncent soit « 64 GB/s », soit « 128 GB/s ». Et le Gen6 n’équipe aucun GPU que vous puissiez acheter aujourd’hui. La spécification est finalisée, mais le silicium n’est pas présent dans les cartes de station de travail en mai 2026 ; les premiers équipements Gen6 sont des composants réservés aux centres de données, que Kentino n’utilise pas. Pour notre gamme réelle — RTX 5090, RTX 4090, RTX Pro 6000 Blackwell (les deux variantes), L40, L4 — le Gen5 x16 est le plafond.

Budget de lignes par socket CPU

C’est ici que la frontière bureau / station de travail / serveur devient visible. Voici le nombre de lignes des processeurs utilisés dans les configurations Kentino actuelles, une fois déduit ce qui est réservé au chipset et au DMI :

Classe de CPU Génération Lignes PCIe totales Utilisables pour GPU / cartes réseau / NVMe
Intel Core (LGA1700/1851) Mélange Gen5/4 20 ~20 (très juste)
Intel Xeon W7 / W9 (Sapphire R.) Gen5 112 ~112
AMD Ryzen 9000 (AM5) Gen5 28 ~24
AMD Threadripper 7000 Gen5 92 ~88
AMD Threadripper Pro 7000 WX Gen5 128 ~128
AMD EPYC Genoa (9004) Gen5 128 ~128 (socket unique)
AMD EPYC Turin (9005) Gen5 128 ~128 (socket unique)
AMD EPYC bi-socket Gen5 160 partagées via xGMI

Trois conséquences en découlent immédiatement.

Un CPU de bureau grand public ne peut pas alimenter quatre GPU à pleine bande passante. Avec 20 à 28 lignes au total, vous attribuez un x16 au port principal, un x4 au NVMe, et c’est terminé. Les configurations « 4 GPU de bureau » qui bifurquent un x16 en 4×x4 fonctionnent en inférence, car la plupart des charges d’inférence ne saturent pas un x4 Gen5 (~16 GB/s). Elles ne conviennent pas à l’entraînement réparti sur plusieurs cartes, à cause du trafic de synchronisation des gradients.

Un Xeon W ou un Threadripper Pro de station de travail accueille quatre GPU en x16 sans difficulté — 64 lignes pour les GPU, et de quoi alimenter largement le NVMe et une carte réseau 25/100 GbE.

Un EPYC Genoa ou Turin en socket unique offre 128 lignes, seule façon raisonnable de construire un serveur à 8 GPU avec les huit cartes en x16. L’EPYC bi-socket ajoute des lignes sur le papier, mais le gain est plus faible qu’il n’y paraît, car le trafic inter-sockets passe par le xGMI, qui est limité et partagé.

Bifurcation : découper un x16 en morceaux plus petits

Un port PCIe est physiquement en x16, mais l’hôte peut être configuré pour le présenter électriquement comme des liens plus étroits. Les découpes standard sont :

  • x16 → 2 × x8
  • x16 → 4 × x4
  • x8 → 2 × x4

La bifurcation est gérée par le CPU et exposée par le BIOS de la carte mère. Pouvoir réellement l’utiliser suppose trois conditions réunies : le CPU la prend en charge, le BIOS propose l’option, et le riser ou le fond de panier est câblé pour répartir correctement les lignes. Les deux premières sont généralement remplies sur les cartes de classe serveur (Supermicro, ASRock Rack, Gigabyte). C’est la troisième qui fait des victimes : chaque fabricant câble les lignes à sa façon.

La bifurcation est l’astuce qui permet de loger plus de GPU dans un châssis que le CPU n’a de ports x16. Un serveur EPYC à 8 GPU comporte rarement 8 ports racine x16 natifs ; c’est un mélange de ports natifs et bifurqués routés via des risers, chaque GPU obtenant du x16 ou du x8 selon l’agencement.

Ce que vous y perdez : de la bande passante par carte. Un lien x8 Gen5 bifurqué, c’est 32 GB/s — la moitié d’un x16. En inférence, cela ne se voit pas. En entraînement multi-GPU, cela se paie sur la synchronisation des gradients et le transfert des activations.

Switches PCIe et retimers

Si la bifurcation ne suffit pas — disons que vous voulez huit GPU tous en x16 — la réponse est un switch PCIe. La série PEX de Broadcom en est l’exemple canonique. Un switch de classe PEX 89000 prend un x16 en amont depuis le CPU et le déploie vers plusieurs ports x16 en aval. Les ports aval sursouscrivent le lien amont : si les huit GPU sollicitent l’hôte en même temps, ils se partagent le x16 amont.

C’est l’architecture des cartes de base HGX de NVIDIA (et des systèmes SXM que Kentino ne construit pas). Elle fonctionne parce que, dans des charges multi-GPU bien conçues, l’essentiel du trafic est de GPU à GPU (NVLink ou pair-à-pair PCIe), et non de GPU à hôte. Le lien amont ne transporte que les poids au chargement, quelques points de sauvegarde et les entrées/sorties de stockage. L’inférence ne le sature pas ; l’entraînement non plus la plupart du temps, à condition que les collectives restent entre GPU.

Les retimers, c’est autre chose : ce sont des répéteurs de signal qui permettent à un lien Gen5 de parcourir un câble plus long que ne l’autorise la spécification. Ils ne changent pas la topologie — ils rendent la topologie choisie physiquement réalisable. Tous les châssis EPYC à 8 GPU livrés par Kentino utilisent des retimers, car la longueur de câble entre la carte mère et les baies GPU dépasse la portée native du Gen5.

NVLink — ce que c’est, et où il n’est pas

NVLink est l’interconnexion propriétaire GPU à GPU de NVIDIA, distincte du PCIe. Elle utilise un jeu dédié de lignes à haut débit sur la tranche du GPU (ou via un connecteur SXM ou un NVLink Bridge) pour offrir un accès mémoire direct entre GPU, à une bande passante bien supérieure à celle du PCIe.

Interconnexion Bande passante agrégée Cartes compatibles (en 2026)
PCIe Gen5 x16 64 GB/s Tous les GPU PCIe actuels
Pont NVLink 4 600 GB/s Variantes PCIe A100, H100 (quasiment retirées)
NVLink 5 (SXM) 1800 GB/s H100 SXM, H200, GB200, B200 — uniquement en SXM
NVLink (Pro 6000 SXM) N/A La RTX Pro 6000 Blackwell est en PCIe, sans NVLink

Le point essentiel pour toute configuration livrée par Kentino : aucune de nos cartes ne dispose de NVLink. La RTX 4090 a abandonné le connecteur que portait la 3090. La 5090 ne l’a pas. La RTX Pro 6000 Blackwell (en version Workstation comme en Max-Q) est exclusivement PCIe. Idem pour les L40 et L4.

Ce n’est pas un oubli. NVIDIA réserve NVLink aux GPU SXM de centre de données et aux rares cartes PCIe dotées d’un pont NVLink — lesquelles disparaissent peu à peu, le haut de gamme basculant entièrement vers le SXM. Si vous voulez du NVLink, vous achetez du HGX avec des modules H100/H200/B200 à dix fois le prix, et Kentino ne construit pas cela.

Sans NVLink, les collectives GPU à GPU (all-reduce, all-gather, reduce-scatter) passent par le pair-à-pair PCIe. La bande passante effective entre deux cartes est limitée par le plus lent des deux liens PCIe et par le switch ou le port racine qui les sépare. Sur un système EPYC à 8 GPU, le pair-à-pair entre GPU rattachés au même switch est rapide ; d’un root complex à l’autre, il passe par le CPU et devient plus lent.

En inférence, cela n’a presque jamais d’importance : l’inférence est limitée par la mémoire du GPU local, les activations par lots ne traversant qu’occasionnellement les GPU. Pour l’entraînement en parallélisme tensoriel, c’est en revanche la première raison pour laquelle une configuration EPYC 8×5090 n’équivaut pas à un nœud HGX 8×H100, même lorsque les FLOPS bruts semblent comparables.

Quand la bande passante PCIe sature réellement

Charge de travail Sature le PCIe ? Remarques
Inférence mono-GPU (LLM, lot de 1) Non Le modèle réside en VRAM ; le PCIe ne sert qu’aux tokens
Inférence mono-GPU (LLM, grands lots) Non Le débit monte avec la taille du lot ; le PCIe reste inoccupé
Inférence vision mono-GPU Parfois Si les données viennent de la mémoire CPU, le x8 se remarque
Inférence multi-GPU (parallélisme tensoriel) Parfois Les activations traversent les GPU à chaque couche
Inférence multi-GPU (parallélisme de pipeline) Rarement Seules les activations aux frontières d’étage
Chargement du modèle depuis le NVMe / le réseau Oui Un Llama-405B Q8 de 140 GB réclame chaque GB/s disponible
Entraînement, mono-GPU Non Identique à l’inférence
Entraînement, multi-GPU, ZeRO-1/2 Oui L’all-reduce des gradients martèle le lien
Entraînement, multi-GPU, ZeRO-3 / FSDP Oui, fortement All-gather des paramètres à chaque passe avant
Entraînement, multi-GPU, parallélisme tensoriel Oui, fortement Sans NVLink, c’est le pire des cas

La règle est constante : l’inférence ne sature pas le PCIe, l’entraînement si. Si la machine passera sa vie à servir de l’inférence — ce qui est le cas de la plupart des acheteurs — un x8 Gen5 par carte suffit, et vous pouvez loger davantage de GPU dans un budget de topologie plus restreint. Si vous entraînez, il vous faut chaque carte en x16 et des GPU regroupés de façon que les collectives n’empruntent pas le chemin le plus lent.

Topologie d’une configuration à 4 GPU (EPYC Genoa, socket unique)

C’est la configuration Kentino standard à 4 GPU sur AMD EPYC. Elle fonctionne également sur Threadripper Pro 7000 WX, avec une répartition des lignes identique.

AMD EPYC Genoa / Turin — 128 lignes PCIe Gen5
GPU 0
x16
GPU 1
x16
GPU 2
x16
GPU 3
x16
~32 lignes restantes : NVMe x4, carte réseau x8, BMC, administration

EPYC à 4 GPU : chaque GPU dispose d’un lien x16 Gen5 dédié, directement relié au root complex du CPU. Aucun switch, aucune sursouscription.

Chaque GPU bénéficie d’un lien x16 Gen5 complet, directement vers le root complex du CPU. Aucune bifurcation, aucun switch, aucun retimer pour les GPU eux-mêmes (les risers peuvent toutefois en comporter selon l’agencement du châssis). Le pair-à-pair entre deux GPU quelconques passe par le fabric interne de l’EPYC et reste symétrique — les quatre cartes sont équidistantes du point de vue de la topologie.

C’est la configuration multi-GPU la plus propre qui soit. C’est celle que nous livrons pour les 4× RTX 5090, 4× RTX 4090, 4× RTX Pro 6000 Blackwell et 4× L40.

Topologie d’une configuration à 8 GPU (EPYC Genoa / Turin, socket unique)

128 lignes ne suffisent pas à donner un x16 complet à huit GPU : cela consommerait tout le budget sans rien laisser au NVMe ni au réseau. Les agencements standard sont les suivants :

Option A : les 8 GPU en x16, avec un fabric commuté

AMD EPYC Genoa / Turin — 128 lignes Gen5
Switch PEX A (x16 en amont)
G0
x16
G1
x16
G2
x16
G3
x16
Switch PEX B (x16 en amont)
G4
x16
G5
x16
G6
x16
G7
x16
~96 lignes CPU restantes : baie NVMe, cartes réseau, BMC, administration

Option A : deux switches PCIe, chacun avec un x16 en amont vers le CPU et quatre GPU en x16 en aval. Le pair-à-pair au sein d’un switch est rapide ; d’un switch à l’autre, il passe par le CPU.

Chaque switch se raccorde au CPU en x16 Gen5 en amont et déploie quatre ports x16 en aval. Les GPU 0–3 partagent un lien amont de 64 GB/s vers le CPU ; les GPU 4–7 en partagent un autre. Le pair-à-pair entre les GPU 0 et 1 est rapide (même switch) ; entre le GPU 0 et le GPU 4, il traverse le root complex du CPU et devient plus lent. Les configurations à 8 GPU de Kentino sur châssis Supermicro et Bone64c suivent ce modèle.

Option B : les 8 GPU en x8, en direct vers le CPU

AMD EPYC Genoa / Turin — 128 lignes Gen5, bifurquées
G0
x8
G1
x8
G2
x8
G3
x8
G4
x8
G5
x8
G6
x8
G7
x8
8 × x8 = 64 lignes pour les GPU. ~64 lignes libres pour NVMe / cartes réseau / BMC

Option B : 8 GPU en x8 reliés directement au CPU par bifurcation. Aucun switch, aucune sursouscription, 32 GB/s par carte. Réservé aux configurations dédiées à l’inférence.

Aucun switch, aucune sursouscription, une latence CPU-GPU plus faible. Chaque carte obtient 32 GB/s au lieu de 64. En inférence, cela ne se voit pas. Pour un entraînement à communications collectives intensives, c’est nettement moins bon que l’option A : le lien par carte est plus étroit et il n’y a pas de pair-à-pair rapide au sein d’un switch.

Par défaut, Kentino retient l’option A (fabric commuté) pour les systèmes capables d’entraînement, et l’option B (bifurcation directe) pour les configurations dédiées à l’inférence, où le budget de lignes est mieux employé sur le NVMe et deux cartes réseau 100 GbE.

Intégrité du signal en Gen5

Le Gen5 est assez rapide pour que la couche physique compte comme elle ne comptait pas en Gen3 ou en Gen4. Une piste Gen5 parcourt environ 7 pouces sur un PCB FR4 standard avant que le diagramme de l’œil ne se referme. Un câble Gen5 tient environ 20 cm sans retimer. C’est suffisant pour un port adjacent au CPU ; c’est insuffisant pour un câble riser dans un châssis 4U, à 40 cm de distance.

Ce que cela implique :

  • Les risers comptent. Les risers Gen4 ne laissent pas passer un signal Gen5. Il vous faut des risers certifiés Gen5, généralement avec un retimer en ligne. L’écart de prix est réel — de 80 à 150 € par riser.
  • La longueur de câble est strictement bornée. Au-delà de 30 cm, il faut un retimer ; au-delà de 70 cm, il en faut deux. C’est pourquoi les produits de type « boîtier GPU externe » n’existent pas vraiment en Gen5.
  • Un lien instable retombera silencieusement en Gen4 ou en Gen3. Le système démarre, le GPU apparaît dans nvidia-smi, l’inférence tourne. La bande passante vaut le quart de ce que vous avez payé. nvidia-smi --query-gpu=pcie.link.gen.current,pcie.link.width.current est la toute première chose à vérifier sur une machine neuve.
  • Le BIOS compte. Certaines cartes Supermicro et ASRock Rack laissent la vitesse de lien sur « Auto » par défaut et choisissent prudemment. Forcez explicitement le Gen5 et vérifiez après démarrage.

Nous avons vu des machines où l’un des huit GPU a entraîné en Gen3 x8 pendant des semaines, faute d’avoir regardé. Le travail tournait. Il était 4× plus lent qu’il n’aurait dû.

Quand la topologie compte et quand elle ne compte pas

Elle ne compte généralement pas si : vous faites de l’inférence mono-GPU, quelle que soit la taille du modèle ; de l’inférence multi-GPU en parallélisme de réplicas (chaque GPU exécute sa propre copie) ; de l’inférence par lots dominée par la bande passante VRAM ; ou si vous chargez les modèles une fois pour les servir pendant des heures.

Elle compte beaucoup si : vous entraînez en multi-GPU avec le modèle réparti sur plusieurs cartes (parallélisme tensoriel ou de pipeline) ; vous utilisez FSDP ou ZeRO-3, où les paramètres sont fragmentés puis rassemblés à chaque étape ; vous exécutez du RLHF ou d’autres charges à synchronisation fréquente des gradients ; vous permutez des modèles à chaud en production ; ou vous alimentez les GPU depuis un stockage distant dont le PCIe est l’entonnoir.

Pour la plupart des acheteurs — serveurs d’inférence pour le service de LLM/VLM, back-ends de robotique, hébergement de serveurs IA — la topologie est une question de vérification du lien, pas une question d’architecture. Pour les quelques-uns qui font de l’entraînement multi-GPU sérieux, la topologie (commuté ou bifurqué, NVLink ou non) est LA décision d’architecture, et c’est pourquoi une configuration EPYC 8×5090 est le bon outil pour certains entraînements et le mauvais pour d’autres.

Que faire ensuite

Si vous dimensionnez une configuration multi-GPU, voici les questions à trancher avant d’arrêter votre choix de CPU :

  1. Combien de GPU, et sur quelle largeur de lien ? 4 × x16 tient sur une station de travail ; 8 × x16 exige un EPYC et des switches ; 8 × x8 exige un EPYC et de la bifurcation.
  2. Inférence ou entraînement ? Inférence uniquement : un x8 par GPU suffit, économisez le coût du switch. Entraînement en parallélisme tensoriel : du x16 et un switch, sans discussion.
  3. Quoi d’autre a besoin de lignes ? Une carte réseau 100 GbE prend un x16. Quatre disques NVMe U.2 prennent un x16. Planifiez avant de vous engager.
  4. Qu’en est-il de vos risers Gen5 ? Comptez 100 € par riser et vérifiez qu’ils sont certifiés Gen5, avec retimers si nécessaire. Voir W03 pour le détail des risers.
  5. Êtes-vous certain de ne pas avoir besoin de NVLink ? Si votre charge d’entraînement est limitée par l’interconnexion, aucune topologie PCIe ne vous sauvera. La discussion bascule alors vers du matériel de classe HGX — que Kentino ne construit pas. Mieux vaut le savoir avant qu’après la mise en rack.

Une fois le système assemblé et mesuré une bonne fois, on oublie la topologie PCIe pendant trois ans. Les moments où il faut y prêter attention : le premier jour (vérifier la vitesse de lien de chaque GPU), après toute mise à jour du BIOS (les réglages d’apprentissage de lien sont réinitialisés), après tout remontage physique (les câbles bougent, les liens retombent) et avant tout entraînement qui coûte réellement de l’argent.


Cet article fait partie du Wiki Kentino, une série de référence sur le calcul IA, la robotique et les systèmes qui les relient. Commentaires et corrections bienvenus à info@kentino.com.