TPU (Tensor Processing Unit) — это специализированный ASIC Google для ML/AI workloads. В актуальной документации Google Cloud TPU доступны через Compute Engine, GKE и Vertex AI; legacy Cloud TPU API больше не развивается активно.
Английский термин: Tensor Processing Unit. Также встречается: TPU, TPU accelerator, TPU VM; по-русски иногда говорят «тензорный процессор», но в практике чаще оставляют аббревиатуру TPU.
Простыми словами
Грубо говоря, TPU — это не «ещё один сервер», а специализированная фабрика для операций с тензорами. Можно представить как конвейер, который заточен под большие матричные умножения и соседние операции, а не под любой произвольный код.
Если вы знакомы с CPU и GPU, можно грубо представить TPU как узкоспециализированный инструмент: он не пытается обслужить весь серверный стек, а выигрывает, когда считает однотипные тензорные операции снова и снова. Поэтому TPU имеет смысл не там, где нужен любой Python-код, а там, где модель и данные можно упорядочить под компилятор.
Как это работает
Google описывает TPU как custom-developed ASIC для ML/AI workloads, с on-chip high-bandwidth memory и оптимизацией под фреймворки вроде JAX и PyTorch. На практике путь выглядит так:
Модель в JAX / PyTorch → XLA компилирует и раскладывает вычисления на tiles → TPU VM / GKE / Vertex AI → тензорные операции на TPU → результат возвращается в ваш пайплайн
Именно здесь важны ограничения: XLA делает компиляцию и tiling, а dynamic shapes для TPU подходят плохо. Иначе говоря, TPU любит предсказуемый граф и повторяемые размеры батчей.
On-chip high-bandwidth memory важна потому, что промежуточные тензоры и данные остаются ближе к вычислительным блокам. Это не отменяет работу с памятью и сетью, но снижает цену лишних перемещений данных внутри ускорителя.
Где применяется
- Обучение больших моделей на Google Cloud через Compute Engine, GKE или Vertex AI.
- Инференс, когда вам нужен выделенный ML-ускоритель и вы готовы подстроить код под XLA.
- JAX-пайплайны со стабильными shapes и предсказуемым графом.
- PyTorch-сценарии через PyTorch/XLA.
По текущему overview Google в поддержке перечислены TPU7x (Ironwood), TPU v6e (Trillium) и TPU v5p. Но доступ всегда version-specific: перед запуском проверьте зону, квоту и актуальную емкость. Для высоких chip/core counts в документации отдельно отмечены ограничения по количеству.
Практический пример
Сценарий: вы переносите тренировку с обычной VM на TPU VM.
- Проверяете, что нужная версия TPU доступна в вашей зоне.
- Выбираете Compute Engine, GKE или Vertex AI вместо legacy Cloud TPU API.
- Сверяете runtime с поколением TPU и, если целитесь в Ironwood (TPU7x), помните, что TensorFlow там не поддерживается.
- Переписываете критичный код так, чтобы shapes были максимально стабильными.
- Запускаете обучение и не держите TPU в простое: биллинг идет за chip-hour и начисляется, пока node находится в READY.
import jax
import jax.numpy as jnp
@jax.jit
def train_step(params, batch):
# XLA compiles this function for TPU execution
logits = model_apply(params, batch['x'])
loss = loss_fn(logits, batch['y'])
return loss
# Keep batch shapes stable between steps when possible.
loss = train_step(params, batch)
Смысл примера не в синтаксисе JAX, а в том, что TPU хорошо работает, когда вы даёте компилятору устойчивый и повторяемый workload. Для PyTorch логика та же, но через PyTorch/XLA.
Чем отличается от…
Практическое сравнение ниже — это ориентир для выбора, а не цитата из документации Google Cloud.
| Термин | Суть | Когда чаще выбирают |
|---|---|---|
| TPU | Специализированный ML ASIC Google | Когда код компилируется через XLA, shapes стабильны, а вы работаете в экосистеме Google Cloud |
| GPU | Более универсальный ускоритель для ML и других параллельных задач | Когда важна гибкость фреймворков и меньше ограничений на граф |
| CPU | Процессор общего назначения | Для preprocessing, orchestration и задач, где ускоритель не нужен |
Если вам нужен прикладной разбор выбора ускорителя, держите под рукой материал GPU / TPU в обучении ИИ.
Ограничения и заблуждения
- Заблуждение: TPU — это замена любому ML-стеку. На практике: TPU лучше всего работает там, где есть XLA, повторяемые формы данных и совместимый runtime.
- Заблуждение: Cloud TPU API — основной способ работы. На практике: Google рекомендует Compute Engine или GKE; legacy API больше не развивается активно.
- Заблуждение: если TPU «есть в документации», он доступен везде. На практике: регионы и зоны зависят от версии, а более высокие chip/core counts могут быть ограничены по количеству.
- Заблуждение: один runtime подходит ко всем поколениям. На практике: версия runtime привязана к поколению TPU: v6e использует v2-alpha-tpuv6e, v5p — v2-alpha-tpuv5, v5e — v2-alpha-tpuv5-lite, а v4 и старше — tpu-ubuntu2204-base.
- Ограничение: для Ironwood (TPU7x) TensorFlow не поддерживается согласно текущим runtime-докам.
Практический вердикт: TPU стоит выбирать, если вы готовы проектировать код и инфраструктуру под XLA, проверять зону, квоту и runtime, и жить в поддерживаемых поколениях. Если вам важнее максимальная гибкость и минимум специфической настройки, TPU может оказаться слишком узким инструментом.
Связанные термины
Вопросы и ответы
TPU подходит только для обучения?
Нет. В документации Google TPU описан и для training, и для inference. Выбор зависит от того, насколько ваш workload совместим с XLA и текущим runtime.
Можно ли работать с TPU через Cloud TPU API?
Как основной путь — нет. Google указывает, что legacy Cloud TPU API больше не развивается активно и рекомендует Compute Engine или GKE.
Нужен ли JAX?
Не обязательно, но Google отдельно упоминает оптимизацию под JAX и PyTorch. Для Ironwood важно ещё и то, что TensorFlow там не поддерживается.
Почему TPU не любит dynamic shapes?
Потому что XLA компилирует и раскладывает вычисления на tiles. Чем стабильнее размеры входов, тем проще компилятору и тем предсказуемее исполнение.
Как не переплатить?
Следите за тем, чтобы TPU не простаивал в READY, и заранее проверяйте pricing, регион и модель размещения. В Google Cloud цены зависят от продукта, deployment model и региона.
Источники
- All Capacity mode overview | Cloud TPU | Google Cloud Documentation
- Plan your Cloud TPU resources | Google Cloud Documentation
- About TPUs on Google Cloud | Compute Engine | Google Cloud Documentation
- TPU architecture | Google Cloud Documentation
- Introduction to Cloud TPU | Google Cloud Documentation
- TPU7x (Ironwood) | Google Cloud Documentation
- TPU regions and zones | Google Cloud Documentation
- TPU Pricing | Google Cloud
- TPU software versions | Google Cloud Documentation
- Cloud TPU release notes | Google Cloud Documentation
- In-Datacenter Performance Analysis of a Tensor Processing Unit
- GitHub – openxla/xla: A machine learning compiler for GPUs, CPUs, and ML accelerators
- GitHub – pytorch/xla: Enabling PyTorch on XLA Devices (e.g. Google TPU)