Выбор ответа Senior Квантование и дистилляция обновлено

Прунинг и реальное ускорение

Вопрос

Неструктурированный прунинг обнулил 80% весов, но инференс почти не ускорился. Почему?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Случайно разреженные матрицы плохо ускоряются на GPU; помогает структурированный прунинг или шаблон 2:4. Плотное умножение матриц на GPU не пропускает нули.

Варианты ответа

  1. Обнулённые веса продолжают обучаться и после каждого шага снова становятся ненулевыми, так что матрица остаётся плотной
  2. Прунинг добавляет маски того же размера, что веса, и число операций на инференсе фактически растёт
  3. GPU не умеют умножать на ноль быстрее, поэтому неструктурированный прунинг не даёт выигрыша и в памяти
  4. Случайно разреженные матрицы плохо ускоряются на GPU; помогает структурированный прунинг или шаблон 2:4правильный ответ

Разбор

Плотное умножение матриц на GPU не пропускает нули. Чтобы выиграть, нужны специальные форматы и ядра, которые выигрывают только при очень высокой разреженности, или структура: удалить целые каналы и головы (матрицы становятся меньше) либо полуструктурированный шаблон 2:4, который поддерживают тензорные ядра новых GPU. Неструктурированный прунинг зато хорошо сжимает хранение.

  • Маски нужны только при обучении, а обнулённые веса остаются нулями.
  • Параметров становится не больше.
  • Умножать на ноль GPU умеют, просто не экономят на этом; а хранение разреженные форматы как раз сжимают.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.