В этой статье авторы обсудили, что использование только FLOP (операций с плавающей запятой в секунду) не определяет фактическую скорость архитектуры CNN. Они уделяют особое внимание измерению стоимости доступа к памяти и учитывают оборудование, на котором она работает.

Статья довольно старая (опубликована 30 июля 2018 г.), но объясняет, как следует проектировать и определять скорость вывода своей архитектуры CNN.

Ссылка на статью — https://arxiv.org/pdf/1807.11164.pdf

Примечание. «Любая строка, которую я цитирую из статьи, будет заключена в кавычки, выделена жирным шрифтом и курсивом».

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

Введение

Авторы отмечают, что, помимо точности, сложность вычислений также является важным фактором, определяющим общую производительность модели. Модель может иметь очень высокую точность при приличных FLOP, но при фактическом выводе она будет очень часто обращаться к памяти, что приведет к медленному выводу.

Недавно мы стали свидетелями создания эффективных архитектур для устройств с меньшей вычислительной мощностью, что приводит к меньшему количеству операций ввода-вывода. К таким архитектурам относятся групповая свертка и свертка по глубине. Итак, оценивая скорость, авторы используют FLOP, чтобы показать разницу между их скоростью.

А вот, например, MobileNetv2 быстрее NASNET-A, но FLOP у них схожий! Это показывает, что, используя только FLOP, мы никогда не узнаем фактическую скорость.

Авторы предлагают еще два показателя помимо FLOP — стоимость доступа к памяти (MAC) и степень параллелизма.
MAC составляет большую часть всего времени выполнения модели в таких операциях, как групповая свертка. Модель с высокой степенью параллелизма (возможность выполнять вычисления параллельно) будет работать намного быстрее!

Авторы предлагают два принципа, которые следует учитывать при проектировании эффективных сетей.

  1. Прямые показатели, такие как скорость, а не число флопов, которое является косвенным показателем.
  2. Оценка метрики на целевых платформах

Практические рекомендации по эффективному проектированию сети

  1. Равная ширина канала минимизирует стоимость доступа к памяти (MAC). Это означает, что сохранение одинакового количества каналов во всей архитектуре снижает стоимость и время доступа к памяти, поскольку шаблоны доступа к памяти становятся более предсказуемыми, и ЦП может поддерживать данные готовы заранее.
  2. Чрезмерная групповая свертка увеличивает MAC:При групповой свертке промежуточные входные каналы делятся на группы, затем фильтры умножаются на них, а затем выходные данные всех групп объединяются. Это снижает стоимость вычислений, и операции становятся намного быстрее. Но если мы увеличим количество групп чисел, больше данных будет перемещаться туда и обратно, а вычисления будут занимать больше времени.
  3. Фрагментация сети снижает степень параллелизма. Степень параллелизма означает возможность одновременного выполнения нескольких вычислений. В среде параллельных вычислений, такой как многоядерный процессор или графический процессор, параллелизм является ключом к достижению высокой производительности.
    Фрагментация сети означает разбиение нейронной сети на более мелкие компоненты для оптимизации использования памяти или параллельного выполнения вычислений, как в Групповая свертка.
    Это означает, что если мы фрагментируем модель на различные части, эти более мелкие части не смогут полностью использовать возможности параллельной обработки, что приведет к увеличению времени. Это может произойти потому, что некоторые части будут вычисляться очень быстро, а другие могут занять время, что приведет к большему количеству времени для объединения результатов для следующего слоя!
    «Хотя такая фрагментированная структура была показана полезной для точности , это может снизить эффективность, поскольку несовместимо с устройствами с мощными параллельными вычислениями, такими как графический процессор. Это также приводит к дополнительным затратам, таким как запуск и синхронизация ядра».
  4. Элементные операции не являются незначительными:Элементные операции, такие как ReLU, просты и требуют меньших вычислительных затрат. Но в глубоких нейронных сетях, где у нас есть миллионы параметров, этот простой расчет способствует увеличению общего времени, затрачиваемого сетью.

