PCIe-baner og topologi i en AI-server med flere GPU'er

Der er en vedvarende myte inden for forbruger-AI om, at "PCIe x8 vs x16 ikke betyder noget for at kunne konkludere." Det er for det meste korrekt, og de folk, der gentager det, ved næsten aldrig hvorfor. De har også en tendens til at falde over i det øjeblik, du spørger dem, hvorfor et desktop-bundkort ikke kan hoste en fjerde GPU med fuld båndbredde, eller hvorfor en 8-GPU EPYC-server ikke opfører sig som to 4-GPU desktops limet sammen.

Denne artikel er den lange version. Den dækker, hvad PCIe-baner er, hvordan de allokeres på de CPU'er, Kentino bygger med, hvad bifurcation og switches gør, hvor NVLink passer (og hvor det ikke gør), og hvornår topologi rent faktisk betyder noget. Den afsluttes med konkrete 4-GPU- og 8-GPU-diagrammer for de EPYC-platforme, vi leverer.

Hvad en PCIe-bane er, kort

En PCIe-bane er et par differentielle serielle links – en for hver retning – mellem et CPU-rodkompleks (eller en downstream-switch) og en enhed. Flere baner er forbundet for at danne en bredere link: x1, x4, x8, x16. Båndbredden skaleres lineært med antallet af baner og fordobles omtrent med hver generation.

Generation Råvarer pr. bane x16 rå x16 brugbar (~)
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

To forbehold. Båndbredden er per retning — et Gen5 x16-link klarer 64 GB/s hver vej samtidigt, hvilket er grunden til, at marketingslides citerer enten "64 GB/s" eller "128 GB/s". Og Gen6 leveres ikke i nogen GPU, du kan købe i dag. Specifikationerne er færdiggjort, men siliciummet er ikke i arbejdsstationskort fra maj 2026; de første Gen6-slutpunkter er datacenter-kun-dele, som Kentino ikke bygger med. For vores faktiske sortiment - RTX 5090, RTX 4090, RTX Pro 6000 Blackwell (begge varianter), L40, L4 - er Gen5 x16 loftet.

Banebudgetter pr. CPU-socket

Det er her, grænsen mellem desktop/arbejdsstation/server bliver synlig. Bane tæller på CPU'erne i nuværende Kentino-builds, efter at det, der er reserveret til chipset/DMI, er fratrukket:

CPU-klasse Generation Samlede PCIe-baner Kan bruges til GPU'er / NIC'er / NVMe
Intel Core (LGA1700/1851) Gen5/4-blanding 20 ~20 (meget stram)
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 Genova (9004) Gen5 128 ~128 (enkelt stik)
AMD EPYC Torino (9005) Gen5 128 ~128 (enkelt stik)
AMD EPYC dobbeltsokkel Gen5 160 delt via xGMI

Tre konsekvenser falder umiddelbart ud af dette.

En forbruger-desktop-CPU kan ikke hoste fire GPU'er med fuld båndbredde. Med 20-28 baner i alt allokerer du én x16 til det primære slot, én x4 til NVMe, og så er du løbet tør. "4-GPU desktop"-builds, der opdeler x16 i 4×x4, fungerer til inferens, fordi det meste inferens ikke mætter x4 Gen5 (~16 GB/s). De fungerer ikke til træning på tværs af kort på grund af gradientsynkroniseringstrafik.

En arbejdsstation med Xeon W eller Threadripper Pro kan komfortabelt rumme fire GPU'er ved x16 — 64 baner til GPU'er, masser tilbage til NVMe og et 25/100 GbE NIC.

En EPYC med én socket i Genoa eller Torino giver dig 128 baner, hvilket er den eneste fornuftige måde at bygge en 8-GPU-server med alle otte kort ved x16. EPYC med to sockets tilføjer nominelle baner, men gevinsten er mindre, end den ser ud til, fordi trafikken på tværs af sockets flyder over xGMI, som er begrænset og delt.

