Сжатие CNN с использованием обрезки и квантования смешанной точности

Эта статья является первой половиной обзора 4 научных статей, прочитанных в рамках курса Практическая производительность систем глубокого обучения (COMSE6998) в Колумбийском университете осенью 2022 года под руководством профессора Париджата Дубе. В этом блоге я резюмирую две из этих статей, а вторую половину вы можете найти в статье Рии.

Введение

Крупномасштабные CNN (сверточные нейронные сети) являются самой элементарной частью многих современных алгоритмов компьютерного зрения, обеспечивающих высокую точность в самых разных задачах. Архитектуры таких сетей имеют тенденцию быть очень глубокими в том смысле, что они имеют огромное количество параметров. Все параметры, число которых исчисляется миллионами и миллиардами, имеют высокую избыточность весов и используют огромные вычислительные ресурсы. Из-за высоких требований к вычислительным ресурсам и оборудованию становится очень сложной задачей развертывание таких моделей на встроенных и мобильных устройствах с ограниченным объемом памяти и вычислительных ресурсов. Чтобы решить эту проблему, были предприняты исследовательские усилия по уменьшению размера моделей с использованием различных методов, таких как сокращение, поиск нейронной архитектуры, квантование и дистилляция знаний. В этом блоге будут рассмотрены несколько конкретных способов сокращения из статьи Обучение обрезке фильтров в CNN и использование квантования из статьи Квантование смешанной точности для уменьшения размеров модели и вычислений.

Статья 1: Обучение сокращению фильтров в CNN [1]

До метода, предложенного в этой статье, существующие методы обрезали фильтр, основываясь на величине весов или взяв их нормы L1. Сокращение отдельных весов фильтра приводит к увеличению разреженности CNN, что затем требует специально разработанного программного или аппаратного обеспечения для его обработки. В этой статье представлен управляемый данными способ обрезки фильтров на основе их вклада в общую точность модели. Они сформулировали этот подход как задачу «попробуй и научись», где каждый агент обрезки, смоделированный нейронной сетью, принимает веса фильтра в качестве входных данных и выводит бинарное решение (да/нет) о сохранении фильтра.

Каждый агент обрезки обучается с использованием новой функции вознаграждения (уравнение 1), которая является произведением члена точности и члена эффективности. Эта функция вознаграждения обеспечивает простой контроль над компромиссом между производительностью сети и масштабом. Член точности (уравнение 3) функции вознаграждения состоит из ограничиваемого параметра «b», который гарантирует, что падение точности после обрезки фильтров не превышает порогового значения, а также способствует более высокой точности. Термин эффективности представляет собой логарифм отношения общего количества фильтров в модели к количеству фильтров, сохраненных агентом обрезки (показано в уравнении 2); это способствует более высокой обрезке. Поскольку функция вознаграждения не дифференцируема по параметрам агента обрезки, для изменения параметров во время обучения используется обновление градиента политики.

Авторы статьи оценили производительность своей модели для двух задач: сегментация изображения и визуальное распознавание. Для задачи визуального распознавания они провели эксперимент двумя способами. Сначала они обучили агенты обрезки для каждого слоя по отдельности, а затем обучили агентов для всех сверточных слоев вместе. Результаты отсечения отдельных слоев в сети VGG-16, обученной на наборе данных CIFAR-10 с точностью отбрасывания b = 2, показаны на рис. 1. Из рисунка видно, что мы можем обрезать слой до 99,4%. с очень небольшим (0,5%) падением точности (уровни 10 и 11).

