Google TPUs: arquitetura, gerações e modelos

Mascote do LinuxPro apontando para pod TPU

Por volta de 2013 o Google fez a conta que assustou Mountain View: se cada usuário Android usasse o comando de voz da Busca por três minutos ao dia, em CPU x86, a empresa teria de dobrar os data centers só para inferência. GPU de consumo ainda era placa de jogo adaptada. A resposta foi um ASIC só de álgebra linear: a TPU (Tensor Processing Unit). Este texto é o mapa do silício — MXU sistólica, bfloat16, OCS — e das gerações até o TPU7x Ironwood, em disponibilidade geral desde 31 de março de 2026. O recorte GPU vs TPU, lado a lado, está no post GPU vs TPU.

Por que um ASIC, não uma GPU

CPU gasta transistor com preditor de desvio, cache e decodificador. GPU gasta com SIMT genérico. A TPU dedica o die a uma conta: MAC (multiply-accumulate). Quase todo o serviço do Google — Busca, Tradutor, Fotos, YouTube, Cloud — e o treino de Transformer, BERT, AlphaFold, PaLM e Gemini passou por esse silício.

HBM  <=>  VMEM (SRAM on-die)
              │
     ┌────────┴────────┐
     v                 v
  MXU sistólica     VPU
  (MatMul pura)     (softmax, GELU, LayerNorm)
  128×128 MACs
  (16.384 células)

Nas gerações novas o SparseCore entra para embedding esparso (anúncio, YouTube, Busca). v6e e Ironwood usam MXU 256×256.

Arranjo sistólico: o dado não volta para a HBM

Num processador comum, cada MAC intermediário lê e grava registrador/cache — o memory wall do post das placas de vídeo. Na MXU:

  1. Weight-stationary: os pesos da camada saem da HBM uma vez e estacionam na célula.
  2. Sístole: o vetor de entrada entra pela esquerda e anda uma coluna por ciclo.
  3. Acúmulo: cada célula multiplica entrada × peso local, soma o que veio de cima, empurra para baixo.
  4. Saída: a coluna da matriz resultante escorre pela base.

O número pulsa de vizinho para vizinho. Energia vira conta, não trânsito. É o oposto do KV cache gordo que o MLA da DeepSeek tenta encolher na GPU.

O efeito colateral aparece na conta de eficiência: numa matriz 128×128, um dado que entra pela borda participa de 128 multiplicações antes de sair, sem tocar em memória nenhuma. Na CPU, cada uma dessas 128 operações seria um par load/store. É daí que sai a diferença de watt por operação — não de clock. A TPU nunca ganhou de GPU em frequência.

bfloat16: a faixa do FP32 na metade dos bits

FP32 gasta banda. FP16 IEEE corta o expoente para 5 bits e o treino de rede grande estoura (overflow/underflow). O Google inventou o bfloat16:

FP32      1 sinal | 8 expoente | 23 mantissa
FP16      1 sinal | 5 expoente | 10 mantissa   (faixa estreita)
bfloat16  1 sinal | 8 expoente |  7 mantissa   (mesma faixa do FP32)

Metade do tráfego, multiplicador menor, treino sem malabarismo de loss scaling. NVIDIA, Intel, AMD e ARM adotaram. Hoje é o default de JAX, PyTorch e dos LLMs.

A sacada é entender o que a rede neural realmente precisa. Gradiente pequeno demais vira zero em FP16 e o treino trava; o que quase nunca importa é o terceiro decimal do peso. O bfloat16 joga fora precisão (mantissa) e preserva alcance (expoente) — exatamente na ordem em que a rede tolera a perda. Ironwood leva a lógica adiante com FP8, onde a inferência aceita ainda menos bits.

VPU, SparseCore, ICI e OCS

MatMul densa não é o modelo inteiro. A VPU faz GELU, ReLU, softmax, LayerNorm/RMSNorm. O SparseCore trata embedding esparso largo demais para a MXU — o suporte a embeddings em hardware apareceu na v4, e a documentação do Cloud lista o bloco como SparseCore na v5p, na v6e e no TPU7x.

O superpoder não é o chip: é o Pod.

chip <== ICI (Inter-Chip Interconnect) ==> chip
         malha 2D ou 3D torus
         OCS: espelhos MEMS desviam o laser
              topologia reconfigurável em software