Bifurkation: at skære en x16 i mindre stykker

Et PCIe-slot er fysisk x16, men værten kan få besked på at præsentere det elektrisk som mindre links. Standardudskæringerne er:

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

Bifurcation findes i CPU'en og eksponeres af bundkortets BIOS. Om du rent faktisk kan bruge den, afhænger af, at tre ting er sande på én gang: CPU'en understøtter den, BIOS eksponerer optionen, og riser/backplane er forbundet til at opdele banerne korrekt. De to første er normalt fine på serverklassebundkort (Supermicro, ASRock Rack, Gigabyte). Det tredje er, hvor folk bliver brændt på - forskellige leverandører kortlægger baner forskelligt.

Bifurcation er tricket, der lader dig få plads til flere GPU'er i et kabinet, end CPU'en har x16-slots til. En 8-GPU EPYC-server har sjældent 8 native x16 root-porte; det er en blanding af native og bifurcerede slots, der er routet gennem risers, hvor hver GPU får x16 eller x8 afhængigt af layoutet.

Hvad du mister: båndbredde pr. kort. Et todelt x8 Gen5-link er 32 GB/s - halvdelen af ​​x16. Til inferens er dette usynligt. Ved multi-GPU-træning vises det i gradientsynkronisering og aktiveringspassering.

PCIe-switche og retimere

Hvis bifurcation ikke er nok – lad os sige, at du vil have otte GPU'er, alle på x16 – er svaret en PCIe-switch. Broadcom PEX-serien er det kanoniske eksempel. En PEX 89000-klasse switch tager en x16 upstream fra CPU'en og spreder den ud til flere x16 downstream-porte. Downstream-portene overskriver upstream-linket; hvis alle otte GPU'er hamrer værten samtidigt, deler de upstream x16.

Dette er arkitekturen i NVIDIAs HGX-baseboards (og de SXM-systemer, som Kentino ikke bygger). Det fungerer, fordi det meste af trafikken i velfungerende multi-GPU-arbejdsbelastninger er GPU-til-GPU (NVLink eller PCIe peer-to-peer), ikke GPU-til-vært. Upstream-linket bærer kun vægte ved indlæsningstid, lejlighedsvis checkpointing og storage I/O. Inferens mætter det ikke; træning gør det for det meste heller ikke, hvis kollektiver forbliver mellem GPU'er.

Retimere er anderledes: signalrepeatere, der lader et Gen5-link køre over et kabel, der er længere end specifikationerne tillader. De ændrer ikke topologien – de gør den valgte topologi fysisk mulig. Alle 8-GPU EPYC-chassis, som Kentino leverer, bruger retimere, fordi kablet, der løber fra bundkortet til GPU-båsene, overstiger Gen5's native rækkevidde.

NVLink — hvad det er, og hvor det ikke er

NVLink er NVIDIAs proprietære GPU-til-GPU-forbindelse, adskilt fra PCIe. Den bruger et dedikeret sæt højhastighedsbaner på GPU-kanten (eller via SXM-stikket eller NVLink Bridge) til at give direkte hukommelsesadgang mellem GPU'er med meget højere båndbredde end PCIe.

Interconnect Samlet båndbredde Kort der understøtter det (i 2026)
PCIe Gen5 x16 64 GB / s Alle nuværende PCIe GPU'er
NVLink 4-bro 600 GB / s A100, H100 PCIe-varianter (for det meste udgået)
NVLink 5 (SXM) 1800 GB / s H100 SXM, H200, GB200, B200 — alle kun SXM
NVLink (Pro 6000 SXM) N / A RTX Pro 6000 Blackwell har PCIe, ingen NVLink

Det vigtigste faktum for enhver Kentino-skibsbygning: Ingen af ​​vores kort har NVLink. RTX 4090 mistede det stik, som 3090 havde. 5090 har det ikke. RTX Pro 6000 Blackwell (både Workstation og Max-Q) er kun PCIe. L40 og L4 ligeledes.

