Il server HGX H200: otto GPU in una macchina
Un server HGX H200 da 8U, senza coperchio, organizzato come il modello di riferimento di NVIDIA (il DGX H200): in alto il vassoio GPU con le sue otto H200, i suoi quattro NVSwitch (punti luminosi: gli scambi NVLink) e il suo backplane; sotto, il vassoio della scheda madre, estratto dal retro per mostrarlo; in fondo gli alimentatori; davanti le ventole e gli SSD. La GPU 1 esce dal suo alloggiamento: spostate il cursore per rimetterla in posizione, poi cliccate su «Modulo» per aprirla.
Una GPU da data center non è una scheda grafica
L'H200 SXM non ha né ventola, né uscita video, né un classico connettore PCIe: è un modulo «mezzanine» che si avvita su una scheda HGX a 8 GPU e che viene raffreddato dal server. Selezionate un componente per vedere a cosa serve.
Il chip GH100 visto dall'alto
814 mm² di silicio: 8 blocchi di calcolo (GPC) intorno alla cache L2, i controller di memoria HBM sui lati, NVLink in alto, PCIe in basso. Cliccate su una zona.
Un multiprocessore (SM) dei 132
Quattro blocchi identici, ciascuno con i propri core CUDA, il proprio Tensor Core e i propri registri, intorno a una memoria condivisa da 256 KB. Cliccate su un blocco.
Un Tensor Core moltiplica matrici
D = A × B + C in un'unica istruzione: ogni riga di A incontra ogni colonna di B, e il risultato si accumula in D. È l'operazione di base di una rete neurale.
La GPU che estraiamo
NVIDIA H200 SXM5 · 141 GB · 700 W
Uno degli otto moduli H200, con il suo dissipatore dalla copertura dorata. Non si inserisce in uno slot PCIe e non ha alcun cavo: si appoggia in piano sulla scheda HGX, su due connettori mezzanine che gli forniscono corrente e dati, e il dissipatore lo tiene premuto in posizione. Il cursore lo estrae dal suo alloggiamento; clicchi su «Modulo» per aprirlo strato per strato.
Le altre sette GPU
8 × H200 · 1,1 TB di HBM3e
Otto moduli identici disposti in due file da quattro, nella direzione del flusso d'aria: ciascuno sotto un grande dissipatore alettato attraversato dall'aria delle ventole dalla parte anteriore a quella posteriore. Insieme: 1,1 TB di memoria HBM3e e circa 32 PFLOPS in FP8 (con sparsità). Il software vede otto GPU che possono condividere uno stesso modello.
Scheda HGX H200 e backplane
La scheda delle otto GPU
Una grande scheda progettata da NVIDIA e fornita ai produttori di server (Supermicro, Dell, HPE, Gigabyte…): ospita gli otto alloggiamenti SXM5, i quattro NVSwitch e l'alimentazione delle GPU. Sul retro del vassoio, un backplane (midplane) la collega al resto del server: alimentazione, collegamenti PCIe 5.0 verso i processori, sensori e segnali. Stesso formato della scheda HGX H100: uno chassis progettato per la H100 accoglie la H200.
NVSwitch e NVLink
4 chip · 900 GB/s per GPU
Quattro chip NVSwitch, collocati subito dietro le ventole per ricevere per primi l'aria fresca, collegano ogni GPU a tutte le altre in NVLink: 900 GB/s per GPU (7,2 TB/s per tutte e otto), circa sette volte il throughput di un collegamento PCIe 5.0. È ciò che permette di ripartire un grande modello sulle otto GPU come se fossero una sola. I punti luminosi rappresentano questi scambi.
Vassoio scheda madre e processori
2 × Intel Xeon o AMD EPYC
Sotto il vassoio GPU, un cassetto da 2U che si estrae dal retro (lo abbiamo tirato fuori per mostrarlo). Ospita la scheda madre e i suoi due processori: fanno girare il sistema, caricano i dati e distribuiscono il lavoro alle GPU tramite PCIe 5.0. Non eseguono quasi nessun calcolo di IA: il loro ruolo è alimentare le GPU senza farle attendere.
Memoria RAM
32 moduli DDR5 · 2 TB su un DGX H200
La memoria dei processori, distinta dalla HBM delle GPU: serve al sistema, al caricamento dei modelli e alla preparazione dei dati. Sedici moduli attorno a ciascun processore, 32 in tutto: 2 TB sul DGX H200, fino a 4 TB o più presso altri produttori.
Schede di rete
8 × ConnectX-7 · 400 Gb/s · una per GPU
Per addestrare un modello su più server, ogni GPU dispone della propria scheda di rete NVIDIA ConnectX-7 a 400 Gb/s, in InfiniBand o in Ethernet. Sul DGX H200 sono raggruppate in due moduli da quattro e fanno capo a quattro porte OSFP sul retro; altre due schede servono per lo storage. Le GPU di due server si scambiano così i dati direttamente, senza passare dai processori (GPUDirect RDMA).
Alimentatori
6 × da 3 a 3,3 kW · ridondanti
In basso sul retro, sei alimentatori da 3 a 3,3 kW, sostituibili a caldo e montati in ridondanza: il guasto di un alimentatore non arresta il server. Ne servono così tanti perché un server HGX H200 completo consuma più di 10 kW a pieno carico, di cui 5,6 kW per le sole GPU.
Ventole
12 moduli doppi sul lato anteriore (DGX)
Quasi tutto il lato anteriore è un muro di ventole: dodici moduli doppi sostituibili a caldo sul DGX H200, una decina presso altri produttori. Aspirano l'aria fredda dalla parte anteriore, la spingono attraverso gli NVSwitch, le GPU e il vassoio della scheda madre e la espellono dalla griglia posteriore. Da sole consumano diverse centinaia di watt: è per questo che le grandi installazioni passano al raffreddamento a liquido.
SSD NVMe
8 × U.2 sul lato anteriore (DGX)
Sotto le ventole, SSD NVMe U.2 sostituibili a caldo fungono da cache veloce per i dataset: otto da 3,84 TB sul DGX H200, fino a sedici presso alcuni produttori. Il sistema si avvia da due SSD M.2 in mirroring, all'interno. Al centro, una piccola console (USB, VGA) per gli interventi in loco.
Chassis
8U · rack da 19 pollici · da 75 a 130 kg
Il case metallico, montato in un rack standard da 19 pollici. Un server HGX H200 occupa 8 unità di altezza nelle versioni NVIDIA e Supermicro (6U per Dell) e pesa da 75 a 130 kg a seconda del modello: l'installazione richiede più persone e guide rinforzate. Dietro il vassoio GPU, una griglia forata lascia uscire l'aria calda.
Dissipatore passivo
Base in rame · alette in alluminio · 0 ventole
L'H200 SXM non ha alcuna ventola: un blocco di alette in alluminio montato su una base in rame (camera di vapore) dissipa fino a 700 W. Sono le ventole del server a spingere l'aria attraverso le alette; nei rack HGX H200 raffreddati a liquido, questo dissipatore è sostituito da una piastra fredda (cold plate).
- Stesso inviluppo termico dell'H100: 700 W
- Aria o liquido, a scelta del costruttore del server
Interfaccia termica (TIM)
Tra il chip e il dissipatore
Un sottile strato di pasta, di pad o di metallo liquido colma le microscopiche irregolarità tra la parte superiore dei chip (GPU e HBM) e la base del dissipatore. Senza di esso, l'aria intrappolata isolerebbe il chip e la GPU ridurrebbe la propria frequenza in pochi secondi per non surriscaldarsi.
6 stack di memoria HBM3e
141 GB · 4,8 TB/s · bus a 6.144 bit
La grande novità dell'H200. Sei stack di HBM3e (High Bandwidth Memory) circondano il chip GPU: ogni stack sovrappone più chip DRAM collegati verticalmente da migliaia di micro-via (TSV). Sei stack da 24 GB = 144 GB fisici, di cui 141 GB utilizzabili.
- 4,8 TB/s di larghezza di banda, ovvero 1,4 volte l'H100
- Posati a pochi millimetri dalla GPU, sull'interposer
- È la memoria a limitare la velocità di inferenza dei grandi modelli linguistici
Chip GPU GH100 (Hopper)
814 mm² · 80 miliardi di transistor · TSMC 4N
Il cuore dell'H200: lo stesso chip GH100 dell'H100, prodotto da TSMC con processo 4N. Nella versione SXM sono attivi 132 multiprocessori (SM), ovvero 16.896 core CUDA e 528 Tensor Core di 4ª generazione, con 50 MB di cache L2.
- Transformer Engine: calcolo in FP8 per i modelli linguistici
- Fino a 3.958 TFLOPS FP8 (con sparsità)
- Partizionabile in 7 istanze MIG indipendenti
Interposer in silicio (CoWoS-S)
Packaging 2,5D di TSMC
Una lastra di silicio passiva, senza transistor, su cui sono posati fianco a fianco la GPU e i sei stack HBM. Contiene le migliaia di piste ultrasottili che collegano la memoria alla GPU: è proprio l'interposer a rendere possibile il bus a 6.144 bit. Questa tecnica di assemblaggio si chiama CoWoS-S (Chip on Wafer on Substrate); la sua capacità produttiva è uno dei fattori che limitano la disponibilità delle H200 nel mondo.
Telaio di irrigidimento
Protegge il package
Un telaio metallico incollato sul substrato, tutto intorno all'interposer. Impedisce al package di deformarsi con il calore e distribuisce la pressione del dissipatore, che è avvitato con una forza notevole per garantire il contatto termico.
Substrato del package
Circa 7,5 × 7,5 cm
Un circuito stampato multistrato molto denso che fa da collegamento tra le microconnessioni dell'interposer e le sfere di saldatura (BGA) che fissano l'insieme sulla scheda SXM. Substrato, interposer, GPU e HBM formano il «package»: il componente che NVIDIA consegna ai suoi partner.
Stadi di alimentazione (VRM)
12 V → meno di 1 V · diverse centinaia di ampere
Decine di stadi di potenza e le relative induttanze trasformano i 12 V forniti dalla scheda HGX in una tensione inferiore a 1 V, ma con una corrente di diverse centinaia di ampere. È la seconda fonte di calore del modulo dopo il chip, da cui la loro posizione sotto il dissipatore.
Condensatori di disaccoppiamento
Filtraggio dell'alimentazione
File di condensatori ceramici attorno al package, e condensatori più grandi sotto la scheda, accumulano e restituiscono energia in pochi nanosecondi. Quando i Tensor Core avviano un calcolo, la richiesta di corrente sale di colpo: sono loro a evitare un calo di tensione.
Scheda SXM5 (PCB)
Circa 14 × 10 cm
Il circuito stampato del modulo. A differenza di una scheda grafica, non ha né connettore PCIe, né uscita video, né presa di alimentazione: tutto passa dai due connettori situati sotto. Quattro distanziali filettati attraversano la scheda: mantengono il dissipatore alla giusta altezza e alla giusta pressione sul package e guidano il modulo durante il montaggio sulla scheda HGX.
Connettori mezzanine SXM
NVLink 900 GB/s · PCIe 5.0 · alimentazione
Due connettori ad alta densità sotto la scheda si innestano nella scheda madre HGX. Trasportano l'alimentazione, le 16 linee PCIe 5.0 verso il processore e i 18 collegamenti NVLink (900 GB/s) verso i chip NVSwitch che collegano le 8 GPU del server. Nessun cavo: è ciò che permette di impilare 8 GPU da 700 W in un solo chassis.
Il die GH100
814 mm² · 80 miliardi di transistor · TSMC 4N
Visto dall'alto, il silicio del GH100 è una superficie di 28 mm di lato. Tutto ciò che calcola si trova al centro, tutto ciò che comunica sui bordi: memoria a sinistra e a destra, NVLink in alto, PCIe in basso. Sulla H200 SXM sono attivi 132 dei 144 multiprocessori incisi; gli altri vengono disattivati in fabbrica per migliorare la resa produttiva.
8 blocchi di calcolo (GPC)
8 GPC × 9 TPC × 2 SM = 144 SM incisi, 132 attivi
Il calcolo è organizzato in 8 Graphics Processing Clusters, ciascuno composto da 9 coppie di multiprocessori (TPC). Ogni multiprocessore (SM) contiene 128 core CUDA e 4 Tensor Core: 16.896 core CUDA e 528 Tensor Core in totale sulla H200 SXM. Il motore GigaThread ripartisce i compiti tra i GPC; un GPC può anche essere isolato come istanza MIG.
L'SM che stiamo per aprire
1 SM su 132 · livello successivo
Un multiprocessore evidenziato: è quello che il livello successivo descrive in dettaglio. Ogni SM esegue gruppi di 32 thread (i «warp»), con i propri core, Tensor Core, registri e memoria condivisa. Ingrandisca al massimo per entrarvi.
Cache L2
50 MB in due partizioni
Una grande cache condivisa da tutti gli SM, al centro del chip, divisa in due metà collegate da una rete di interconnessione. Tiene a portata di mano i dati più richiesti per evitare di andarli a cercare nella HBM, più lenta e più energivora, e permette agli SM di scambiarsi i risultati.
Controller di memoria HBM
12 controller da 512 bit = 6.144 bit · 4,8 TB/s
Su ciascun lato, tre interfacce fisiche (PHY) collegano il chip ai sei stack HBM3e posti accanto a esso sull'interposer, con due controller di memoria per stack. Il bus a 6.144 bit è ciò che conferisce alla H200 i suoi 4,8 TB/s: è il componente che fa la differenza rispetto alla H100.
NVLink 4
18 collegamenti × 50 GB/s = 900 GB/s
Diciotto collegamenti NVLink di 4ª generazione, lungo il bordo superiore, collegano la GPU alle altre sette GPU di un server HGX tramite i chip NVSwitch. 900 GB/s per GPU, ovvero 7 volte il PCIe: è ciò che permette di ripartire un modello da 400 miliardi di parametri su 8 GPU come se fossero una sola.
PCIe 5.0 e motore GigaThread
16 linee PCIe, 128 GB/s · ripartizione del lavoro, MIG
Il bordo inferiore si collega al processore del server: sedici linee PCIe 5.0, 128 GB/s in entrambe le direzioni, attraverso le quali arrivano il modello, i dati e le istruzioni. Accanto, il motore GigaThread, direttore d'orchestra del chip: riceve i compiti (i «kernel»), li suddivide in blocchi di thread e li distribuisce ai GPC disponibili; in modalità MIG isola fino a sette istanze indipendenti da 18 GB.
Un multiprocessore (SM)
1 su 132 · 4 blocchi di elaborazione
L'SM è l'unità di base della GPU: esegue warp di 32 thread su quattro blocchi di elaborazione identici, che condividono 256 KB di memoria veloce, quattro unità texture e un motore di copia (TMA). Su un chip, 132 SM lavorano in parallelo.
Scheduler e registri
32 thread per ciclo · 64 KB di registri per blocco
Ogni blocco ha il proprio scheduler di warp e la propria unità di dispatch: a ogni ciclo scelgono un warp pronto (i cui dati sono arrivati) e inviano la sua istruzione ai core; mentre un warp attende la memoria, un altro calcola. Appena sotto, il register file conserva le variabili dei thread: 64 KB per blocco, 256 KB per SM, 33 MB sul chip, letti in un solo ciclo.
Core CUDA (FP32)
32 per blocco · 128 per SM · 16.896 per GPU
I core CUDA eseguono i calcoli generici in virgola mobile a 32 bit: addizioni, moltiplicazioni, confronti. Trentadue per blocco, uno per ogni thread del warp, che eseguono tutti la stessa istruzione nello stesso istante su dati diversi (il modello SIMT).
Core FP64 e INT32
16 FP64 + 16 INT32 per blocco · 64 + 64 per SM
I core a 64 bit servono al calcolo scientifico (simulazione, clima, chimica), dove conta soprattutto la precisione: sedici per blocco, contro uno solo su una scheda grafica consumer. Le unità per interi calcolano indirizzi, indici e cicli mentre i core in virgola mobile svolgono i calcoli matematici; il fatto che siano separate permette di eseguire entrambe le operazioni contemporaneamente.
Tensor Core di 4ª generazione
1 per blocco · 4 per SM · 528 per GPU
Il cuore dell'IA: un'unità che moltiplica intere matrici in un'unica istruzione, in FP8, FP16, BF16, TF32 o INT8. Il Transformer Engine sceglie la precisione al volo per i modelli linguistici. 4 Tensor Core per SM, 528 sulla H200: fino a 3.958 TFLOPS in FP8 con sparsità. Ingrandisca al massimo per vedere l'operazione.
Unità LD/ST e SFU
8 LD/ST + 4 SFU per blocco
Le unità load/store leggono e scrivono la memoria per conto dei thread; le Special Function Units calcolano seno, esponenziale, radice quadrata, reciproco… usate di continuo dalle funzioni di attivazione delle reti neurali.
Cache L1: dati e istruzioni
256 KB di L1 / memoria condivisa + cache delle istruzioni
In basso, una memoria veloce comune ai quattro blocchi, ripartita a scelta tra cache L1 e memoria condivisa programmabile, in cui i thread di uno stesso blocco si scambiano dati: 256 KB per SM, a pochi cicli dai core, la chiave delle prestazioni di librerie come FlashAttention. In alto, la cache delle istruzioni L1 conserva il programma in esecuzione e alimenta le cache L0 di ciascun blocco.
TMA e unità texture
Copie asincrone HBM → memoria condivisa · 4 unità texture
Il Tensor Memory Accelerator, novità dell'architettura Hopper, sposta grandi blocchi di dati dalla memoria globale alla memoria condivisa in background, mentre i Tensor Core calcolano. Le quattro unità texture, ereditate dal rendering 3D, leggono e filtrano immagini in memoria: campionamento e interpolazione nell'IA, applicazione delle texture sulle superfici nel rendering.
Matrice A: le attivazioni
4 × 8 valori in FP8 o FP16
I dati in corso di elaborazione: per esempio, in un modello linguistico, la rappresentazione del testo al passo corrente. Ogni riga di A viene moltiplicata per ogni colonna di B. In FP8 ogni valore occupa un byte: è ciò che permette di raddoppiare il throughput rispetto all'FP16.
Matrice B: i pesi
8 × 4 valori, caricati dalla HBM
I parametri appresi dal modello, letti dalla HBM3e a pacchetti. Un modello da 70 miliardi di parametri significa 70 miliardi di valori come questi, moltiplicati a ogni token generato: da qui l'importanza della larghezza di banda della memoria.
Risultato D = A × B + C
16 prodotti scalari · 128 moltiplicazioni-addizioni in un'unica istruzione
Ogni cella di D è un prodotto scalare: una riga di A moltiplicata termine a termine per una colonna di B, poi sommata e aggiunta all'accumulatore C (il risultato precedente, in FP16 o FP32): è così che le grandi moltiplicazioni vengono suddivise in tile accumulate senza perdita di precisione. Sotto le matrici, una griglia di circuiti fused multiply-add cablati in hardware esegue tutte le operazioni contemporaneamente, con i dati che passano direttamente da un moltiplicatore al sommatore adiacente. Un Tensor Core di 4ª generazione esegue 512 di queste operazioni per ciclo in FP16, 1.024 in FP8; la H200 ne conta 528, a quasi 2 GHz.