Hugging Face предоставляет нативную поддержку PyTorch для TPU, упрощая ускорение ИИ
Объявление описывает крупный технический прорыв от Hugging Face: внедрение нативной поддержки TPU (Tensor Processing Unit) для PyTorch через новый бэкенд TorchTPU. Эта разработка коренным образом меняет то, как сообщество глубокого обучения взаимодействует со специализированными ускорителями ИИ Google, превращая TPU из сложной, периферийной интеграции в полноценное, бесшовное устройство для пользователей PyTorch.
TPU — это специализированные чипы, разработанные Google специально для ускорения операций матричного умножения, которые составляют основу нейронных сетей. Google разрабатывает и использует эти ускорители почти десятилетие, в частности, используя их для питания собственных передовых моделей, включая серию Gemini. Эти устройства доступны через Google Cloud и варьируются от отдельных чипов до массивных кластеров, состоящих из тысяч ускорителей, что делает их идеальными для вычислительно интенсивных задач, таких как обучение моделей в крупном масштабе или обслуживание инференса с высокой пропускной способностью.
Исторически сложившаяся основная проблема для пользователей PyTorch, пытавшихся использовать TPU, заключалась в программном стеке. Экосистема изначально развивалась вокруг TensorFlow и JAX, вынуждая пользователей PyTorch использовать обходные пути, наиболее заметным из которых было PyTorch/XLA (torch_xla). Хотя этот подход был функциональным, он был печально известен своей сложностью использования и отладкой. Основные проблемы включали концепцию «ленивых тензоров» (lazy tensors) — что означало, что за таймингом выполнения отвечали сами тензоры, а не код пользователя — что часто приводило к сбоям или неожиданному поведению кода. Кроме того, незначительные корректировки кода могли вызывать дорогостоящую перекомпиляцию графа, делая весь процесс отладки крайне непрозрачным и сложным для понимания.
Чтобы смягчить эти трудности, Hugging Face ранее разработал Optimum TPU, который обеспечивал необходимую поддержку инференса и обучения для моделей Hugging Face на TPU. Однако с запуском TorchTPU этот специализированный слой в значительной степени стал избыточным. TorchTPU интегрирует поддержку TPU напрямую в качестве нативного бэкенда в сам PyTorch. Это означает, что разработчикам больше не нужно писать стандартный, идиоматичный код PyTorch, не имея при этом специальных знаний XLA или сложных оберток. Новый бэкенд оснащен высокооптимизированными ядрами Pallas, которые специально настроены для уникальной архитектуры TPU, а также надежной поддержкой распределенных конфигураций обучения и бесшовной интеграцией с torch.compile для максимального прироста скорости.
Внедрение поразительно просто: установка необходимого пакета на TPU VM требует одной команды. Что особенно важно, процесс установки позволяет пользователям выбрать сборку PyTorch для CPU, избегая гораздо более крупной сборки CUDA, которая избыточна и неприменима для среды TPU. Эта простота резко снижает барьер входа для передового аппаратного ускорения.
Эта нативная поддержка глубоко проникает в основные библиотеки моделей. Библиотека Transformers, которая призвана стать окончательным источником истины для определений моделей, теперь полностью включает поддержку TPU. Чтобы загрузить любую модель на TPU, пользователям достаточно передать аргумент device_map=
Почему это важно
- —Это устраняет сложные обходные пути, делая TPU полноценным и простым в использовании устройством для разработчиков PyTorch.
- —Нативная интеграция значительно снижает порог входа для запуска крупномасштабных LLM на специализированном оборудовании.
- —Новый фреймворк поддерживает такие продвинутые методы, как тензорное параллелирование и оптимизированные ядра, открывая огромный прирост производительности для генеративного ИИ.
Ключевые факты
- TorchTPU добавляет TPU в качестве нативного бэкенда к PyTorch, позволяя стандартному коду PyTorch работать непосредственно на TPU.
- Разработчики теперь могут загружать модели, просто передав `device_map="tpu"` в библиотеке Transformers.
- Система поддерживает расширенное масштабирование через `TensorParallelConfig`, позволяя расщеплять модели, более крупные, чем один чип, между несколькими ускорителями.
- Тесты производительности показывают значительное ускорение (например, декодирование в 21,5 раза быстрее) при запуске больших моделей на TPU.
- Интеграция включает ядра Pallas и поддержку `torch.compile`, обеспечивая как низкоуровневый контроль, так и высокоуровневую оптимизацию.
Полный текст — в первоисточнике. Здесь — краткое изложение и ключевые факты.