Чтобы сократить фильтры по отдельности, они начинают с базовой модели (f), которая уже обучена на наборе данных, а затем сокращают ее на основе выбранных действий для каждого веса агентом нейронной обрезки. Действия для весов в слое инициализируются случайным образом и изучаются в ходе итераций, когда мы оцениваем функцию вознаграждения для действий и падение точности на основе метода градиента политики. После операции базовой сети сеть снова настраивается на наборе данных, чтобы приспособиться к действиям сокращения. Этот процесс повторяется для каждого уровня сети.
В случае, если все уровни удаляются вместе, мы начинаем с агентов L-сокращения для сети уровня «L», по одному для каждого уровня свертки в сети и базовая сеть. В этом случае они следовали методу обрезки отдельных слоев. Базовая сеть не инициализируется повторно по мере того, как мы углубляемся в сеть, а усеченная сеть с ранних уровней переносится на более глубокие уровни для дальнейшего сокращения. После сокращения каждого слоя модель настраивается на наборе данных поезда, чтобы компенсировать снижение производительности. На рис. 2 ниже показаны результаты этого процесса для VGG-16 в наборе данных CIFAR-10 с границей отбрасывания, равной 2. Здесь мы можем наблюдать, что каждый слой обрезается немного меньше, чем его однослойный аналог отсечения, но все еще агрессивен. . Из рис. 1 и рис. 2 можно сделать вывод, что более глубокие слои имеют более высокую избыточность в фильтрах, которые можно обрезать без значительного снижения точности.

Компромисс между производительностью сети и масштабом обеспечивается сбрасываемым параметром «b». Эксперимент с различными значениями b показан на рис. 3, а результаты показаны на рис. 4. Отсюда видно, что чем больше граница отбрасывания, тем выше коэффициент сокращения, больше сохраненных FLOP ( операции с плавающей запятой), более высокое ускорение GPU и CPU, а также большее падение точности на тестовом наборе. Кроме того, мы можем видеть, что для сокращения на основе данных падение точности с тем же коэффициентом сокращения, что и для сокращения на основе величины, ниже в сети VGG-16.

Аналогичные эксперименты были проведены в сети ResNet-18 с набором данных CIFAR-10, который больше и сложнее, чем VGG-16. Было замечено, что коэффициенты сокращения были меньше (все еще значительны), чем в VGG-16, что ожидалось, поскольку ResNet-18 является более эффективной сетевой архитектурой. Результаты показали, что в остаточном блоке первый слой Conv легче обрезать, чем второй; это также видно на рис. 5 (7-й/9-й/12-й/14-й — первый слой, 8-й/10-й/13-й/15-й — второй слой).

Для задачи семантической сегментации были проведены эксперименты в сети FCN-32s с набором данных Pascal VOC и в сети SegNet с набором данных CamVid. Сети, определенные для задач сегментации, основаны на процессе маркировки на уровне пикселей, который требует большего веса и репрезентативной емкости и, следовательно, его сложнее сократить. Метрикой, используемой для оценки модели, была глобальная точность пикселей, а граница падения b была установлена ​​равной 2. На рис. 6 мы видим, что для сети SegNet наблюдается отрицательное падение точности, что подразумевает увеличение в точности, чему способствует член точности в функции вознаграждения. Это произошло из-за меньшего переоснащения сетью из-за обрезки.

Интересный результат можно увидеть на рис. 7, который показывает результаты сокращения для SegNet в наборе данных CamVid: даже несмотря на то, что сеть симметрична, более глубокая половина сети имеет больше избыточных фильтров, которые необходимо удалить. Было замечено, что 49,2% фильтров были удалены во второй половине по сравнению с 26,9% в первой половине.

Статья 2: Квантование смешанной точности с помощью поиска дифференцируемой нейронной архитектуры [2]

Квантование — это еще один метод сжатия размера модели за счет использования меньших битов для хранения весов фильтров в сверточных слоях с меньшей точностью (‹ 32 бита). В работе перед этой статьей рассматривалась одинаковая точность для всех активаций и весов в каждом слое CNN. Идея иметь разную точность (разрядность) для разных слоев была впервые представлена ​​в этой статье. Начиная с CNN из N слоев и Mкандидатов на точность в каждом слое, мы хотим найти наиболее оптимальные назначения точности для уменьшения размера модели, объема памяти и количества вычислений. вычислений с минимальным падением точности. Для поиска потребуется время O(M^N), которое является экспоненциальным; таким образом, они представили новый подход для эффективного решения этой проблемы.

