COMRAD404 / GLOSSARY

TPU (Tensor Processing Unit)

Tensor Processing Unit

TPU — специализированный ML ASIC Google для обучения и инференса. Объясняем, как он работает через XLA, где доступен в Google Cloud и какие у него ограничения.

TL;DR

Специализированный ML ASIC Google для обучения и инференса в Compute Engine, GKE и Vertex AI.

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.

  1. Проверяете, что нужная версия TPU доступна в вашей зоне.
  2. Выбираете Compute Engine, GKE или Vertex AI вместо legacy Cloud TPU API.
  3. Сверяете runtime с поколением TPU и, если целитесь в Ironwood (TPU7x), помните, что TensorFlow там не поддерживается.
  4. Переписываете критичный код так, чтобы shapes были максимально стабильными.
  5. Запускаете обучение и не держите 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 и региона.

Источники

Источники

SOURCES

Вопросы и ответы

FAQ
Что такое TPU простыми словами?

TPU — это специализированный ML ASIC Google для вычислений с тензорами. Его берут не для любого кода, а для workloads, которые хорошо компилируются через XLA.

TPU подходит для обучения или только для инференса?

Для обоих сценариев. Google описывает TPU и для training, и для inference; всё упирается в совместимость модели, runtime и региона.

Можно ли использовать TPU через Cloud TPU API?

Как основной путь — нет. Сейчас Google рекомендует Compute Engine или GKE, а legacy Cloud TPU API больше не развивается активно.

Почему TPU плохо работает с динамическими shapes?

Потому что XLA компилирует вычисления и раскладывает их на tiles. Чем стабильнее размеры входов, тем предсказуемее исполнение на TPU.

Как понять, доступен ли нужный TPU в регионе?

Проверьте актуальную страницу TPU regions and zones: доступность зависит от версии, а количество и зоны могут быть ограничены.

Читайте также

LINKS