На основании приведенных выше рекомендаций авторы пришли к выводу, что эффективная архитектура должна

  1. используйте «сбалансированные» свертки (равная ширина канала)
  2. помните о стоимости использования групповой свертки
  3. уменьшить степень фрагментации
  4. сократить количество операций с элементами.

Эти желательные свойства зависят от характеристик платформы (таких как манипулирование памятью и оптимизация кода), которые выходят за рамки теоретических FLOP. Их следует учитывать при практическом проектировании сети

ШаффлНетВ2

Обзор ShuffleNetV1

ShuffleNetV1 был представлен для работы на устройствах с ограниченными ресурсами. Это было довольно эффективно и точно. Поскольку он был разработан для работы с меньшим количеством ресурсов, мы не могли просто увеличить количество карт объектов для повышения его производительности. Одним из способов может быть добавление поточечной групповой свертки и структур «узких мест». Кроме того, была введена операция перетасовки каналов для содействия межканальной связи и улучшения репрезентативной мощности сверточных нейронных сетей (CNN) при сохранении низкой вычислительной сложности.

Как обсуждалось ранее, точечная групповая свертка и структуры с узкими местами увеличивают MAC, нарушая Рекомендации 1 и 2 рекомендаций. Если мы будем следовать приведенным выше правилам и добавлять дополнительные группы, мы нарушим Правило 3. Если мы используем поэлементную операцию «Добавить», это нарушает Рекомендацию 4. Единственный способ повысить точность, следуя всем вышеизложенным рекомендациям, заключался в решении проблемы поддержания большого количества и одинаковой ширины каналов без ни плотных сверток, ни слишком большого количества групп.

Групповая свертка

Текущий набор карт объектов, которые вводятся в свертку групп, разделяется на группы, а затем фильтры применяются к отдельным группам. Опубликуйте это, результаты объединяются.

Перемешать каналы

После группового перемешивания каналы из разных групп меняются местами или перемешиваются для создания нового порядка каналов. Конкретный шаблон перетасовки может варьироваться, но обычно включает в себя переупорядочение каналов таким образом, чтобы обеспечить межканальное взаимодействие.

Преимущества:

  • Поток информации. Перетасовка каналов облегчает обмен информацией между каналами, которые изначально находились в разных группах. Такая межканальная связь может помочь выявить более сложные и абстрактные особенности данных.
  • Улучшенное представление. Предоставляя возможность каналам взаимодействовать, сеть может изучить более широкие представления входных данных, что потенциально может привести к более эффективному извлечению и классификации признаков.
  • Эффективность. Несмотря на большую выразительность, перетасовка каналов не приводит к значительному увеличению вычислительных затрат. Он использует эффективность групповой свертки для управления взаимодействием каналов без существенных вычислительных затрат.

ШаффлНетВ2

В ShuffleNetV2 было введено Разделение каналов. При этом каналы делятся на две ветви. Одна ветвь остается идентичной в соответствии с Рекомендацией 3.В другой ветке есть три операции преобразования с одинаковыми входными и выходными каналами в соответствии с Рекомендацией 1.Два преобразования 1x1 больше не являются группой. -поскольку операция разделения уже создает две группы в соответствии с Рекомендацией 2. «Concat, перестановка каналов и разделение каналов объединяются в одну поэлементную операцию.». Это следует за Руководство 4.

Это было краткое изложение этой статьи. Я не описывал эксперименты, так как вы получите более полную и глубокую идею, если прочитаете этот раздел в самой статье. Статья довольно проста для понимания, и раздел экспериментов заслуживает изучения.

Моя идея заключалась в том, чтобы познакомить читателей с этой статьей и раскрыть ее основные концепции.

Спасибо за прочтение :). Пожалуйста, следите за ежемесячной порцией Paper Summary, а также свяжитесь со мной в LinkedIn.