Top.Mail.Ru
Что такое структурная разреженность и зачем она нужна NVIDIA | Блог Serverflow Скачать
прайс-лист
Бесплатная
доставка по РФ
Скидка
за отзыв!
Distribution of
Server Components
8 (800) 222-70-01 Консультация IT-специалиста Сравнение

Что такое структурная разреженность и зачем она нужна NVIDIA

~ 21 мин
158
Средний
Статьи
Что такое структурная разреженность и зачем она нужна NVIDIA

Введение

Если вы когда либо интересовались техническими характеристиками современных ускорителей NVIDIA, наверняка замечали, что компания часто указывает два значения производительности: стандартное и с учётом структурной разреженности. Например, в описании новых GPU можно наткнуться на формулировки с пометками, вроде: «400 TFLOPS (sparse)».

Что скрывается за этими цифрами? Почему в одних случаях производительность указывается в два раза выше, чем в других? И главное, как на практике достигается такой прирост, и что вообще означает "структурная разреженность" для работы нейросетей и искусственного интеллекта?

В этой статье я попытаюсь простыми словами разъяснить, что такое структурная разреженность, почему она важна для современных GPU, и как это помогает ускорять вычисления и экономить ресурсы.

Что такое разреженность в нейросетях

Современные нейронные сети состоят из огромного количества весов — параметров, которые определяют, как именно сеть обрабатывает информацию. Однако исследования и практика показали: для высокой точности работы далеко не все эти веса действительно нужны. После сжатия и оптимизации значительная часть из них превращается в нули, то есть просто не участвует в вычислениях.

Такое свойство называется разреженностью (sparsity), а сами веса — разреженными матрицами.

Чем больше нулей в матрице весов, тем меньше реальных операций умножения и сложения нужно выполнять — а значит, вычисления становятся быстрее и экономичнее.

Различают два основных типа разреженности, давайте познакомимся с каждым из них.

Произвольная разреженность (unstructured)

Нули появляются где угодно в матрице: случайным или малопредсказуемым образом. Это позволяет добиться высокого процента обнулённых весов, но эффективно ускорить такие вычисления на современных ускорителях сложно, поскольку аппаратное обеспечение плохо справляется с беспорядочными пропусками.

proizvolnaya-razrezhennost
Наглядная схема произвольной разреженности.

Структурная разреженность (structured)

Нули располагаются по строгим, повторяющимся шаблонам: например, в каждом блоке из четырёх значений два всегда обнуляются. Такой предсказуемый порядок позволяет GPU и другим ускорителям пропускать целые блоки вычислений, что и обеспечивает обещанный рост производительности. Именно такой вид разреженности использует NVIDIA.

strukturnaya-razrezhennost.png
Наглядная схема структурной разреженности.

Что такое структурная разреженность в исполнении NVIDIA

Начиная с архитектуры Ampere, компания NVIDIA реализовала в своих ускорителях специальную поддержку структурированной разреженности на уровне аппаратных блоков, так называемых Tensor Cores.

Как это работает?

Если в каждом блоке из четырёх элементов матрицы (например, весов нейросети) два значения равны нулю, то Tensor Cores способны «пропускать» вычисления для этих нулей и одновременно обрабатывать больше информации. Благодаря такому подходу, пропускная способность этих ядер фактически удваивается — то есть за то же время можно выполнить в два раза больше вычислений, по сравнению с обычным случаем.

Важная оговорка:
Чтобы реально получить такой прирост, сама модель и используемый фреймворк (например, PyTorch, TensorFlow) должны поддерживать и использовать именно такую структурированную разреженность. В реальной практике удвоение производительности возможно только в «идеальном» сценарии, если большая часть весов модели соответствует этому шаблону разреженности.

Что это даёт?
GPU действительно может выдавать, например, не 200, а 400 TFLOPS (sparse), если конечно соблюдены все условия. Именно поэтому NVIDIA в спецификациях часто указывает значения производительности с пометкой (sparse).

Почему NVIDIA использует разреженность в бенчмарках

В спецификациях и презентациях NVIDIA часто приводит показатели производительности своих GPU не только для обычных моделей, но и для моделей с учётом структурной разреженности (sparse). Зачем? — это позволяет указывать вдвое завышенные характеристики в спецификациях и промо материалах.

vgg-16-do-i-posle-strukturnoj-razrezhennosti.png
Модель VGG-16 до и после прореживания в качестве примера

Показатели с учётом разреженности  — это лишь теоретически возможный максимум, который достижим только при идеальных условиях:
  • Используется специально подготовленная sparse-модель
Например, такие модели, как "обрезанный" BERT, в которых значительная часть весов заранее обнулена по определённому шаблону.
bert-do-i-posle-strukturnoj-razrezhennosti
Тот самый "обрезанный" BERT до и после прореживания.
  • Вычисления организованы с учётом оптимизированной структуры
Все операции и данные заранее адаптированы так, чтобы аппаратное ускорение разреженности реально работало.
  • Поддержка реализована в используемом фреймворке
Для максимального эффекта применяются такие инструменты, как cuDNN, TensorRT и другие специализированные библиотеки от NVIDIA, которые умеют работать с разреженными моделями.

Необходимо осознавать:
В реальных задачах не каждая нейросеть может быть эффективно преобразована в разреженную структуру, и не каждый фреймворк или модель поддерживает эту самую структурную разреженность. Поэтому удвоенная производительность это оптимистичный максимум, а не гарантированный результат для всех сценариев. На практике прирост будет зависеть от конкретной задачи, используемой модели и уровня поддержки разреженности.

Заключение

Структурная разреженность — это весьма эффективный способ уменьшить количество реальных вычислений в нейросетях без потери точности, если правильно подобрать структуру модели. NVIDIA активно использует этот подход в своих технологиях и маркетинговых материалах, потому что поддержка разреженности позволяет в теории удвоить производительность современных GPU.

Однако при оценке бенчмарков и технических характеристик важно помнить: такие показатели достижимы только для специально оптимизированных моделей и при наличии поддержки структурной разреженности в используемом фреймворке. В реальных задачах не всегда удаётся реализовать эти идеальные условия, поэтому заявленная "удвоенная" производительность — это максимальный, но не всегда реальный результат.

Автор: Serverflow Serverflow
Поделиться

Комментарии 0

Написать комментарий
Сейчас тут ничего нет. Ваш комментарий может стать первым.
Написать отзыв
До 6 фото, размером до 12Мб каждое
Мы получили ваш отзыв!

Он появится на сайте после модерации.

Написать комментарий

Комментарий появится на сайте после предварительной модерации

До 6 фото, размером до 12Мб каждое
Мы получили ваш отзыв!

Он появится на сайте после модерации.

Мы свяжемся с вами утром

График работы: Пн-Пт 10:00-19:00 (по МСК)

Обработаем вашу заявку
в ближайший рабочий день

График работы: Пн-Пт 10:00-19:00 (по МСК)