6 pontos por GN⁺ 2025-08-21 | Ainda não há comentários. | Compartilhar no WhatsApp
  • A GPU desempenha um papel central no machine learning moderno e é estruturada pela combinação de inúmeros Streaming Multiprocessors (SMs), especializados em operações de multiplicação de matrizes em alta velocidade, com HBM (memória de alta largura de banda)
  • O SM da GPU é dividido em Tensor Core (multiplicação de matrizes) e CUDA Core (operações vetoriais), oferecendo suporte a computação paralela em larga escala e programação flexível
  • GPU e TPU diferem em estrutura interna e configuração de rede; a GPU tem maior versatilidade e escalabilidade, mas alcançar o desempenho ideal exige mais considerações
  • Dentro de um (Node), é possível realizar comunicação ultrarrápida entre GPUs por meio de NVLink e NVSwitch; entre nós, elas se conectam por redes como InfiniBand, atendendo ao treinamento distribuído em grande escala
  • Em GPUs, as operações coletivas (Collectives) (ex.: AllReduce, AllGather etc.) variam muito em desempenho conforme a estrutura de hardware e as camadas de rede, e na prática tendem a ficar abaixo da largura de banda teórica

O que é uma GPU?

  • As GPUs modernas de ML (ex.: H100, B200) combinam dezenas a centenas de Streaming Multiprocessors (SMs) especializados em multiplicação de matrizes com memória HBM rápida
  • Cada SM possui Tensor Core (multiplicação de matrizes), Warp Scheduler (operações vetoriais) e SMEM (cache on-chip)
  • Diferentemente da TPU, a GPU permite processamento paralelo mais flexível e em maior escala por meio de mais de 100 SMs

Estrutura detalhada do SM

  • O SM é dividido em 4 subpartições, e cada subpartição contém seu próprio Tensor Core, CUDA Core (operações vetoriais), Warp Scheduler, arquivo de registradores etc.
  • O CUDA Core é responsável por operações aritméticas vetoriais (SIMD/SIMT), enquanto o Tensor Core é especializado em multiplicação de matrizes
  • Os FLOPs de Tensor Core são esmagadoramente maiores, e em operações de menor precisão a velocidade de processamento aumenta ainda mais
  • GPUs mais recentes (ex.: B200) adicionam uma grande TMEM para suportar entradas volumosas do Tensor Core

A flexibilidade do CUDA Core

  • O CUDA Core da GPU usa o modelo SIMT (Single Instruction Multiple Threads), executando uma instrução em paralelo em múltiplas threads
  • Cada thread possui um ponteiro de instrução independente (program counter), oferecendo flexibilidade para desvios condicionais etc.; porém, quando há muita divergência de instruções dentro de um warp, o desempenho cai
  • Cada CUDA Core tem estado individual e acesso à memória livremente (a TPU só consegue lidar com memória contígua)

Escalonamento/paralelismo

  • O SM agenda vários warps (até 64) para execução simultânea, e cada warp scheduler executa um programa por vez
  • Graças a essa estrutura, a GPU consegue oferecer alta simultaneidade mantendo considerável flexibilidade

Estrutura de memória da GPU

  • A GPU tem a HBM como memória de maior capacidade e também possui uma hierarquia com L2/L1 (SMEM)/TMEM/registradores

Resumo das especificações das GPUs modernas

  • A quantidade de SMs (Streaming Multiprocessors), clock, memória, FLOPs e largura de banda (BW) varia conforme o modelo
  • A capacidade de memória (HBM), a largura de banda e os FLOPs (ponto flutuante / inteiro / baixa precisão) aumentam a cada geração
  • Principais características na tabela (omitida): a Blackwell (B200) tem HBM de 192GB, HBM BW de 8.0TB/s, FP8 FLOPs de 4.5e15 etc.
  • Em cada geração, são evidentes os avanços de hardware como aumento de registradores e cache on-chip (SMEM), além da adição de TMEM

Comparação entre GPU e TPU

  • A GPU é de uso geral e modularizada em muitos SMs pequenos (unidades paralelas), com muito controle de hardware, o que dificulta o entendimento/otimização
  • A TPU é composta por poucos Tensor Cores grandes e muitos ALUs vetoriais (VPUs), usando um modelo de controle de thread único que simplifica o hardware e reduz custos
  • Por isso, na TPU a otimização por compilador é indispensável, enquanto na GPU vários kernels podem ser executados de forma independente, o que facilita o uso
  • Em termos de desempenho/preço, recentemente a GPU H200 oferece cerca de 2x os FLOPs/s da TPU v5p, 1,5x a HBM e preço em torno de 2,5x maior
  • A TPU tem muita VMEM (cache on-chip) rápida, o que pode gerar grande vantagem em inferência de modelos LLM etc.

