Инструменты2 августа 2026 г., 01:17 МСК🤖 Auto

NVIDIA Transformer Engine: FP8 ускорение и бенчмарки на GPU

NVIDIA представила Transformer Engine для PyTorch, объединяя fused-ядра, BF16 и аппаратное FP8-вычисление для ускорения обучения трансформеров.

Баннер новости 4892

Автоматическое определение архитектуры и установка

Инструмент NVIDIA Transformer Engine (TE) интегрируется в PyTorch через пакет transformer_engine[pytorch]. При инициализации система автоматически определяет архитектуру GPU, вычислительную способность (Compute Capability) и объем памяти. Это позволяет выбрать оптимальный режим выполнения:

  • TE Capable: GPU поддерживает fused-ядра TE (требует Compute Capability ≥ 8.0, например, Ampere и новее).
  • FP8 Capable: GPU поддерживает аппаратные тензорные ядра FP8 (требует Compute Capability ≥ 8.9, например, Hopper H100).
  • Fallback: На старых архитектурах (например, T4) или при отсутствии поддержки TE используется чистый PyTorch.

Ключевые компоненты и Fused Kernels

Transformer Engine предлагает набор оптимизированных модулей, которые заменяют стандартные слои PyTorch для снижения накладных расходов на передачу данных между ядрами. Основные компоненты включают:

  • te.Linear: Оптимизированное линейное преобразование.
  • te.LayerNorm: Нормализация слоя с fused-вычислениями.
  • te.LayerNormLinear и te.LayerNormMLP: Комбинированные операции, объединяющие нормализацию и полносвязные слои.
  • te.TransformerLayer: Полностью слитый блок трансформера, включающий внимание и MLP.

Рецепт FP8: Delayed Scaling

Для достижения максимальной производительности на поддерживаемом оборудовании используется формат FP8 (E4M3 и E5M2). NVIDIA рекомендует использовать рецепт DelayedScaling, который управляет масштабированием тензоров и историей амплитуд (amax) для предотвращения переполнения. В примере используется гибридный формат HYBRID с длиной истории amax_history_len=16 и алгоритмом вычисления максимума "max".

Бенчмаркинг и сравнение производительности

В рамках тестирования была создана компактная модель MiniGPT (96 токенов, 768 скрытых состояний, 12 слоев) и обучена на синтетических последовательностях. Сравнение проводилось между чистой реализацией PyTorch и версией с использованием TE. Ниже приведены ключевые метрики, которые измеряются в процессе тестирования:

Параметр Описание Значение/Примечание
Архитектура GPU Определяется через torch.cuda Зависит от железа (CC >= 8.0 для TE)
Точность вычислений BF16 или FP8 FP8 доступен только на Hopper/Ada
Размер батча (bench) batch_size 32
Итерации бенчмарка iters 30 (после 10 warmup)
Метрика времени ms/step Среднее время одного шага обучения
Метрика памяти Peak Memory (GB) torch.cuda.max_memory_allocated

Практическое применение

Использование Transformer Engine позволяет не только ускорить обучение за счет fused-ядер, но и снизить потребление памяти благодаря FP8. Код демонстрирует полную цепочку: от установки пакета и проверки совместимости GPU до создания модели, настройки оптимизатора AdamW и запуска цикла обучения с измерением метрик. Это критически важно для разработчиков, работающих с большими языковыми моделями (LLM) на инфраструктуре NVIDIA.

Источник: MarkTechPost ↗