Google відкрила вихідний код TorchTPU — нативного бекенду PyTorch для Cloud TPU
Google відкрила вихідний код TorchTPU — нативного бекенду PyTorch для Cloud TPU. Його було спільно розроблено з командою PyTorch у Meta та представлено на PyTorch Conference 2026 20 жовтня 2026 року. Наявний код PyTorch звертається до TPU через стандартний torch.device("tpu"). Тепер TPU є нативним пристроєм PyTorch поряд із GPU та CPU. Команда Google зазначає, що TorchTPU замінює PyTorch/XLA і рекомендує його для всіх нових робочих навантажень.
Коротко
- Розмір: програмний стек, а не модель. 4 відкриті репозиторії: TorchTPU, vLLM-TorchTPU, SGLang-TorchTPU, TorchTitan. TorchTPU — це версія 0.2.0 на PyPI, Python 3.11+, Apache 2.0.
- Працює на: Google Cloud TPU. Протестовано на поколіннях від v5e, масштабовано до 8 192 чипів Ironwood (TPU7x). Обслуговування підтримує контрольні точки FP8, MXFP4 і NVFP4.
- Продуктивність: Eager-режим для налагодження,
torch.compileдля пропускної здатності виробничого рівня. - Найкращий результат: 52% MFU під час навчання Qwen 3 8B за допомогою TorchTitan на Ironwood (за власними даними).
- Найгірший результат: готовий до використання eager-режим займав 11,49 с на крок у сценарії донавчання проти 2,78 с після повного налаштування.
Що таке TorchTPU?
TorchTPU — це відкритий бекенд PyTorch від Google і Meta, який нативно запускає моделі PyTorch на TPU. Він підключається через інтерфейс PrivateUse1 PyTorch. Тензори є звичайними тензорами PyTorch, без підкласів або обгорток. Він запускає один процес на пристрій і зберігає подання тензорів та мутації на місці.
Попередник, PyTorch/XLA, записував графи лінивих тензорів. Розробники часто додавали код для позначення ділянок, придатних до компіляції. PyTorch/XLA також підтримував лише чистий код SPMD. TorchTPU також обробляє дивергентне виконання MPMD.
Як TorchTPU виконує код PyTorch?
TorchTPU постачається з 3 eager-режимами:
- Строгий (типовий): асинхронно розподіляє кожен оператор зі стандартною семантикою PyTorch.
- Налагодження: працює синхронно з перевіркою меж тензорів.
- DeferAndFuse: об’єднує послідовності eager-операторів, щоб зменшити трафік HBM. У статті про TorchTPU зазначено, що він може бути щонайменше на 50% швидшим за Strict.
Для максимальної швидкості torch.compile(backend="tpu") захоплює граф за допомогою TorchDynamo. Він знижує його через StableHLO до OpenXLA, який генерує машинний код TPU. Скомпільовані виконувані файли кешуються між процесами, хостами та перезапусками завдань.
Користувацькі ядра Pallas можна викликати як стандартні функції PyTorch. Також працюють попередньо зібрані ядра Tokamax і тайлові ядра Helion.
Для розподіленої роботи використовується група процесів tpu_dist. Вона підтримує DDP, FSDP2 і DTensor, а також топологічно орієнтовану сітку для міжз’єднань TPU.
Наскільки швидкий TorchTPU?
Усі наведені нижче показники надані Google і партнерами.
- Масштаб навчання: TorchTitan досяг 52% MFU на Qwen 3 8B. Google повідомляє про майже лінійне масштабування до 8 192 TPU Ironwood.
- Етапи налаштування: у сценарії донавчання TorchTitan час виконання кроку скоротився з 11,49 до 2,78 с. Сам DeferAndFuse забезпечив прискорення в 1,15 раза. Повний
torch.compile— у 3,80 раза. - Підтримка моделей: Google постійно тестує близько 5 000 моделей Hugging Face у eager- і скомпільованому режимах.
- Обслуговування флоту: Zenteiq збільшила щоденний обсяг генерації з 1,47 млрд до 5,97 млрд токенів на 1 000 чипів TPU v6e. Це зростання забезпечила маршрутизація llm-d у GKE, а не лише TorchTPU.
Які інтеграції постачаються з TorchTPU?
- Hugging Face: Transformers v5 розгортається на TPU за допомогою
device_map="tpu". Diffusers підтримує eager-режим,torch.compileі паралелізм тензорів. - vLLM-TorchTPU: створено за допомогою Inferact. Зберігає стандартні планувальники та API-сервери, використовуючи власні ядра Pallas.
- SGLang-TorchTPU: створено за допомогою RadixArk. Зберігає повторне використання префіксів RadixAttention.
- Функції обслуговування: KV-кеші FP8, контрольні точки FP8, MXFP4 і NVFP4. Спекулятивне декодування включає MTP та EAGLE-3.
- TorchTitan: рецепти для Llama 3 70B/405B, Qwen 3 8B/32B, Qwen 3 235B MoE і FLUX.1 12B.
- Також: llm-d 1.0, Ray, TorchRec, VeRL (попередня версія) і LiteRT-Torch для експорту на пристрої.
Як TorchTPU порівнюється з PyTorch/XLA, TorchNeuron і JAX?
| Функція | TorchTPU (репозиторій) | PyTorch/XLA (репозиторій) | TorchNeuron (документація AWS) | JAX на TPU (документація Google) |
|---|---|---|---|---|
| Постачальник | Google + Meta | Google / PyTorch | AWS | |
| Апаратне забезпечення | Cloud TPU (протестовано на v5e і новіших) | Cloud TPU | Trainium 2, Trainium 3 | Cloud TPU |
| Пристрій PyTorch | tpu | xla | neuron | Не є PyTorch |
| Механізм бекенду | PrivateUse1 | Запис графа лінивих тензорів | PrivateUse1 | Не застосовується |
| Типове виконання | Eager (Strict, Debug, DeferAndFuse) | Ливі тензори | Eager плюс torch.compile | Не розкрито |
| Шлях компіляції | TorchDynamo до StableHLO до XLA | XLA | Neuron Compiler | XLA |
| Розподілені API | DDP, FSDP2, DTensor, SPMD і MPMD | Лише чистий SPMD | FSDP, DTensor, DDP, TP | Не розкрито |
| Користувацькі ядра | Pallas, Tokamax, Helion | Не розкрито | NKI | Pallas |
| Обслуговування vLLM / SGLang | vLLM-TorchTPU, SGLang-TorchTPU | Не розкрито | vLLM Neuron | vLLM-JAX, SGLang-JAX |
| Статус | Відкритий код, v0.2.0 | Замінюється TorchTPU | Публічна бета-версія (Neuron 2.33) | Підтримується |
| Ліцензія | Apache 2.0 | Не розкрито | Не розкрито | Не розкрито |
Як встановити TorchTPU?
Встановіть пакет на TPU VM, а потім виберіть пристрій tpu:
# pip install torch_tpu
import torch
device = torch.device("tpu")
x = torch.randn((4, 4), device=device)У README репозиторію зафіксовано torch_tpu==0.2.0 з індексом wheel-пакетів CPU PyTorch. Без нього pip завантажує CUDA-збірку torch. Повні інструкції доступні на torchtpu.readthedocs.io.
Основні висновки
- TorchTPU має відкритий вихідний код за ліцензією Apache 2.0 і створений спільно з Meta.
- Він замінює PyTorch/XLA виконанням на основі PrivateUse1 із пріоритетом eager-режиму.
torch.compile(backend="tpu")проходить через StableHLO та XLA.- TorchTitan досяг 52% MFU на Qwen 3 8B із масштабуванням до 8 192 чипів Ironwood.
- vLLM, SGLang і Hugging Face тепер працюють на TPU через стандартний PyTorch.
Перегляньте репозиторій GitHub, статтю, документацію і оголошення Google Cloud. Уся заслуга належить досліднику цього проєкту. Також підписуйтеся на нас у Twitter і не забудьте приєднатися до нашого сабреддіту ML із понад 150 тисячами учасників та підписатися на нашу розсилку. Стривайте! Ви є в Telegram? тепер ви також можете приєднатися до нас у Telegram.
Перекладено автоматично з англійської. Оригінал статті — за посиланням нижче.