ICI liga vizinhos sem TCP/IP. Torus 3D fecha as bordas. OCS (v4, v5p, Ironwood): em vez de switch elétrico que converte luz↔elétron, um microespelho aponta o feixe. Isola chip morto, muda o recorte (data / tensor / pipeline parallel) em milissegundos.

Vale insistir no ponto do OCS porque ele é o que não tem equivalente do outro lado: num cluster de GPU, trocar a topologia significa recabear rack. No pod, é uma ordem para o espelho. Um chip que falha no meio de um treino de semanas não derruba o job — o pod se reconfigura em volta do buraco.

Gerações (números oficiais do Cloud TPU, 2026)

Geração Ano Foco Pico/chip HBM Pod
v1 2015 só inferência INT8 ~92 TOPS 8 GB DDR3 PCIe avulso
v2 2017 treino + inferência, BF16 45 TFLOPS 16 GB HBM 256 chips (11,5 PFLOPS)
v3 2018 líquido, escala ~123 TFLOPS 32 GB HBM2 1.024 chips
v4 2021 OCS, torus 3D 275 TFLOPS 32 GB HBM2 4.096 (1,1 EFLOPS)
v5e 2023 custo/watt 197 TFLOPS BF16 16 GB HBM2e 256 chips
v5p 2023 LLM (Gemini) 459 TFLOPS BF16 95 GB HBM3 8.960 chips
v6e Trillium 2024 MXU 256×256 918 TFLOPS BF16 32 GB, 1.638 GB/s 256 chips
TPU7x Ironwood 2025 (GA 2026) dois chiplets, FP8 2.307 BF16 / 4.614 FP8 192 GB, 7.380 GB/s 9.216 chips

Ironwood é o primeiro TPU pensado com inferência no centro: 2 TensorCores, 4 SparseCores por chip, ICI de 1.200 GB/s bidirecional. Um superpod de 9.216 chips chega a 42,5 EFLOPS em FP8. Foi anunciado em 9 de abril de 2025, entrou em preview no Cloud em 24 de novembro de 2025 e chegou à disponibilidade geral em 31 de março de 2026. No Cloud há um único recorte de VM, a tpu7x-standard-4t: 4 chips, 768 GiB de HBM, 224 vCPUs e 960 GB de RAM no host. A v6e continua sendo o custo/benefício para Gemma, Llama e difusão.

A oitava geração já foi anunciada

Under 22 de abril de 2026, no Cloud Next ’26, o Google apresentou a geração seguinte — e, pela primeira vez, dividida em duas peças com propósitos separados:

  • TPU 8t, para treino. Usa uma nova geração de ICI para escalar até 9.600 chips and 2 PB de memória de alta banda compartilhada num único superpod. O Google fala em 3× o poder de processamento do Ironwood e até 2× mais desempenho por watt.
  • TPU 8i, para inferência. Estreia a topologia Boardfly, que conecta diretamente 1.152 chips num pod, e traz 3× mais SRAM no chip — o suficiente para manter KV caches inteiros no silício, sem ida à HBM — mais um motor dedicado de coletivas. A promessa é 80% mais desempenho por dólar em inferência que a geração anterior.

Repare no que o 8i denuncia: o gargalo que a indústria inteira persegue agora é o KV cache, o mesmo que a DeepSeek atacou por software com o MLA. Um resolve com arquitetura de modelo, o outro com SRAM. Até o fechamento deste texto as duas ainda não apareciam nas release notes do Cloud TPU — anúncio não é disponibilidade.

Software: XLA e JAX

Sem compilador o ASIC é um tijolo. O XLA (Accelerated Linear Algebra) lê o grafo, funde ops num kernel só, aloca VMEM e programa a sístole. O JAX é a linguagem da DeepMind: Python → XLA, com pmap and shard_map. PyTorch/XLA cobre quem já tem o modelo em PyTorch.

Tem um detalhe que pega todo mundo na primeira vez: o XLA compila para forma fixa. Mudou o shape do tensor, recompila — e a recompilação custa segundos. Código que na GPU aceita batch variável sem reclamar, na TPU vira um loop de recompilações que come o ganho inteiro. A regra prática é padding para um punhado de tamanhos fixos.

Colocando a mão numa TPU

Não dá para comprar uma TPU e parafusar no gabinete: elas só existem dentro do Google. O que dá é alugar — e há caminho gratuito.

O jeito de graça: Google Colab and Kaggle Notebooks oferecem runtime de TPU no plano gratuito (a geração ofertada muda ao longo do tempo). No Colab é Ambiente de execução → Alterar o tipo → TPU. Serve para sentir o bicho sem cartão de crédito.