Dette er ikke en fejltagelse. NVIDIA forbeholder NVLink til SXM-datacenter-GPU'er og de få PCIe-kort med en NVLink-bro – og disse bliver udfaset, efterhånden som high-end-modellerne går helt over til SXM. Hvis du vil have NVLink, køber du HGX med H100/H200/B200-moduler til ti gange prisen, og Kentino bygger ikke den.

Uden NVLink går GPU-til-GPU-kollektiver (all-reduce, all-gather, reduce-scatter) over PCIe peer-to-peer. Effektiv båndbredde mellem to kort er flaskehalsede af det langsommere af de to PCIe-links og den switch eller root-port, der sidder mellem dem. På et 8-GPU EPYC-system er P2P mellem GPU'er på den samme switch hurtig; P2P på tværs af root-komplekser går gennem CPU'en og er langsommere.

For inferens betyder dette næsten aldrig noget - inferens er hukommelsesbundet på den lokale GPU, med batchaktiveringer, der kun lejlighedsvis krydser GPU'er. For træning med tensorparallelisme er dette den største enkeltstående årsag til, at en 8×5090 EPYC-build ikke er ækvivalent med en 8×H100 HGX-node, selv når de rå FLOPS ser sammenlignelige ud.

Når PCIe-båndbredden rent faktisk mættes

arbejdsbyrde Mætter PCIe? Noter
Enkelt-GPU-inferens (LLM, batch 1) Ingen Modellen er placeret i VRAM; PCIe kun til tokens
Enkelt-GPU-inferens (LLM, stor batch) Ingen Gennemløbshastigheden stiger med batch; PCIe stadig inaktiv
Enkelt-GPU vision inferens Sommetider Hvis der fødes fra CPU-hukommelse, er x8 mærkbar
Multi-GPU-inferens (tensorparallel) Sommetider Aktiveringer på tværs af GPU'er i hvert lag
Multi-GPU-inferens (parallel pipeline) Sjældent Kun aktiveringer ved scenegrænser
Modelindlæsning fra NVMe/netværk Ja En 140 GB Llama-405B Q8 vil have alle de GB/s, du har
Træning, enkelt GPU Ingen Det samme som inferens
Træning, multi-GPU, ZeRO-1/2 Ja Gradient all-reduce hamrer linket
Træning, multi-GPU, ZeRO-3 / FSDP Ja, hårdt Parameter samlet ved hvert skridt fremad
Træning, multi-GPU, parallel tensor Ja, hårdt Uden NVLink er dette det værst tænkelige tilfælde

Mønsteret er konsistent: Inferens mætter ikke PCIe; det gør træning. Hvis buildet skal bruge sin levetid på at tjene inferens – hvilket gælder for de fleste købere – er x8 Gen5 pr. kort fint, og du kan pakke flere GPU'er ind i et mindre topologibudget. Hvis du træner, vil du have hvert kort ved x16 og GPU'erne grupperet, så kollektiverne ikke krydser den langsomste vej.

Topologi for en 4-GPU-build (EPYC Genoa, enkelt sokkel)

Dette er standardkonfigurationen for Kentino 4-GPU på AMD EPYC. Den fungerer også på Threadripper Pro 7000 WX med identisk baneallokering.

AMD EPYC Genoa / Torino — 128 PCIe Gen5-baner
GPU 0
x16
GPU 1
x16
GPU 2
x16
GPU 3
x16
Resterende ~32 baner: NVMe x4, NIC x8, BMC, administration

4-GPU EPYC: Hver GPU får et dedikeret x16 Gen5-link direkte til CPU-rodkomplekset. Ingen switch, ingen overabonnement.

Hver GPU får et fuldt x16 Gen5-link direkte til CPU-rodkomplekset. Ingen bifurcation, ingen switch, ingen retimer for selve GPU'erne (risers kan stadig have retimere afhængigt af chassislayoutet). P2P mellem to GPU'er går gennem EPYC's interne struktur og er symmetrisk - alle fire kort er topologisk set lige langt fra hinanden.

