Совместная оптимизация

Поддерживается Arm ML Tooling

В этом документе представлен обзор экспериментальных API для объединения различных методов оптимизации моделей машинного обучения для развертывания.

Обзор

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

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

Проблема, которая возникает при попытке объединить эти методы, заключается в том, что применение одного из них обычно уничтожает результаты предыдущего метода, сводя на нет общую выгоду от одновременного применения всех из них; например, кластеризация не сохраняет разреженность, введенную API сокращения. Для решения этой проблемы мы представляем следующие экспериментальные методы совместной оптимизации:

Они предоставляют несколько путей развертывания, которые можно использовать для сжатия модели машинного обучения и использования преимуществ аппаратного ускорения во время вывода. На диаграмме ниже показано несколько путей развертывания, которые можно изучить в поисках модели с желаемыми характеристиками развертывания, где конечные узлы представляют собой модели, готовые к развертыванию, то есть они частично или полностью квантованы и имеют формат tflite. Зеленая заливка обозначает этапы, на которых требуется переобучение/тонкая настройка, а пунктирная красная рамка выделяет этапы совместной оптимизации. Методика получения модели в данном узле указана в соответствующей метке.

collaborative optimization

Прямой путь развертывания только для квантования (после обучения или QAT) опущен на рисунке выше.

Идея состоит в том, чтобы достичь полностью оптимизированной модели на третьем уровне вышеуказанного дерева развертывания; однако любой из других уровней оптимизации может оказаться удовлетворительным и обеспечить требуемый компромисс между задержкой и точностью вывода, и в этом случае дальнейшая оптимизация не требуется. Рекомендуемый процесс обучения будет заключаться в итеративном прохождении уровней дерева развертывания, применимых к целевому сценарию развертывания, и проверке того, соответствует ли модель требованиям к задержке вывода, и, если нет, использовать соответствующий метод совместной оптимизации для дальнейшего сжатия модели и повторения. до тех пор, пока модель не будет полностью оптимизирована (обрезана, кластеризована и квантована), если это необходимо.

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

collaborative optimization density plot

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

Полученные результаты

Ниже приведены некоторые результаты по точности и сжатию, которые мы получили при экспериментировании с путями совместной оптимизации PQAT и CQAT.

Обучение с учетом квантования с сохранением разреженности (PQAT)

Модель Предметы Базовый уровень Обрезанная модель (разреженность 50%) Модель QAT Модель PQAT
ДС-CNN-L FP32 Топ1 Точность 95,23% 94,80% (Фейковый INT8) 94,721% (Фейковый INT8) 94,128%
Полное целочисленное квантование INT8 94,48% 93,80% 94,72% 94,13%
Сжатие 528 128 → 434 879 (17,66%) 528 128 → 334 154 (36,73%) 512 224 → 403 261 (21,27%) 512 032 → 303 997 (40,63%)
Mobilenet_v1-224 FP32 Высшая точность 1 70,99% 70,11% (Фейковый INT8) 70,67% (Фейковый INT8) 70,29%
Полное целочисленное квантование INT8 69,37% 67,82% 70,67% 70,29%
Сжатие 4 665 520 → 3 880 331 (16,83%) 4 665 520 → 2 939 734 (37,00%) 4 569 416 → 3 808 781 (16,65%) 4 569 416 → 2 869 600 (37,20%)

Обучение с учетом квантования с сохранением кластера (CQAT)

Модель Предметы Базовый уровень Кластерная модель Модель QAT Модель CQAT
Mobilenet_v1 на CIFAR-10 FP32 Топ1 Точность 94,88% 94,48% (Фейковый INT8) 94,80% (Фейковый INT8) 94,60%
Полное целочисленное квантование INT8 94,65% 94,41% 94,77% 94,52%
Размер 3,00 МБ 2,00 МБ 2,84 МБ 1,94 МБ
Mobilenet_v1 на ImageNet FP32 Высшая точность 1 71,07% 65,30% (Фейковый INT8) 70,39% (Фейковый INT8) 65,35%
Полное целочисленное квантование INT8 69,34% 60,60% 70,35% 65,42%
Сжатие 4 665 568 → 3 886 277 (16,7%) 4 665 568 → 3 035 752 (34,9%) 4 569 416 → 3 804 871 (16,7%) 4 569 472 → 2 912 655 (36,25%)

Результаты CQAT и PCQAT для моделей, кластеризованных по каналам

Результаты, приведенные ниже, получены с использованием метода кластеризации по каналам . Они показывают, что если сверточные слои модели кластеризованы по каналам, то точность модели выше. Если ваша модель имеет много сверточных слоев, мы рекомендуем кластеризовать каждый канал. Степень сжатия останется той же, но точность модели будет выше. В наших экспериментах конвейер оптимизации модели представляет собой «кластеризованный -> QAT с сохранением кластера -> квантование после обучения, int8».

Модель Кластеризованный -> CQAT, квантованный int8 Кластеризовано по каналам -> CQAT, квантовано int8
ДС-CNN-L 95,949% 96,44%
МобилНет-В2 71,538% 72,638%
MobileNet-V2 (обрезанный) 71,45% 71,901%

Примеры

Комплексные примеры описанных здесь методов совместной оптимизации можно найти в блокнотах с примерами CQAT , PQAT , кластеризации с сохранением разреженности и PCQAT .