Pontos do Q&A sobre hardware de GPU

  • O H100 tem ao todo 16.896 núcleos CUDA fp32 (132 SM x 4 x 32), e o B200 tem 18.944
  • Os FLOPs de operações vetoriais chegam a no máximo 33,5TFLOPs/s no H100, cerca de 30x menos que os FLOPs de multiplicação de matrizes do Tensor Core (990TFLOPs/s)
  • A soma da capacidade de L1/SMEM e registradores do H100 é de 66MB, enquanto a VMEM da TPU é de 120MB
  • A relação entre Bandwidth (largura de banda) e FLOPs (intensidade computacional teórica) é de cerca de 280-300 tanto no H100/B200 quanto na TPU

Networking de GPU (estrutura de comunicação)

Estrutura de nó/cluster

  • Um nó de GPU geralmente agrupa 8 GPUs, conectadas diretamente em largura de banda total por NVLink (ultrarrápido) e NVSwitch (switch)
  • Entre nós, é possível fazer scale-out usando InfiniBand (Ethernet etc.)
  • As GPUs mais recentes (Blackwell) têm uma estrutura escalável até 72 nós

Características por camada de rede

  • Dentro do nó (domínio NVLink): egress de 450GB/s por GPU (H100), 900GB/s (B200), e até 1.6TB/s por NVSwitch
  • Camada superior entre nós (InfiniBand Leaf/Spine): estrutura com Leaf Switch (8) até Spine Switch (16), mantendo teoricamente 400GB/s de largura de banda total entre GPU~GPU
  • Em arquiteturas de grande porte como o SuperPod, há 1024 GPUs (128 nós), e o GB200 (nó de 72 GPUs) tem largura de banda ampliada em 9x (3600GB/s)

Pontos sobre desempenho de rede

  • Em teoria, a estrutura de rede (Full Fat Tree) é projetada para oferecer largura de banda máxima também entre nó~nó
  • Devido a restrições de portas de hardware etc., ao escalar para 1024~4096 GPUs usa-se uma abordagem hierárquica com mais Spine/Core Switches
  • A transição de largura de banda dentro do nó (450GB/s) para largura de banda entre nós (400GB/s) gera diferença de desempenho em operações coletivas

Estrutura das operações coletivas (Collectives)

  • Há suporte a operações coletivas de alto nível como AllGather, AllReduce (soma), AllToAll (distribuição)
  • Dentro do nó, o NVLink permite conexão direta com desempenho ideal possível (largura de banda teórica); entre nó~nó, passa-se pelo InfiniBand
  • Utilizam-se as bibliotecas NCCL e NVSHMEM da NVIDIA

Análise de desempenho das operações coletivas

  • AllGather/ReduceScatter: implementados em anel (Ring) na B/W (450GB/s no H100), com possibilidade de modo em árvore (Tree) para mensagens pequenas
  • AllToAll: cada GPU envia diretamente para a GPU de destino; como a largura de banda é dividida por N, dentro do nó isso é teoricamente 2x mais rápido
  • Em medições reais, o AllReduce fica em torno de 370GB/s, não atingindo o máximo do hardware
  • Em comparação com a TPU, só em volumes grandes (dezenas de MB ~ GB) é que se aproxima do pico de largura de banda do hardware

Resumo geral e insights

  • A GPU tem como pontos fortes a versatilidade e a escalabilidade, mas, dependendo da estrutura de hardware/rede, a dificuldade de otimização e observabilidade de desempenho é maior do que na TPU
  • O networking (Intra-Node/NVLink/InfiniBand/Leaf/Spine etc.) é central para o desempenho em treinamento em larga escala, e é preciso atenção à diferença entre largura de banda real e teórica
  • Entender as operações coletivas e a estrutura de rede é um elemento essencial em treinamento/serving de modelos distribuídos em escala extrema
  • É necessário um processo baseado em benchmarks reais e na compreensão detalhada da estrutura de hardware para identificar gargalos de desempenho e condições ideais de otimização

Ainda não há comentários.

Ainda não há comentários.