Авторы представили структуру дифференциального поиска нейронной архитектуры (DNAS), которая представляла пространство поиска архитектуры как стохастическую «суперсеть», которая представляет собой DAG (направленный ациклический граф) с узлами, представляющими тензоры промежуточных данных (карты признаков) CNN и ребра представляют операторы (уровни свертки) сети, как показано на рис. 1. Таким образом, любая архитектура-кандидат может быть дочерним подграфом этой суперсети. Любое ребро графа выполняется стохастически, а вероятность выполнения параметризуется некоторыми параметрами архитектуры. Таким образом, нам нужно найти оптимальные параметры архитектуры, которые обеспечивают наиболее многообещающую точность, а затем сеть может быть выбрана из найденных оптимальных параметров. Оптимальные параметры архитектуры находятся путем обучения суперсети с помощью SGD (стохастического градиентного спуска) в отношении как весов сети, так и параметра архитектуры.

В структуре DNAS тензоры данных (узел vⱼ) рассчитываются путем суммирования всех входящих ребер из предыдущих узлов (vᵢ) вместе с переменной маски, как показано в уравнении 1 выше. Переменная маски m представляет собой «маску края» и используется для определения края, который будет выполняться в сети-кандидате. Статья началась с того, что маска ребра была представлена ​​дискретными значениями {0,1}, а сумма всех масок для определенного узла равнялась 1, что гарантирует выполнение только 1 ребра. Суперсеть делается стохастической за счет стохастического выполнения ребер с распределением вероятностей, указанным в уравнении 2. Это сводит проблему поиска архитектуры к поиску оптимального параметра распределения архитектуры θ, который минимизирует ожидаемую функцию потерь. Используя параметр архитектуры θ, мы можем получить архитектуру-кандидата путем выборки из P_θ.

Когда мы пытаемся найти оптимальный параметр архитектуры θ, мы пытаемся оценить градиент функции потерь, используя метод Монте-Карло (данный в уравнении 3), мы обнаруживаем, что существует высокая дисперсия, поскольку размер пространства архитектуры составляет несколько порядков. больше, чем любой допустимый размер пакета B. Высокая дисперсия градиента затрудняет сходимость SGD. Эта проблема решается с помощью Gumbel Softmax для управления выбором ребер, вместо применения «жесткой выборки» мы используем «мягкую выборку» для выбора ребер для выполнения между двумя узлами. Это делает переменную вектора маски непрерывной и прямо дифференцируемой относительно θ (уравнение 4).

Температурный коэффициент τ экспоненциально затухает. Это помогает, потому что в начале обучения нам нужны градиенты с низкой дисперсией, чему способствуют высокие значения τ, делающие распределение m равномерным. По мере обучения τ уменьшается, что делает распределение m все более и более дискретным. Ближе к концу обучения благоприятна более высокая дисперсия, которая достигается за счет дискретного выбора ребер. Этот отжиг температурного коэффициента помогает. Этот конвейер работает как DARTS (совместное обучение всей сети) в начале и как ENAS (образец дочерней сети для самостоятельного обучения) ближе к концу. Здесь есть 2 параметра для обучения w и θ, которые тренируются поочередно и отдельно. w оптимизирует все ребра-кандидаты, а θ оптимизирует вероятность выбора ребер с лучшей производительностью. Таким образом, w обучается в течение нескольких дополнительных эпох (N_{warmup}), чтобы пройти достаточное обучение перед обучением θ.

Для задачи квантования со смешанной точностью структура DNAS создает суперсеть с той же макроструктурой (количество слоев и количество фильтров в каждом слое). Используемая функция потерь приведена в уравнении 5 ниже, где Cost(a) обозначает стоимость архитектуры-кандидата (на основе выбранной точности весов и активаций), а C(.) используется для баланса члена перекрестной энтропии со стоимостью (он может выбрать один на основе выбранного гиперпараметра).