O jeito de verdade, uma TPU VM no Google Cloud:

# cria a VM com 8 chips v6e
gcloud compute tpus tpu-vm create tpu-teste 
  --zone=us-central1-b 
  --accelerator-type=v6e-8 
  --version=v2-alpha-tpuv6e

# entra nela (é uma VM Linux comum)
gcloud compute tpus tpu-vm ssh tpu-teste --zone=us-central1-b

Dentro da VM, instale o JAX com o extra de TPU e confirme que o runtime enxergou o silício:

pip install -U "jax[tpu]"

python3 -c "import jax; print(jax.devices()); print(jax.device_count())"
# [TpuDevice(id=0, ...), ...]   8

Um MatMul grande em bfloat16, que é literalmente o trabalho da MXU:

import jax, jax.numpy as jnp

x = jnp.ones((8192, 8192), dtype=jnp.bfloat16)
mm = jax.jit(lambda a: a @ a.T)
y = mm(x).block_until_ready()

print(y.shape, y.dtype)
print(jax.devices()[0].device_kind)

Duas ressalvas sobre a zona e a geração. A v6e não existe em toda região: a documentação lista us-central1-b, us-east1-d, us-east5-a, us-east5-b, europe-west4-a, asia-northeast1-b e — o que interessa a quem está no Brasil — southamerica-west1-a, em Santiago. Pedir a zona errada faz o create falhar. E o fluxo tpu-vm acima vale para as gerações até a v6e; o TPU7x é provisionado como instância do Compute Engine, com outro comando.

The block_until_ready() não é decoração: JAX é assíncrono e, sem ele, você cronometra o despacho, não a conta. Quem já tem modelo em PyTorch usa o PyTorch/XLA:

pip install torch torch_xla[tpu]
python3 -c "import torch_xla; print(torch_xla.device())"

E o aviso mais importante do post: TPU parada continua sendo cobrada. Terminou o teste, destrua:

gcloud compute tpus tpu-vm delete tpu-teste --zone=us-central1-b
gcloud compute tpus tpu-vm list --zone=us-central1-b   # confira que não sobrou nada

E o Linux nisso

Toda TPU VM é uma máquina Linux. Você recebe um Debian com os chips pendurados no barramento, e o acesso é o de sempre: SSH, systemd, apt, pip. Dentro dela:

lspci | grep -i google    # os aceleradores no barramento
ls /dev/accel* 2>/dev/null; ls /dev/vfio/ 2>/dev/null   # o nó de dispositivo muda por geração
python3 -c "import jax; print(jax.local_device_count())"

A camada proprietária é o libtpu, a biblioteca de runtime que o XLA carrega para falar com o chip — ela vem junto no jax[tpu] e não tem código aberto. O andar de cima, por outro lado, é todo livre: JAX and OpenXLA sob Apache 2.0, e o PyTorch/XLA sob BSD 3-Clause.

Já a única TPU que dava para ter na mesa — o Coral Edge TPU, aquele pendrive de US$ 60 que rodava MobileNet quantizado em INT8 e virou febre no Frigate e em projetos de Raspberry Pi — acabou. O repositório google-coral/edgetpu foi arquivado em abril de 2026, as bibliotecas pararam no TensorFlow 2.16 e o driver gasket das versões PCIe não compila mais em kernel recente sem remendo. Se você tem um funcionando, ótimo; comprar em 2026 é comprar dívida técnica. Não houve anúncio formal de fim de vida — o site simplesmente mudou de assunto: coral.ai hoje redireciona para uma plataforma nova, a CoralNPU, uma NPU de arquitetura RISC-V aberta com toolchain baseado em MLIR, que promete receber modelos de PyTorch, JAX ou LiteRT. Os repositórios contam a mesma história: todo o ecossistema Edge TPU está arquivado, e os únicos com commit recente são coralnpu and coralnpu-compiler. O Edge TPU acabou; a marca Coral, não. Para inferência local hoje o caminho é GPU com Ollama, llama.cpp ou uma NPU integrada ao processador.

No Linux de casa, portanto, a TPU não aparece. GPU local continua CUDA/ROCm — o post do servidor recondicionado é o outro lado da cerca.

O que nasceu nesse silício