Dette er den reneste multi-GPU-version, der er tilgængelig. Det er den, vi leverer til 4× RTX 5090, 4× RTX 4090, 4× RTX Pro 6000 Blackwell og 4× L40.

Topologi for en 8-GPU-build (EPYC Genoa / Torino, enkelt socket)

128 baner er ikke nok til at give otte GPU'er en fuld x16 hver — det ville forbruge hele budgettet uden noget tilbage til NVMe eller netværk. Standardlayoutene er:

Mulighed A: Alle 8 GPU'er ved x16, med en switch fabric

AMD EPYC Genova / Torino — 128 baner Gen5
PEX-switch A (x16 upstream)
G0
x16
G1
x16
G2
x16
G3
x16
PEX-switch B (x16 upstream)
G4
x16
G5
x16
G6
x16
G7
x16
Resterende ~96 CPU-baner: NVMe-array, NIC'er, BMC, administration

Mulighed A: to PCIe-switche, hver med én x16 upstream til CPU og fire x16 downstream GPU'er. Intra-switch P2P er hurtig; cross-switch P2P går på tværs af CPU'en.

Hver switch upstream-forbinder til CPU'en på x16 Gen5 og spreder fire x16 downstream-porte. GPU'erne 0-3 deler et 64 GB/s upstream-link til CPU'en; GPU'erne 4-7 deler et andet. P2P mellem GPU'erne 0 og 1 er hurtig (samme switch); P2P mellem GPU'erne 0 og GPU'erne 4 krydser CPU'ens rodkompleks og er langsommere. Kentinos 8-GPU bygger på Supermicro- og Bone64c-chassis og følger denne model.

Mulighed B: Alle 8 GPU'er ved x8, direkte til CPU'en

AMD EPYC Genova / Torino — 128 baner Gen5, opdelt
G0
x8
G1
x8
G2
x8
G3
x8
G4
x8
G5
x8
G6
x8
G7
x8
8 × x8 = 64 baner til GPU'er. ~64 baner fri til NVMe / NIC'er / BMC

Mulighed B: 8 GPU'er ved x8 direkte til CPU via bifurkation. Ingen switch, ingen overabonnement, 32 GB/s pr. kort. Kun inferensbaserede builds.

Ingen switch, ingen overabonnement, lavere CPU-til-GPU latenstid. Hvert kort får 32 GB/s i stedet for 64. Til slutning er dette usynligt. Til træning under tung kollektiv kommunikation er det betydeligt dårligere end mulighed A - linket pr. kort er mindre, og der er ingen hurtig intra-switch P2P.

Kentinos standard 8-GPU-build er mulighed A (switched fabric) til træningskompatible systemer og mulighed B (bifurcated direct) til inference-only-builds, hvor lane-budgettet er bedre brugt på NVMe og dual 100 GbE NIC'er.

Signalintegritet ved Gen5

Gen5 er hurtig nok til, at det fysiske lag betyder noget på en måde, som det ikke gjorde ved Gen3 eller Gen4. Et Gen5-spor løber ~7 cm på et standard FR4-printkort, før øjet lukker sig. Et Gen5-kabel løber ~20 cm uden en retimer. Det er nok til et slot ved siden af ​​CPU'en; det er ikke nok til et riserkabel i et 4U-kabinet 40 cm væk.