Эксперименты проводились на двух наборах данных (CIFAR-10 и ImageNet) с разными сетевыми архитектурами. ResNet{20,56,110} были квантованы только по весам, и для активаций была сохранена полная точность, а поиск проводился на уровне блоков, все слои в блоке имеют одинаковую точность. Этот эксперимент был проведен с набором данных CIFAR-10, и по соглашению первый и последний слои не квантуются. Точность была выбрана в диапазоне {0–32}, где 0 означает, что блок игнорируется, а ввод совпадает с выводом, а 32 означает, что для этого блока использовалась полная точность. Результаты этого эксперимента показаны на рис. 2 ниже.

Из приведенных выше результатов видно, что структура DNAS помогла более эффективно искать решение, поскольку в целом результаты с полной точностью лучше. Кроме того, все модели Most Accurate имеют более высокую точность на 0,37% при сжатии модели 11,6x — 12,5x, а самые эффективные модели могут достигать сжатия размера модели 16,6x–20,3x с падением точности менее 0,39%. Из рис. 3 видно, что для наиболее эффективной сети третий блок (в группе 1) имеет точность 0, что означает, что он пропущен.

ResNet{18,34} были квантованы с использованием набора данных imagenet. Они провели 2 разных типа экспериментов: один для уменьшения размера модели, когда они квантуют только веса, а другой — для уменьшения вычислительных затрат, когда они квантуют веса, а также активации. Результаты можно увидеть на рис. 4 для сжатия модели и на рис. 5 для сжатия вычислений. DNAS очень эффективен, и для завершения поиска в ResNet 18 для ImageNet требуется менее 5 часов с использованием 8 графических процессоров V100.

На рис. 4 мы можем наблюдать очень похожие вещи, как и на рис. 2, структура DNAS превосходит аналоги с полной точностью, а наиболее точные модели имеют более высокую точность, чем их счетчики с фиксированной точностью 2 (TTQ) и 3 (ADMM). Из рис. 5 видно, что наиболее точная архитектура (arch-1) имеет очень похожую точность на модели полной точности со степенью сжатия 40x. Арх-2 имеет такую ​​же степень сжатия, как ПАКТ, ДоРеФа, QIP, но точность выше. Arch-3 имеет более высокую степень сжатия, а также более высокую точность, чем GroupNet.

Наблюдения

Из двух статей, обсуждавшихся выше, мы можем заметить, что -

  1. Чем глубже нейронная сеть, тем больше параметров, размеров и вычислений необходимо выполнить. Из 1-го документа мы видим, что по мере того, как мы углубляемся в любую ConvNet, фильтры продолжают изучать избыточную информацию из данных, а более глубокие слои могут быть удалены более чем на 90% без большой потери точности в поставленной задаче, но поиск занимает много времени. .
  2. Из второй статьи мы видим, что хранение весов и активаций с полной точностью для каждого слоя является излишним, и эксперименты показывают, что только ДНКS (полная точность) повышает точность моделей, а квантование приводит к большей точности в их большинстве. точных моделей и очень мало падает в своих наиболее эффективных моделях.

Заключение

  1. Существует множество различных способов сжатия модели, сокращения модели, квантования, поиска нейронной архитектуры и извлечения знаний и т. д., и это очень экспериментальная задача.
  2. DNAS — это структура поиска общей архитектуры, которая не ограничивается проблемой квантования со смешанной точностью и может использоваться в различных приложениях.
  3. Отсечение на основе данных работает лучше, чем отсечение на основе величины весов или нормы L1.
  4. Алгоритм «попробуй и научись» сам по себе не очень эффективен. Нам нужен способ сформулировать сокращение всей сети как одну обучающую задачу для более высокой автоматизации, прямо сейчас это длительная последовательная задача.

Ссылки

  1. Учимся обрезать фильтры в сверточных нейронных сетях [2018]
  2. Квантование консетей смешанной точности с помощью поиска дифференцируемой нейронной архитектуры [2018]
  3. Обрезные фильтры для эффективных консетей [2016]
  4. Дартс: поиск дифференцируемой архитектуры [2018]
  5. Эффективный поиск нейронной архитектуры с помощью совместного использования параметров [2018]