Открыть сервис

Tensor Cores

Tensor Cores — это специализированные вычислительные блоки, входящие в состав некоторых графических процессоров (GPU) и тензорных процессоров (TPU), предназначенные для аппаратного ускорения операций с матрицами и тензорами (многомерными массивами данных). В отличие от традиционных ядер CUDA, которые выполняют скалярные операции (с одним числом за раз), Tensor Cores оптимизированы для выполнения операций умножения матриц и накопления (fused multiply-add, FMA) с высокой пропускной способностью, что критически важно для задач искусственного интеллекта (ИИ), машинного обучения (ML) и научных вычислений. Впервые представлены компанией Nvidia в 2017 году в архитектуре Volta.

История

Предпосылки и разработка

До появления Tensor Cores основным способом ускорения матричных операций на GPU было использование универсальных ядер (CUDA-ядер в случае Nvidia). Однако с ростом сложности нейросетей, особенно глубоких (Deep Learning), стало очевидно, что традиционные ядра неэффективны для операций с матрицами большого размера. В 2016 году Nvidia начала разработку специализированных блоков, способных выполнять операции с матрицами за один такт, что позволило бы значительно сократить время обучения и инференса моделей.

Появление в архитектуре Volta (2017)

Первые Tensor Cores были реализованы в архитектуре Volta, представленной в мае 2017 года. Они были установлены в GPU Tesla V100, предназначенном для дата-центров и суперкомпьютеров. В Volta Tensor Cores поддерживали операции с матрицами размером 4×4 и точностью FP16 (половинная точность) с накоплением в FP32 (одинарная точность). Это позволило увеличить производительность при обучении нейросетей в 3–5 раз по сравнению с использованием только CUDA-ядер.

Развитие в последующих архитектурах

  • Turing (2018): В архитектуре Turing, использованной в потребительских видеокартах GeForce RTX 20-й серии, Tensor Cores были впервые интегрированы в игровые GPU. Помимо FP16, они получили поддержку INT8 (целочисленная точность) и INT4, что позволило ускорить инференс нейросетей в реальном времени, например, в технологии DLSS (Deep Learning Super Sampling).
  • Ampere (2020): В архитектуре Ampere (RTX 30-я серия, A100) Tensor Cores были значительно улучшены. Они получили поддержку структурного разрежения (sparse matrix operations), что вдвое увеличило производительность при работе с разреженными нейросетями. Также была добавлена поддержка формата TF32 (Tensor Float 32), который автоматически подбирает точность для оптимального баланса между производительностью и качеством.
  • Hopper (2022): В архитектуре Hopper (H100) Tensor Cores получили поддержку формата FP8 (8-битная точность) и технологии Transformer Engine, которая динамически выбирает оптимальную точность (FP8 или FP16) для каждого слоя нейросети, что особенно эффективно для больших языковых моделей (LLM).
  • Blackwell (2024): В архитектуре Blackwell (B100/B200) Tensor Cores были интегрированы с новыми технологиями сжатия данных и поддержкой формата FP4 (4-битная точность), что позволяет обучать модели с ещё большим количеством параметров при том же энергопотреблении.

Устройство и принцип работы

Архитектура

Tensor Cores представляют собой специализированные аппаратные блоки, расположенные внутри каждого мультипроцессора (SM, Streaming Multiprocessor) GPU. В отличие от CUDA-ядер, которые выполняют одну операцию умножения или сложения за такт, Tensor Core за один такт выполняет операцию D = A × B + C, где A, B, C и D — матрицы размером 4×4. Это называется операцией «умножение матриц с накоплением» (matrix multiply-accumulate, MMA).

Форматы данных

Tensor Cores поддерживают несколько форматов данных, которые выбираются в зависимости от задачи:

  • FP16 (половинная точность): Используется для обучения нейросетей, когда требуется баланс между производительностью и точностью.
  • FP32 (одинарная точность): Используется для операций, где критична высокая точность, но производительность ниже.
  • TF32 (Tensor Float 32): Проприетарный формат Nvidia, который использует 10 бит для мантиссы (как в FP16) и 8 бит для экспоненты (как в FP32). Это позволяет получить скорость, близкую к FP16, при точности, близкой к FP32.
  • INT8/INT4 (целочисленные форматы): Используются для инференса (выполнения уже обученных моделей), где допустима меньшая точность, но требуется высокая скорость.
  • FP8 (8-битная точность): Введён в архитектуре Hopper, используется для обучения и инференса больших моделей.

Производительность

Производительность Tensor Cores измеряется в терафлопсах (TFLOPS) для операций с плавающей запятой. Например, в GPU H100 пиковая производительность Tensor Cores достигает 2000 TFLOPS (FP8), что в десятки раз превышает производительность CUDA-ядер (около 60 TFLOPS FP32). Однако реальная производительность зависит от размера матриц и степени их разреженности.

