
Alrededor de 2013 Google hizo el cálculo que asustó a Mountain View: si cada usuario de Android usara el comando de voz de la Búsqueda durante tres minutos al día, en CPU x86, la empresa tendría que duplicar los centros de datos solo para inferencia. La GPU de consumo todavía era una tarjeta gráfica adaptada. La respuesta fue un ASIC dedicado únicamente al álgebra lineal: la TPU (Tensor Processing Unit). Este texto es el mapa del silicio — MXU sistólica, bfloat16, OCS — y de las generaciones hasta la TPU7x Ironwood, disponible de forma general desde el 31 de marzo de 2026. La comparativa GPU vs TPU, lado a lado, está en el post GPU vs TPU.
Por qué un ASIC y no una GPU
La CPU gasta transistores en el predictor de saltos, la caché y el decodificador. La GPU los gasta en SIMT genérico. La TPU dedica el die a una sola cuenta: MAC (multiply-accumulate). Casi todo el servicio de Google — Buscar, Traductor, Fotos, YouTube, Cloud — y el entrenamiento de Transformer, BERT, AlphaFold, PaLM y Gemini ha pasado por ese silicio.
HBM <=> VMEM (SRAM on-die)
│
┌────────┴────────┐
v v
MXU sistólica VPU
(MatMul pura) (softmax, GELU, LayerNorm)
128×128 MACs
(16.384 células)
En las nuevas generaciones entra SparseCore para embedding disperso (anuncios, YouTube, Buscar). v6e e Ironwood usan MXU 256×256.
Arreglo sistólico: el dato no vuelve a la HBM
En un procesador común, cada MAC intermedio lee y escribe en un registro/caché — el memory wall del post de tarjetas gráficas. En MXU:
- Weight-stationary: los pesos de la capa salen de la HBM una vez y se estacionan en la celda.
- Sístole: el vector de entrada entra por la izquierda y avanza una columna por ciclo.
- Acumulación: cada celda multiplica entrada × peso local, suma lo que vino de arriba, empuja hacia abajo.
- Salida: la columna de la matriz resultante se escurre por la base.
El número pulsa de vecino a vecino. La energía se convierte en cómputo, no en tránsito. Es lo opuesto a la caché KV gorda que el MLA de DeepSeek intenta reducir en la GPU.
El efecto secundario aparece en la cuenta de eficiencia: en una matriz 128×128, un dato que entra por el borde participa en 128 multiplicaciones antes de salir, sin tocar memoria alguna. En la CPU, cada una de esas 128 operaciones sería un par load/store. De ahí sale la diferencia de vatio por operación — no de reloj. La TPU nunca ha ganado a la GPU en frecuencia.
bfloat16: el rango del FP32 en la mitad de bits
FP32 gasta ancho de banda. FP16 IEEE reduce el exponente a 5 bits y el entrenamiento de redes grandes revienta (overflow/underflow). Google inventó el 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)
Mitad del tráfico, multiplicador más pequeño, entrenamiento sin malabarismos de loss scaling. NVIDIA, Intel, AMD y ARM lo adoptaron. Hoy es el predeterminado de JAX, PyTorch y de los LLMs.
La clave está en entender lo que la red neuronal realmente necesita. Un gradiente demasiado pequeño se vuelve cero en FP16 y el entrenamiento se atasca; lo que casi nunca importa es el tercer decimal del peso. bfloat16 tira precisión (mantissa) y conserva alcance (exponente) — exactamente en el orden en que la red tolera la pérdida. Ironwood lleva la lógica más lejos con FP8, donde la inferencia acepta aún menos bits.
VPU, SparseCore, ICI y OCS
MatMul densa no es el modelo entero. La VPU hace GELU, ReLU, softmax, LayerNorm/RMSNorm. El SparseCore el embedding disperso es demasiado largo para la MXU: la compatibilidad con embeddings en hardware apareció en la v4, y la documentación de Cloud lista el bloque como SparseCore en la v5p, en la v6e y en el TPU7x.
El superpoder no es el chip: es el Pod.
chip <== ICI (Inter-Chip Interconnect) ==> chip
malha 2D ou 3D torus
OCS: espelhos MEMS desviam o laser
topologia reconfigurável em software
ICI conecta vecinos sin TCP/IP. Torus 3D cierra los bordes. OCS (v4, v5p, Ironwood): en lugar de un conmutador eléctrico que convierte luz↔electrón, un microespejo dirige el haz. Aísla un chip muerto, cambia el particionado (data / tensor / pipeline parallel) en milisegundos.
Merece la pena insistir en el punto del OCS porque es lo que no tiene equivalente al otro lado: en un clúster de GPU, cambiar la topología significa recablear el rack. En el pod, es una orden al espejo. Un chip que falla en mitad de un entrenamiento de semanas no derriba el job: el pod se reconfigura alrededor del hueco.
Generaciones (cifras oficiales de Cloud TPU, 2026)
| Generación | Año | Foco | Chip/pico | HBM | Pod |
|---|---|---|---|---|---|
| v1 | 2015 | solo inferencia INT8 | ~92 TOPS | 8 GB DDR3 | PCIe independiente |
| v2 | 2017 | entrenamiento + inferencia, 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 | coste/vatio | 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) | dos chiplets, FP8 | 2.307 BF16 / 4.614 FP8 | 192 GB, 7.380 GB/s | 9.216 chips |
Ironwood es el primer TPU pensado con la inferencia en el centro: 2 TensorCores, 4 SparseCores por chip, ICI de 1.200 GB/s bidireccional. Un superpod de 9.216 chips alcanza 42,5 EFLOPS en FP8. Fue anunciado el 9 de abril de 2025, entró en preview en Cloud el 24 de noviembre de 2025 y llegó a la disponibilidad general el 31 de marzo de 2026. En la nube hay un único corte de VM, la tpu7x-standard-4t: 4 chips, 768 GiB de HBM, 224 vCPUs y 960 GB de RAM en el host. La v6e sigue siendo la mejor relación coste/beneficio para Gemma, Llama y difusión.
Ya se ha anunciado la octava generación
En 22 de abril de 2026, en Cloud Next ’26, Google presentó la siguiente generación — y, por primera vez, dividida en dos piezas con propósitos separados:
- TPU 8t, para entrenamiento. Usa una nueva generación de ICI para escalar hasta 9.600 chips e 2 PB de memoria de alto ancho de banda compartida en un único superpod. Google habla de 3× el poder de procesamiento del Ironwood y hasta 2× más rendimiento por vatio.
- TPU 8i, para inferencia. Estrena la topología Boardfly, que conecta directamente 1.152 chips en un pod, y aporta 3× más SRAM en el chip — lo suficiente para mantener cachés KV completas en el silicio, sin ir a la HBM — además de un motor dedicado de colectivas. La promesa es un 80% más rendimiento por dólar en inferencia que la generación anterior.
Fíjese en lo que el 8i revela: el cuello de botella que persigue ahora toda la industria es la caché KV, el mismo que DeepSeek atacó por software con MLA. Uno lo resuelve con arquitectura de modelo, el otro con SRAM. Hasta el cierre de este texto, las dos aún no aparecían en las release notes de Cloud TPU: anuncio no es disponibilidad.
Software: XLA y JAX
Sin compilador, el ASIC es un ladrillo. El XLA (Accelerated Linear Algebra) lee el grafo, fusiona ops en un único kernel, asigna VMEM y programa la sístole. El JAX es el lenguaje de DeepMind: Python → XLA, con pmap e shard_map. PyTorch/XLA cubre a quien ya tiene el modelo en PyTorch.
Hay un detalle que pilla a todo el mundo la primera vez: XLA compila para forma fija. Si cambia el shape del tensor, recompila, y la recompilación cuesta segundos. Código que en la GPU acepta batch variable sin quejarse, en la TPU se convierte en un bucle de recompilaciones que se come toda la ganancia. La regla práctica es padding a un puñado de tamaños fijos.
Echando el guante a una TPU
No se puede comprar una TPU y atornillarla al gabinete: solo existen dentro de Google. Lo que sí se puede es alquilarla, y hay un camino gratuito.
La forma gratuita: Google Colab e Kaggle Notebooks ofrecen runtime de TPU en el plan gratuito (la generación ofertada varía con el tiempo). En Colab es Entorno de ejecución → Cambiar tipo de entorno → TPU. Sirve para probar la bestia sin tarjeta de crédito.
La forma de verdad, una TPU VM en 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 de la VM, instala JAX con el extra de TPU y confirma que el runtime reconoció el silicio:
pip install -U "jax[tpu]"
python3 -c "import jax; print(jax.devices()); print(jax.device_count())"
# [TpuDevice(id=0, ...), ...] 8
Un MatMul grande en bfloat16, que es literalmente el trabajo de la 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)
Dos advertencias sobre la zona y la generación. La v6e no existe en todas las regiones: la documentación lista us-central1-b, us-east1-d, us-east5-a, us-east5-b, europe-west4-a, asia-northeast1-b e — lo que interesa a quien está en Brasil — southamerica-west1-a, en Santiago. Pedir la zona equivocada hace que el create falle. Y el flujo tpu-vm anterior vale para las generaciones hasta la v6e; el TPU7x se aprovisiona como instancia de Compute Engine, con otro comando.
O block_until_ready() no es decoración: JAX es asíncrono y, sin él, cronometras el envío, no el cálculo. Quien ya tiene modelo en PyTorch usa el PyTorch/XLA:
pip install torch torch_xla[tpu]
python3 -c "import torch_xla; print(torch_xla.device())"
Y el aviso más importante del post: La TPU parada se sigue cobrando. Terminaste la prueba, destrúyela:
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
Y Linux en todo esto
Toda TPU VM es una máquina Linux. Recibes un Debian con los chips conectados al bus, y el acceso es el de siempre: SSH, systemd, apt, pip. Dentro de ella:
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())"
La capa propietaria es el libtpu, la biblioteca de runtime que XLA carga para hablar con el chip: viene incluida en jax[tpu] y no es de código abierto. La capa superior, en cambio, es totalmente libre: JAX e OpenXLA bajo Apache 2.0, y el PyTorch/XLA bajo BSD 3-Clause.
En cambio, la única TPU que se podía tener sobre la mesa, la Coral Edge TPU, aquel pendrive de US$ 60 que ejecutaba MobileNet cuantizado en INT8 y se volvió una fiebre en Frigate y en proyectos de Raspberry Pi — se acabó. El repositorio google-coral/edgetpu fue archivado en abril de 2026, las bibliotecas se quedaron en TensorFlow 2.16 y el driver gasket de las versiones PCIe ya no compila en kernels recientes sin parches. Si tienes uno funcionando, genial; comprar en 2026 es comprar deuda técnica. No hubo anuncio formal de fin de vida — la web simplemente cambió de tema: coral.ai hoy redirige a una plataforma nueva, la CoralNPU, una NPU de arquitectura RISC-V abierta con toolchain basado en MLIR, que promete recibir modelos de PyTorch, JAX o LiteRT. Los repositorios cuentan la misma historia: todo el ecosistema Edge TPU está archivado, y los únicos con commit reciente son coralnpu e coralnpu-compiler. El Edge TPU se acabó; la marca Coral, no. Para inferencia local hoy el camino es GPU con Ollama, llama.cpp o una NPU integrada al procesador.
En el Linux de casa, por lo tanto, la TPU no aparece. La GPU local sigue siendo CUDA/ROCm — el post del servidor reacondicionado es el otro lado de la valla.
Lo que nació en ese silicio
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 la pena deshacer un mito que este blog ayudó a repetir: el Transformer no nació en una TPU. El artículo de 2017 es explícito: el modelo base se entrenó en una sola máquina con ocho GPUs NVIDIA P100. Lo que hizo la TPU fue viabilizar todo lo que vino después, cuando el mismo diseño necesitó escala.
BERT ya es historia de la TPU: 16 chips de Cloud TPU para el Base, 64 para el Large; el artículo no nombra la generación. AlphaFold 2, publicado en Nature en 2021 (CASP14 fue en 2020), entrenó en 128 núcleos de TPU v3 y resolvió el problema del plegamiento de proteínas. PaLM mostró 540 B en dos pods v4 geográficamente conectados por Pathways. Y Gemini solo abre la ventana de un millón de tokens porque HBM3 + OCS parten el tensor sin que el bus se convierta en un cuello de botella — el mismo problema que el MLA de DeepSeek ataca en la caché, al otro lado de la industria.
Quién está comprando TPU en 2026
Durante una década la TPU fue silicio de uso interno con una punta alquilada en Cloud. Eso cambió. En 23 de octubre de 2025, Google y Anthropic anunciaron un acuerdo de decenas de miles de millones de dólares que da a Anthropic acceso a hasta un millón de TPUs — el techo de toda la expansión contratada en Google Cloud — y, en palabras del anuncio, a “mucho más de un gigavatio” de capacidad en 2026. Meses después, con Broadcom de por medio, ambas empresas ampliaron el contrato a varios gigavatios adicionales a partir de 2027.
El detalle que interesa aquí es estratégico: Anthropic ejecuta la familia Claude sobre tres silicios distintos — TPU de Google, Trainium de AWS y GPU NVIDIA: distribuyendo cada tipo de carga donde resulta más barata. Es la demostración práctica de que el duopolio de CUDA ya no es el único camino para entrenar modelos de frontera, y de que la TPU ha dejado de ser una curiosidad de Mountain View para convertirse en un producto que compran los competidores.
Línea de tiempo
- 2013 — la cuenta del comando de voz muestra que la inferencia en x86 exigiría duplicar los centros de datos.
- 2015 — la TPU v1 entra en producción interna, solo inferencia INT8.
- 18/05/2016 — Google revela públicamente la existencia de la TPU, en la jornada de apertura del Google I/O.
- 2017 — la v2 incorpora entrenamiento y bfloat16; se publica el artículo In-Datacenter Performance Analysis; el Transformer nace en pods v2.
- 2018 — la v3 con refrigeración líquida y un pod de 1.024 chips; BERT.
- 2020 — AlphaFold 2 resuelve el plegamiento de proteínas en pods v3.
- 2021 — la v4 estrena el OCS y el torus 3D; un pod de 4.096 chips supera los 1 EFLOPS.
- 2022 — PaLM 540 B se entrena en dos pods v4 conectados mediante Pathways.
- 2023 — v5e (coste/vatio) y v5p (LLM); Gemini 1.0.
- 2024 — v6e Trillium, MXU 256×256 y 918 TFLOPS BF16 por chip.
- out/2025 — Anthropic cierra el acceso a hasta 1 millones de TPUs y 1 GW de capacidad.
- 09/04/2025 — TPU7x Ironwood es anunciado: 4.614 TFLOPS FP8, 192 GB de HBM3E, superpod de 9.216 chips y 42,5 EFLOPS por pod.
- 24/11/2025 — el TPU7x entra en preview en Google Cloud.
- 31/03/2026 — Ironwood llega a la disponibilidad general.
- 19/04/2026 — el repositorio
google-coral/edgetpuse archiva, cerrando el ciclo del Edge TPU (el desmontaje había comenzado en julio de 2025, con elpycoral). - 22/04/2026 — en Cloud Next ’26 Google anuncia la octava generación, TPU 8t y TPU 8i.
Referencias
- TPU7x (Ironwood) — especificaciones oficiales
- TPU v6e (Trillium)
- Cloud TPU: notas de la versión (fechas de preview y GA)
- Cloud TPU: regiones y zonas
- CoralNPU — la NPU RISC-V que sustituyó al Edge TPU
- Ejecutar un cálculo en una Cloud TPU VM con JAX
- In-Datacenter Performance Analysis of a Tensor Processing Unit (v1, Jouppi et al.)
- Anthropic: expansión de la asociación con Google y Broadcom
- google-coral/edgetpu (archivado en abril de 2026)
- GPU vs TPU: cómo funcionan los chips de IA
- Cómo DeepSeek reescribió el Transformer
- Cómo funcionan las tarjetas de vídeo
- ¿Qué es una red neuronal?
Mientras el mercado disputa por la H100 y Blackwell, Google cosecha una década de ASIC, formato numérico propio, láser en el pod y compilador. La TPU no es la “GPU de Google”. Es la prueba de que, en entrenamiento e inferencia de tensores, especializar el silicio aún le gana a la fuerza bruta genérica — y, ahora que la competencia alquila el pod por gigavatio, es también la prueba de que se puede vender esa apuesta.