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

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

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

Обзор

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

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

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

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

collaborative optimization

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

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

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

collaborative optimization density plot

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

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

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

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

Модель Предметы Исходный уровень Подрезанная модель (разреженность 50%) Модель QAT Модель PQAT
DS-CNN-L FP32 Top1 Точность 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%) 512224 → 403261 (21,27%) 512 032 → 303 997 (40,63%)
Mobilenet_v1-224 FP32 Top 1 Точность 70,99% 70,11% (Поддельный INT8) 70,67% (Поддельный INT8) 70.29%
INT8 полное целочисленное квантование 69,37% 67,82% 70,67% 70,29%
Сжатие 4665520 → 3880331 (16,83%) 4 665 520 → 2 939 734 (37,00%) 4569416 → 3808 781 (16,65%) 4569416 → 2869600 (37,20%)

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

Модель Предметы Исходный уровень Кластерная модель Модель QAT Модель CQAT
Mobilenet_v1 на CIFAR-10 FP32 Top1 Точность 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 Top 1 Точность 71,07% 65,30% (Поддельный INT8) 70,39% (Поддельный INT8) 65,35%
INT8 полное целочисленное квантование 69,34% 60,60% 70,35% 65,42%
Сжатие 4665568 → 3886277 (16,7%) 4665568 → 3035752 (34,9%) 4569416 → 3804871 (16,7%) 4569 472 → 2 912 655 (36,25%)

Примеры

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