2017  Transformer     ("Attention Is All You Need") — 8 GPUs NVIDIA P100
2018  BERT            16 chips de Cloud TPU (Base) / 64 chips (Large)
2021  AlphaFold 2     128 cores de TPU v3
2022  PaLM 540 B      dois pods v4, via Pathways
2023– Gemini          v4 e v5p; contexto de 1 a 2 M de tokens

Vale desfazer um mito que este blog ajudou a repetir: o Transformer não nasceu em TPU. O paper de 2017 é explícito — o modelo base foi treinado numa única máquina com oito GPUs NVIDIA P100. O que a TPU fez foi viabilizar tudo o que veio depois, quando o mesmo desenho precisou de escala.

O BERT já é história de TPU: 16 chips de Cloud TPU para o Base, 64 para o Large — o paper não nomeia a geração. AlphaFold 2, publicado na Nature em 2021 (o CASP14 foi em 2020), treinou em 128 cores de TPU v3 e fechou o problema do enovelamento de proteínas. PaLM mostrou 540 B em dois pods v4 geograficamente ligados por Pathways. E o Gemini só abre janela de milhão de tokens porque HBM3 + OCS partem o tensor sem o barramento virar fila — o mesmo problema que o MLA da DeepSeek ataca no cache, do outro lado da indústria.

Quem está comprando TPU em 2026

Durante uma década a TPU foi silício de uso interno com uma ponta alugada no Cloud. Isso mudou. Em 23 de outubro de 2025, Google e Anthropic anunciaram um acordo de dezenas de bilhões de dólares que dá à Anthropic acesso a até um milhão de TPUs — o teto de toda a expansão contratada no Google Cloud — e, nas palavras do anúncio, a “bem mais de um gigawatt” de capacidade em 2026. Meses depois, com a Broadcom no meio, as duas empresas estenderam o contrato para múltiplos gigawatts adicionais a partir de 2027.

O detalhe que interessa aqui é estratégico: a Anthropic roda a família Claude em três silícios diferentes — TPU do Google, Trainium da AWS e GPU NVIDIA — distribuindo cada tipo de carga onde ela sai mais barata. É a prova prática de que o duopólio CUDA já não é o único caminho para treinar modelo de fronteira, e de que a TPU deixou de ser curiosidade de Mountain View para virar produto que concorrente compra.

Timeline

  • 2013 — a conta do comando de voz mostra que inferência em x86 exigiria dobrar os data centers.
  • 2015 — TPU v1 entra em produção interna, só inferência INT8.
  • 18/05/2016 — o Google revela publicamente a existência da TPU, no dia de abertura do Google I/O.
  • 2017 — v2 traz treino e bfloat16; sai o paper In-Datacenter Performance Analysis; o Transformer nasce em pods v2.
  • 2018 — v3 com refrigeração líquida e pod de 1.024 chips; BERT.
  • 2020 — AlphaFold 2 resolve o enovelamento de proteínas em pods v3.
  • 2021 — v4 estreia o OCS e o torus 3D; pod de 4.096 chips passa de 1 EFLOPS.
  • 2022 — PaLM 540 B treina em dois pods v4 ligados por Pathways.
  • 2023 — v5e (custo/watt) e v5p (LLM); Gemini 1.0.
  • 2024 — v6e Trillium, MXU 256×256 e 918 TFLOPS BF16 por chip.
  • out/2025 — Anthropic fecha acesso a até 1 milhão de TPUs e 1 GW de capacidade.
  • 09/04/2025 — TPU7x Ironwood é anunciado: 4.614 TFLOPS FP8, 192 GB de HBM3E, superpod de 9.216 chips e 42,5 EFLOPS por pod.
  • 24/11/2025 — o TPU7x entra em preview no Google Cloud.
  • 31/03/2026 — Ironwood chega à disponibilidade geral.
  • 19/04/2026 — o repositório google-coral/edgetpu é arquivado, encerrando o ciclo do Edge TPU (o desmonte havia começado em julho de 2025, com o pycoral).
  • 22/04/2026 — no Cloud Next ’26 o Google anuncia a oitava geração, TPU 8t e TPU 8i.

References

Enquanto o mercado disputa H100 e Blackwell, o Google colhe uma década de ASIC, formato numérico próprio, laser no pod e compilador. A TPU não é “GPU do Google”. É a prova de que, em treino e inferência de tensor, especializar o silício ainda ganha da força bruta genérica — e, agora que a concorrência aluga o pod por gigawatt, é também a prova de que dá para vender essa aposta.