Применение

Машинное обучение и глубокое обучение

Основное применение Tensor Cores — ускорение обучения и инференса нейросетей. Они используются в:

  • Свёрточных нейросетях (CNN): Для обработки изображений, видео, задач компьютерного зрения.
  • Рекуррентных нейросетях (RNN) и LSTM: Для обработки последовательностей (текст, речь).
  • Трансформерах: Для обработки естественного языка (NLP), включая модели GPT, BERT, LLaMA. Tensor Cores в архитектуре Hopper и Blackwell специально оптимизированы для операций с большими матрицами, характерными для трансформеров.

Научные вычисления

Tensor Cores применяются в научных расчётах, где требуется обработка больших матриц: моделирование молекулярной динамики, квантовая химия, расчёты в физике плазмы и аэродинамике. Например, в суперкомпьютере Summit (США) Tensor Cores используются для ускорения моделирования климата.

Графика и игры

В игровых GPU Tensor Cores используются для:

  • DLSS (Deep Learning Super Sampling): Технология, которая использует нейросеть для повышения разрешения изображения в реальном времени. Tensor Cores выполняют инференс нейросети, что позволяет рендерить кадры в низком разрешении, а затем масштабировать их до высокого без потери качества.
  • Ray Tracing (трассировка лучей): Tensor Cores ускоряют обработку шумов (denoising) в трассировке лучей с помощью нейросетей, что позволяет получать более чистые изображения при меньших вычислительных затратах.

Другие области

  • Обработка естественного языка: Ускорение работы чат-ботов, голосовых ассистентов, систем машинного перевода.
  • Медицина: Ускорение анализа медицинских изображений (МРТ, КТ) с помощью нейросетей.
  • Автономные транспортные средства: Ускорение обработки данных с сенсоров (лидары, камеры) в реальном времени.

Критика и ограничения

Точность и численная стабильность

Использование пониженной точности (FP16, FP8, INT8) может приводить к потере точности в некоторых задачах, особенно в научных расчётах, где требуется высокая точность (FP64). Для решения этой проблемы Nvidia разработала механизмы смешанной точности (mixed precision), которые автоматически выбирают формат для каждого слоя нейросети.

Программная поддержка

Для эффективного использования Tensor Cores требуется специальное программное обеспечение: библиотеки cuDNN, cuBLAS, TensorRT, а также фреймворки (PyTorch, TensorFlow, JAX). Разработчикам необходимо адаптировать код под эти библиотеки, что может быть нетривиальной задачей.

Энергопотребление

Хотя Tensor Cores более энергоэффективны, чем CUDA-ядра, при выполнении матричных операций, их использование в дата-центрах приводит к значительному энергопотреблению. Например, GPU H100 потребляет до 700 Вт, что требует мощных систем охлаждения.

Конкуренция

Tensor Cores являются проприетарной технологией Nvidia. Альтернативные решения предлагают другие производители:

  • AMD: Использует Matrix Core в архитектуре CDNA (для дата-центров) и RDNA (для игр). Они поддерживают форматы FP16, BF16, INT8.
  • Intel: Использует XMX (Xe Matrix Extensions) в архитектуре Xe (для GPU и ускорителей Habana).
  • Google: Использует TPU (Tensor Processing Unit) с собственными матричными блоками, которые оптимизированы для фреймворка TensorFlow.

Интересные факты

  • Название «Tensor Cores» происходит от термина «тензор» — математического объекта, обобщающего понятия вектора и матрицы. В контексте ИИ тензоры используются для представления данных (изображений, текста, звука).
  • В GPU архитектуры Volta Tensor Cores занимали около 10% площади кристалла, но обеспечивали до 80% производительности при обучении нейросетей.
  • Технология DLSS, использующая Tensor Cores, была впервые представлена в 2018 году и с тех пор прошла несколько итераций (DLSS 2.0, 3.0, 3.5), каждая из которых улучшала качество изображения и производительность.
  • В 2023 году компания Nvidia объявила, что Tensor Cores в архитектуре Hopper позволяют обучать модели с триллионами параметров, что ранее было невозможно из-за ограничений по памяти и производительности.

Источники

  • Nvidia. «NVIDIA Tensor Cores: Unprecedented Acceleration for Deep Learning». 2017.
  • Nvidia. «NVIDIA A100 Tensor Core GPU Architecture». 2020.
  • Nvidia. «NVIDIA H100 Tensor Core GPU Architecture». 2022.
  • Nvidia. «NVIDIA Blackwell Architecture Technical Brief». 2024.
  • IEEE Spectrum. «How Tensor Cores Accelerate Deep Learning». 2020.
  • PyTorch Documentation. «Mixed Precision Training». 2023.
  • TensorFlow Documentation. «Using Tensor Cores». 2023.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →