Прунинг (Удаление неструктурных связей)
Оптимизируйте модели ИИ с помощью pruning — уменьшите сложность, повысьте эффективность и быстрее развертывайте на периферийных устройствах без ущерба для производительности.
Прунинг (разрежение) — это метод оптимизации моделей, используемый для уменьшения размера и вычислительной сложности обученной нейронной сети (NN). Этот процесс включает в себя выявление и удаление из модели избыточных или менее важных параметров (весов) или структур (нейронов, каналов или слоев). Цель состоит в том, чтобы создать меньшую по размеру, более быструю и энергоэффективную модель, которая поддерживает сопоставимый уровень точности с оригиналом. Это особенно важно для развертывания сложных AI-моделей в средах с ограниченными ресурсами, таких как периферийные устройства.
Как работает прунинг
Процесс прунинга обычно начинается после того, как модель глубокого обучения была полностью обучена. Он основан на принципе, что многие большие модели перепараметризованы, то есть содержат много весов и нейронов, которые вносят очень малый вклад в окончательный прогноз. Распространенным методом выявления этих неважных компонентов является анализ их величины; параметры со значениями, близкими к нулю, считаются менее значимыми. После выявления эти параметры удаляются или устанавливаются в ноль. После процесса прунинга теперь уже уменьшенная сеть обычно подвергается тонкой настройке, которая включает в себя повторное обучение модели в течение еще нескольких эпох. Этот шаг помогает оставшимся параметрам адаптироваться к архитектурным изменениям и восстановить любую производительность, которая могла быть потеряна во время прунинга. Этот итеративный процесс прунинга и тонкой настройки можно повторять для достижения желаемого баланса между размером модели и производительностью, как описано в основополагающих исследовательских работах, таких как «Глубокое сжатие».
Типы прунинга
Методы прунинга можно разделить на категории в зависимости от того, что удаляется из сети:
- Неструктурированная обрезка (обрезка весов): Этот метод удаляет отдельные веса из сети на основе определенного критерия, такого как их величина. Это приводит к разреженной модели, в которой многие соединения обнуляются. Хотя это может значительно уменьшить количество параметров, это не всегда приводит к более быстрому выводу на стандартном оборудовании, таком как ЦП или графические процессоры, без специализированных библиотек программного обеспечения, таких как инструменты NVIDIA для разреженных моделей.
 - Структурная обрезка: Этот подход удаляет целые структурные компоненты сети, такие как нейроны, каналы или даже целые слои в сверточной нейронной сети (CNN). Поскольку он удаляет регулярные блоки сети, он напрямую уменьшает размер модели и вычислительные требования таким образом, что стандартное оборудование может легко использовать, что часто приводит к более предсказуемому ускорению. Такие инструменты, как DeepSparse от Neural Magic, предназначены для ускорения логического вывода на ЦП для таких структурированных разреженных моделей.
 
Основные фреймворки машинного обучения, такие как PyTorch и TensorFlow, предлагают встроенные утилиты и учебные пособия по реализации прунинга.
Применение в реальном мире
Прунинг необходим для развертывания мощных AI-моделей в практических сценариях, где вычислительные ресурсы ограничены.
- Оптимизация обнаружения объектов на периферийных устройствах: Модели, такие как Ultralytics YOLO, используются для обнаружения объектов в реальном времени. Путем обрезки модели, такой как YOLOv8, ее можно развернуть на маломощных периферийных устройствах, таких как Raspberry Pi или NVIDIA Jetson. Это позволяет использовать такие приложения, как интеллектуальное наблюдение на устройстве, оптимизация управления дорожным движением и интеграция компьютерного зрения в робототехнику.
 - Запуск больших языковых моделей (LLM) локально: Прунинг может значительно уменьшить объем памяти, занимаемый большими языковыми моделями (LLM), основанными на архитектурах, таких как Transformer. Модель LLM после прунинга может работать непосредственно на смартфоне или ноутбуке для решения задач обработки естественного языка (NLP), таких как суммирование текста или локальные виртуальные помощники. Это повышает скорость реагирования и улучшает конфиденциальность данных, поскольку данные пользователя хранятся на устройстве, что является ключевым принципом для таких организаций, как Electronic Frontier Foundation (EFF).
 
Удаление незначащих связей в сравнении с другими методами оптимизации
Прунинг — один из нескольких методов оптимизации моделей и часто используется вместе с другими. Важно отличать его от связанных понятий:
- Квантование модели: Этот метод снижает числовую точность весов и активаций модели (например, с 32-битных чисел с плавающей запятой до 8-битных целых чисел). Это уменьшает размер модели и может ускорить вычисления, особенно на оборудовании со специализированной поддержкой. В отличие от обрезки, которая удаляет параметры, квантование сжимает их.
 - Дистилляция знаний: В этом методе меньшая модель-"ученик" обучается воспроизводить вывод большей, предварительно обученной модели-"учителя". Цель состоит в том, чтобы передать полученные знания более компактной архитектуре, тогда как прунинг изменяет существующую архитектуру.
 
Эти методы не являются взаимоисключающими. Распространенным рабочим процессом является сначала прореживание модели для удаления избыточных параметров, а затем применение квантования к прореженной модели для максимальной эффективности. Оптимизированные модели затем можно экспортировать в стандартные форматы, такие как ONNX, с помощью функции экспорта Ultralytics для широкого развертывания в различных inference engines (механизмах логического вывода). Платформы, такие как Ultralytics HUB, могут помочь управлять всем жизненным циклом, от обучения до развертывания оптимизированной модели.