O servidor HGX H200: oito GPU numa só máquina
Um servidor HGX H200 de 8U, sem tampa, organizado como o modelo de referência da NVIDIA (o DGX H200): em cima, o tabuleiro de GPU com os seus oito H200, os seus quatro NVSwitch (pontos luminosos: as trocas NVLink) e o seu backplane; por baixo, o tabuleiro da placa-mãe, retirado pela traseira para ser mostrado; mesmo em baixo, as fontes de alimentação; à frente, as ventoinhas e os SSD. A GPU 1 sai do seu encaixe: desloque o cursor para a voltar a colocar no lugar e depois clique em « Módulo » para a abrir.
Uma GPU de centro de dados não é uma placa gráfica
O H200 SXM não tem ventoinha, nem saída de vídeo, nem conector PCIe convencional: é um módulo « mezzanine » que se aparafusa numa placa HGX de 8 GPU e que é arrefecido pelo servidor. Selecione um componente para ver para que serve.
O chip GH100 visto de cima
814 mm² de silício: 8 blocos de cálculo (GPC) à volta da cache L2, os controladores de memória HBM nas laterais, NVLink em cima, PCIe em baixo. Clique numa zona.
Um multiprocessador (SM) dos 132
Quatro blocos idênticos, cada um com os seus núcleos CUDA, o seu Tensor Core e os seus registos, à volta de uma memória partilhada de 256 KB. Clique num bloco.
Um Tensor Core multiplica matrizes
D = A × B + C numa única instrução: cada linha de A encontra cada coluna de B, e o resultado acumula-se em D. É a operação básica de uma rede neuronal.
A GPU que retiramos
NVIDIA H200 SXM5 · 141 GB · 700 W
Um dos oito módulos H200, com o seu dissipador de tampa dourada. Não encaixa numa porta PCIe e não tem qualquer cabo: assenta na horizontal sobre a placa HGX, em dois conectores mezzanine que lhe fornecem corrente e dados, e o dissipador fixa-o no lugar. O cursor deslizante retira-o do seu encaixe; clique em «Módulo» para o abrir camada a camada.
As outras sete GPU
8 × H200 · 1,1 TB de HBM3e
Oito módulos idênticos em duas filas de quatro, no eixo do fluxo de ar: cada um sob um grande dissipador de alhetas que o ar das ventoinhas atravessa da frente para trás. No conjunto: 1,1 TB de memória HBM3e e cerca de 32 PFLOPS em FP8 (com esparsidade). O software vê oito GPU que podem partilhar um mesmo modelo.
Placa HGX H200 e placa de fundo
A placa das oito GPU
Uma grande placa concebida pela NVIDIA e fornecida aos fabricantes de servidores (Supermicro, Dell, HPE, Gigabyte…): contém os oito encaixes SXM5, os quatro NVSwitch e a alimentação das GPU. Na parte de trás da bandeja, uma placa de fundo (midplane) liga-a ao resto do servidor: alimentação, ligações PCIe 5.0 aos processadores, sensores e sinais. Mesmo formato que a placa HGX H100: um chassis previsto para a H100 aceita a H200.
NVSwitch e NVLink
4 chips · 900 GB/s por GPU
Quatro chips NVSwitch, colocados logo atrás das ventoinhas para receberem primeiro o ar fresco, ligam cada GPU a todas as outras em NVLink: 900 GB/s por GPU (7,2 TB/s para as oito), cerca de sete vezes o débito de uma ligação PCIe 5.0. É o que permite distribuir um grande modelo pelas oito GPU como se formassem uma só. Os pontos luminosos representam essas trocas.
Bandeja da placa-mãe e processadores
2 × Intel Xeon ou AMD EPYC
Por baixo da bandeja das GPU, uma gaveta de 2U que sai pela parte de trás (puxámo-la para a mostrar). Contém a placa-mãe e os seus dois processadores: executam o sistema, carregam os dados e distribuem o trabalho pelas GPU através de PCIe 5.0. Quase não fazem cálculos de IA eles próprios: o seu papel é alimentar as GPU sem as deixar à espera.
Memória RAM
32 módulos DDR5 · 2 TB num DGX H200
A memória dos processadores, distinta da HBM das GPU: serve o sistema, o carregamento dos modelos e a preparação dos dados. Dezasseis módulos à volta de cada processador, 32 no total: 2 TB no DGX H200, até 4 TB ou mais noutros fabricantes.
Placas de rede
8 × ConnectX-7 · 400 Gb/s · uma por GPU
Para treinar um modelo em vários servidores, cada GPU tem a sua própria placa de rede NVIDIA ConnectX-7 de 400 Gb/s, em InfiniBand ou Ethernet. No DGX H200, estão agrupadas em dois módulos de quatro e saem por quatro portas OSFP na parte de trás; mais duas placas servem para o armazenamento. As GPU de dois servidores trocam assim os seus dados diretamente, sem passar pelos processadores (GPUDirect RDMA).
Fontes de alimentação
6 × 3 a 3,3 kW · redundantes
Em baixo, na parte de trás, seis fontes de alimentação de 3 a 3,3 kW, substituíveis a quente e montadas em redundância: a avaria de uma fonte não para o servidor. São necessárias tantas porque um servidor HGX H200 completo consome mais de 10 kW em plena carga, dos quais 5,6 kW só para as GPU.
Ventoinhas
12 módulos duplos na frente (DGX)
Quase toda a face frontal é uma parede de ventoinhas: doze módulos duplos substituíveis a quente no DGX H200, cerca de dez noutros fabricantes. Aspiram o ar frio pela frente, empurram-no através dos NVSwitch, das GPU e da bandeja da placa-mãe, e expulsam-no pela grelha traseira. Só elas consomem várias centenas de watts: é por isso que as grandes instalações passam para o arrefecimento líquido.
SSD NVMe
8 × U.2 na frente (DGX)
Por baixo das ventoinhas, SSD NVMe U.2 substituíveis a quente servem de cache rápida para os conjuntos de dados: oito de 3,84 TB no DGX H200, até dezasseis em alguns fabricantes. O sistema arranca a partir de dois SSD M.2 em espelho, no interior. Ao centro, uma pequena consola (USB, VGA) para intervenções no local.
Chassis
8U · rack de 19 polegadas · 75 a 130 kg
A caixa metálica, montada num rack padrão de 19 polegadas. Um servidor HGX H200 ocupa 8 unidades de altura na NVIDIA e na Supermicro (6U na Dell) e pesa de 75 a 130 kg consoante o modelo: a instalação exige várias pessoas e calhas reforçadas. Atrás da bandeja das GPU, uma grelha perfurada deixa sair o ar quente.
Dissipador passivo
Base de cobre · alhetas de alumínio · 0 ventoinhas
O H200 SXM não tem nenhuma ventoinha: um bloco de alhetas de alumínio montado numa base de cobre (câmara de vapor) dissipa até 700 W. São as ventoinhas do servidor que empurram o ar através das alhetas; nos bastidores HGX H200 arrefecidos por líquido, este dissipador é substituído por uma placa fria (cold plate).
- O mesmo envelope térmico que o H100: 700 W
- Ar ou líquido, à escolha do fabricante do servidor
Interface térmica (TIM)
Entre o chip e o dissipador
Uma fina camada de pasta, pad ou metal líquido preenche as irregularidades microscópicas entre o topo dos chips (GPU e HBM) e a base do dissipador. Sem ela, o ar retido isolaria o chip e a GPU reduziria a sua frequência em poucos segundos para não sobreaquecer.
6 pilhas de memória HBM3e
141 GB · 4,8 TB/s · barramento de 6 144 bits
A grande novidade do H200. Seis pilhas de HBM3e (High Bandwidth Memory) rodeiam o chip da GPU: cada pilha empilha vários chips DRAM ligados verticalmente por milhares de micro-vias (TSV). Seis pilhas de 24 GB = 144 GB físicos, dos quais 141 GB são utilizáveis.
- 4,8 TB/s de largura de banda, ou seja, 1,4 vezes a do H100
- Colocadas a poucos milímetros da GPU, sobre o interposer
- É a memória que limita a velocidade de inferência dos grandes modelos de linguagem
Chip GPU GH100 (Hopper)
814 mm² · 80 mil milhões de transístores · TSMC 4N
O coração do H200: o mesmo chip GH100 do H100, fabricado pela TSMC em 4N. Na sua versão SXM, estão ativos 132 multiprocessadores (SM), ou seja, 16 896 núcleos CUDA e 528 Tensor Cores de 4.ª geração, com 50 MB de cache L2.
- Transformer Engine: cálculo em FP8 para os modelos de linguagem
- Até 3 958 TFLOPS FP8 (com esparsidade)
- Divisível em 7 instâncias MIG independentes
Interposer de silício (CoWoS-S)
Encapsulamento 2,5D da TSMC
Uma placa de silício passiva, sem transístores, sobre a qual estão colocados lado a lado a GPU e as seis pilhas HBM. Contém os milhares de pistas ultrafinas que ligam a memória à GPU: é ela que torna possível o barramento de 6 144 bits. Esta técnica de montagem chama-se CoWoS-S (Chip on Wafer on Substrate); a sua capacidade de produção é um dos fatores que limitam a disponibilidade dos H200 no mundo.
Moldura de reforço
Protege o encapsulamento
Uma moldura metálica colada no substrato, em toda a volta do interposer. Impede que o encapsulamento se deforme com o calor e distribui a pressão do dissipador, que é aparafusado com uma força considerável para garantir o contacto térmico.
Substrato do encapsulamento
Cerca de 7,5 × 7,5 cm
Um circuito impresso multicamada muito denso que faz a ligação entre as microligações do interposer e as esferas de soldadura (BGA) que fixam o conjunto na placa SXM. Encapsulamento, interposer, GPU e HBM formam o « package »: a peça que a NVIDIA entrega aos seus parceiros.
Estágios de alimentação (VRM)
12 V → menos de 1 V · várias centenas de amperes
Dezenas de estágios de potência e os respetivos indutores transformam os 12 V fornecidos pela placa HGX numa tensão inferior a 1 V, mas com uma corrente de várias centenas de amperes. São a segunda maior fonte de calor do módulo, depois do chip, daí a sua posição sob o dissipador.
Condensadores de desacoplamento
Filtragem da alimentação
Fileiras de condensadores cerâmicos à volta do encapsulamento, e condensadores maiores por baixo da placa, armazenam e libertam energia em poucos nanossegundos. Quando os Tensor Cores iniciam um cálculo, a procura de corrente dispara: são eles que evitam uma queda de tensão.
Placa SXM5 (PCB)
Cerca de 14 × 10 cm
O circuito impresso do módulo. Ao contrário de uma placa gráfica, não tem conector PCIe, nem saída de vídeo, nem tomada de alimentação: tudo passa pelos dois conectores situados por baixo. Quatro espaçadores roscados atravessam a placa: mantêm o dissipador à altura certa e com a pressão certa sobre o encapsulamento, e guiam o módulo durante a montagem na placa HGX.
Conectores mezzanine SXM
NVLink 900 GB/s · PCIe 5.0 · alimentação
Dois conectores de alta densidade por baixo da placa encaixam na placa-mãe HGX. Transportam a alimentação, as 16 linhas PCIe 5.0 para o processador e as 18 ligações NVLink (900 GB/s) para os chips NVSwitch que interligam as 8 GPU do servidor. Sem qualquer cabo: é isso que permite empilhar 8 GPU de 700 W num único chassis.
O die GH100
814 mm² · 80 mil milhões de transístores · TSMC 4N
Visto de cima, o silício do GH100 é uma planta com 28 mm de lado. Tudo o que calcula está no centro, tudo o que comunica está nas margens: memória à esquerda e à direita, NVLink em cima, PCIe em baixo. Na H200 SXM, 132 dos 144 multiprocessadores gravados estão ativos; os restantes são desativados de fábrica para melhorar o rendimento de fabrico.
8 blocos de cálculo (GPC)
8 GPC × 9 TPC × 2 SM = 144 SM gravados, 132 ativos
O cálculo está organizado em 8 Graphics Processing Clusters, cada um com 9 pares de multiprocessadores (TPC). Cada multiprocessador (SM) contém 128 núcleos CUDA e 4 Tensor Cores: 16 896 núcleos CUDA e 528 Tensor Cores no total na H200 SXM. O motor GigaThread distribui as tarefas entre os GPC; um GPC também pode ser isolado numa instância MIG.
O SM que vamos abrir
1 SM em 132 · nível seguinte
Um multiprocessador em destaque: é ele que o nível seguinte detalha. Cada SM executa grupos de 32 threads (os «warps»), com os seus próprios núcleos, Tensor Cores, registos e memória partilhada. Amplie ao máximo para entrar nele.
Cache L2
50 MB em duas partições
Uma grande cache partilhada por todos os SM, no centro do chip, em duas metades ligadas por uma rede de interligação. Mantém à mão os dados mais solicitados para evitar ir buscá-los à HBM, mais lenta e que consome mais energia, e permite aos SM trocar resultados.
Controladores de memória HBM
12 controladores de 512 bits = 6 144 bits · 4,8 TB/s
Em cada margem, três interfaces físicas (PHY) ligam o chip às seis pilhas HBM3e colocadas ao seu lado no interposer, à razão de dois controladores de memória por pilha. O barramento de 6 144 bits é o que dá à H200 os seus 4,8 TB/s: é o componente que faz a diferença em relação à H100.
NVLink 4
18 ligações × 50 GB/s = 900 GB/s
Dezoito ligações NVLink de 4.ª geração, ao longo da margem superior, ligam a GPU às outras sete GPU de um servidor HGX através dos chips NVSwitch. 900 GB/s por GPU, ou seja, 7 vezes o PCIe: é o que permite distribuir um modelo de 400 mil milhões de parâmetros por 8 GPU como se fossem uma só.
PCIe 5.0 e motor GigaThread
16 linhas PCIe, 128 GB/s · distribuição do trabalho, MIG
A margem inferior recebe o processador do servidor: dezasseis linhas PCIe 5.0, 128 GB/s nos dois sentidos, por onde chegam o modelo, os dados e as instruções. Ao lado, o motor GigaThread, o maestro do chip: recebe as tarefas (os «kernels»), divide-as em blocos de threads e distribui-as pelos GPC disponíveis; em modo MIG, isola até sete instâncias independentes de 18 GB.
Um multiprocessador (SM)
1 em 132 · 4 blocos de processamento
O SM é a unidade básica da GPU: executa warps de 32 threads em quatro blocos de processamento idênticos, que partilham 256 KB de memória rápida, quatro unidades de textura e um motor de cópia (TMA). Num chip, 132 SM trabalham em paralelo.
Escalonador e registos
32 threads por ciclo · 64 KB de registos por bloco
Cada bloco tem o seu escalonador de warps e a sua unidade de despacho: a cada ciclo, escolhem um warp pronto (cujos dados já chegaram) e enviam a sua instrução para os núcleos; enquanto um warp espera pela memória, outro calcula. Logo abaixo, o banco de registos guarda as variáveis das threads: 64 KB por bloco, 256 KB por SM, 33 MB no chip, lidos num só ciclo.
Núcleos CUDA (FP32)
32 por bloco · 128 por SM · 16 896 por GPU
Os núcleos CUDA fazem os cálculos gerais em vírgula flutuante de 32 bits: adições, multiplicações, comparações. Trinta e dois por bloco, um para cada thread do warp, que executam todos a mesma instrução no mesmo momento sobre dados diferentes (o modelo SIMT).
Núcleos FP64 e INT32
16 FP64 + 16 INT32 por bloco · 64 + 64 por SM
Os núcleos de 64 bits servem para a computação científica (simulação, clima, química), onde a precisão é prioritária: dezasseis por bloco, contra um único numa placa gráfica de consumo. As unidades de inteiros calculam endereços, índices e ciclos enquanto os núcleos de vírgula flutuante tratam da matemática; tê-las separadas permite executar ambos ao mesmo tempo.
Tensor Core de 4.ª geração
1 por bloco · 4 por SM · 528 por GPU
O coração da IA: uma unidade que multiplica matrizes inteiras numa só instrução, em FP8, FP16, BF16, TF32 ou INT8. O Transformer Engine escolhe a precisão em tempo real para os modelos de linguagem. 4 Tensor Cores por SM, 528 na H200: até 3 958 TFLOPS em FP8 com esparsidade. Amplie ao máximo para ver a operação.
Unidades LD/ST e SFU
8 LD/ST + 4 SFU por bloco
As unidades load/store leem e escrevem na memória para as threads; as Special Function Units calculam seno, exponencial, raiz quadrada, inverso… utilizados constantemente pelas funções de ativação das redes neuronais.
Caches L1: dados e instruções
256 KB de L1 / memória partilhada + cache de instruções
Em baixo, uma memória rápida comum aos quatro blocos, repartida à escolha entre cache L1 e memória partilhada programável, onde as threads de um mesmo bloco trocam dados: 256 KB por SM, a poucos ciclos dos núcleos, a chave do desempenho de bibliotecas como o FlashAttention. Em cima, a cache de instruções L1 guarda o programa em curso e alimenta as caches L0 de cada bloco.
TMA e unidades de textura
Cópias assíncronas HBM → memória partilhada · 4 unidades de textura
O Tensor Memory Accelerator, novidade da arquitetura Hopper, desloca grandes blocos de dados da memória global para a memória partilhada em segundo plano, enquanto os Tensor Cores calculam. As quatro unidades de textura, herdadas da renderização 3D, leem e filtram imagens em memória: amostragem e interpolação em IA, aplicação de texturas às superfícies em renderização.
Matriz A: as ativações
4 × 8 valores em FP8 ou FP16
Os dados em processamento: por exemplo, num modelo de linguagem, a representação do texto na etapa atual. Cada linha de A é multiplicada por cada coluna de B. Em FP8, cada valor ocupa um byte: é isso que permite duplicar o débito em relação ao FP16.
Matriz B: os pesos
8 × 4 valores, carregados a partir da HBM
Os parâmetros aprendidos do modelo, lidos a partir da HBM3e em pacotes. Um modelo de 70 mil milhões de parâmetros são 70 mil milhões de valores como estes, multiplicados a cada token gerado: daí a importância da largura de banda da memória.
Resultado D = A × B + C
16 produtos escalares · 128 multiplicações-adições numa só instrução
Cada célula de D é um produto escalar: uma linha de A multiplicada termo a termo por uma coluna de B, depois somada e adicionada ao acumulador C (o resultado anterior, em FP16 ou FP32): é assim que as grandes multiplicações são divididas em blocos (tiles) acumulados sem perda de precisão. Sob as matrizes, uma grelha de circuitos fused multiply-add implementados diretamente em hardware realiza todas as operações ao mesmo tempo, com os dados a passar diretamente de um multiplicador para o somador vizinho. Um Tensor Core de 4.ª geração encadeia 512 destas operações por ciclo em FP16, 1 024 em FP8; a H200 tem 528, a quase 2 GHz.