Hvad det betyder:

  • Stigrør betyder noget. Gen4-riserer kan ikke sende Gen5-signaler igennem. Du skal bruge Gen5-klassificerede riserer, normalt med en retimer inline. Prisforskellen er reel – €80–€150 pr. riser.
  • Kabellængden er hårdt afgrænset. Over 30 cm kræver en retimer; over 70 cm kræver to. Det er derfor, at "eksterne GPU-bokse"-produkter hos Gen5 ikke rigtig findes.
  • Et ustabilt link vil lydløst nedtraine til Gen4 eller Gen3. Systemet starter, GPU'en vises i nvidia-smi, inferenskørsel. Båndbredden er en fjerdedel af, hvad du betalte for. nvidia-smi --query-gpu=pcie.link.gen.current,pcie.link.width.current er det første, man skal tjekke ved en nybyggeri.
  • BIOS er vigtig. Nogle Supermicro- og ASRock-rackkort bruger som standard "Auto"-linkhastighed og vælger konservativt. Gennemtving Gen5 eksplicit, og bekræft efter opstart.

Vi har set builds, hvor en ud af otte GPU'er trænede på Gen3 x8 i ugevis, fordi ingen kiggede. Jobbet kørte. Det var 4 gange langsommere, end det burde have været.

Hvornår topologi er vigtig, og hvornår den ikke er

Det er stort set ligegyldigt, om: du kører enkelt-GPU-inferens i enhver modelstørrelse; multi-GPU-inferens med replikaparallelisme (hver GPU kører sin egen kopi); batch-inferens domineret af VRAM-båndbredde; eller indlæser modeller én gang og serverer dem i timevis.

Det betyder meget, hvis: du træner multi-GPU med modellen opdelt på tværs af kort (tensor eller pipeline parallel); du bruger FSDP eller ZeRO-3, hvor parametre shardes og samles igen i hvert trin; du kører RLHF eller andre arbejdsbelastninger med hyppig gradientsynkronisering; du bruger hot-swapping-modeller under drift; eller du bruger GPU'er til at føde fra et eksternt lagerniveau, hvor PCIe er tragten.

For de fleste købere – inferensservere til LLM/VLM-servering, robotbaserede backends, AI-serverhosting – er topologi et "check-the-link"-problem, ikke et arkitektonisk et. For de få, der udfører seriøs multi-GPU-træning, er topologi (switched vs. bifurcated, NVLink vs. not) den arkitektoniske beslutning, og det er derfor, at en 8×5090 EPYC-build er det rigtige værktøj til nogle træningsjob og det forkerte værktøj til andre.

Hvad skal jeg gøre næste

Hvis du specificerer en multi-GPU-build, er disse spørgsmål, du skal besvare, før du beslutter dig for en CPU:

  1. Hvor mange GPU'er, og ved hvilken banebredde? 4 × x16 passer på en arbejdsstation; 8 × x16 kræver EPYC + kontakter; 8 × x8 kræver EPYC + bifurkation.
  2. Inferens eller træning? Kun inferens: x8 pr. GPU er fint, spar switch-omkostningerne. Træning med parallel tensor: x16 og en switch, punktum.
  3. Hvad har ellers brug for baner? Et 100 GbE NIC kræver x16. Fire U.2 NVMe-drev kræver x16. Planlæg inden du forpligter dig.
  4. Hvad er din historie med Gen5 riser? Budget €100/riser, bekræft Gen5-klassificeret med retimere efter behov. Se W03 for stigrørsdetaljen.
  5. Er du sikker på, at du ikke har brug for NVLink? Hvis din træningsbelastning er begrænset ved forbindelsen, vil ingen PCIe-topologi redde dig. Det er her, samtalen bevæger sig mod hardware i HGX-klassen – som Kentino ikke bygger. Det er bedre at vide det på forhånd end efter racking.

Når systemet er bygget og benchmarket én gang, er PCIe-topologien noget, man glemmer i tre år. Øjeblikkene, man skal være opmærksom på: dag ét (bekræft hver GPU's linkhastighed), efter enhver BIOS-opdatering (nulstilling af linktræningsindstillinger), efter enhver fysisk reset (kabler vrikke, links downtrain), og før enhver træningskørsel, der koster rigtige penge.


Dette er en del af Kentino Wiki, en referenceserie om AI-beregning, robotteknologi og de systemer, der forbinder dem. Kommentarer og rettelser er velkomne på info@kentino.com.