Сжатие модели (Compress)

Зачем необходимо сжатие модели

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

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

Во-вторых , хранилище . Например, в сценарии применения мониторинга окружающей среды электросети модель обнаружения целевого изображения должна быть развернута на устройстве мониторинга только с 200 МБ доступной памяти, а при запуске программы мониторинга оставшаяся память будет меньше 30М.

Наконец, есть энергопотребление : энергопотребление автономного перевода, встроенной модели искусственного интеллекта мобильного устройства, напрямую определяет время автономной работы.

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

Но как мы можем производить маленькие модели? Общие методы включают разработку более эффективной сетевой структуры, уменьшение количества параметров модели, уменьшение объема вычислений модели и повышение точности модели. Некоторые люди могут спросить, почему бы просто не разработать небольшую модель? Вы должны знать, что существует множество реальных подкатегорий бизнеса и сложность задач различна. В этом случае очень сложно вручную разрабатывать эффективные небольшие модели и требуются очень глубокие знания предметной области. Сжатие модели может быть основано на классической маленькой модели. После небольшой обработки производительность модели можно быстро улучшить для достижения цели «больше скорости, больше экономии».

Вставьте сюда описание изображения
На изображении выше представлена ​​модель классификации с использованием дистилляции и количественной оценки.Горизонтальная ось — это время, затраченное на рассуждения, а вертикальная ось — точность модели. Красная звезда вверху изображения соответствует эффекту дистилляции на основе модели MobileNetV3_large. По сравнению с синей звездой непосредственно под ней точность значительно повышается. Голубые звездочки, отмеченные на рисунке, соответствуют результатам дистилляции и количественного анализа на основе модели MobileNetV3_large. По сравнению с исходной моделью точность и скорость вывода значительно улучшены. Видно, что на основе классической небольшой модели, созданной вручную, точность и скорость рассуждений модели могут быть дополнительно улучшены за счет дистилляции и количественного анализа.

Основные методы сжатия модели

Вставьте сюда описание изображения

Сжатие модели может быть достигнуто с помощью следующих методов:

Обрезка : подобно «потере веса химических структурных формул», сетевые структуры в структуре модели, которые не важны для результатов прогнозирования, обрезаются, что делает сетевую структуру более «тонкой». Например, на каждом уровне сети некоторые нейронные узлы имеют очень малые веса, что оказывает минимальное влияние на информацию, загружаемую в модель. Если эти нейроны с меньшими весами удалить, это может не только гарантировать, что точность модели не сильно пострадает, но и уменьшить размер модели.

Количественная оценка : подобно «потере веса на квантовом уровне», параметры моделей нейронных сетей обычно представлены данными float32, но если мы изменим точность расчета данных float32 на точность расчета int8, мы можем взамен немного пожертвовать точностью модели. для более быстрой скорости расчета.

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

Поиск архитектуры нейронной сети (NAS) . Подобно «реконструкции химических структурных формул», поиск структуры модели выполняется с учетом размера модели и скорости вывода в качестве ограничений для получения более эффективной структуры сети.

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

Acho que você gosta

Origin blog.csdn.net/weixin_49346755/article/details/127484449
Recomendado
Clasificación