Обрезка моделей - это техника, используемая в машинном обучении для оптимизации обученных моделей путем уменьшения их размера и сложности. Это достигается путем выявления и удаления менее важных параметров, таких как веса или связи в нейронной сети (НС), которые вносят минимальный вклад в общую производительность модели. Цель - создать более компактные и быстрые модели, которые требуют меньше вычислительной мощности и памяти, что делает их более эффективными без существенного снижения точности. Этот процесс представляет собой особый тип обрезки, применяемый непосредственно к моделям машинного обучения.
Зачем использовать обрезку моделей?
Основной мотивацией для обрезки моделей является эффективность. Современные модели глубокого обучения, хотя и являются мощными, могут быть очень большими и требовательными к вычислениям. Это создает проблемы при развертывании моделей, особенно на устройствах с ограниченными ресурсами, таких как смартфоны или пограничные вычислительные системы. Обрезка моделей решает эти проблемы следующим образом:
- Уменьшение размера модели: Маленькие модели требуют меньше места для хранения, что упрощает их развертывание на таких устройствах, как те, на которых работает приложениеUltralytics HUB.
- Увеличение скорости вывода: с меньшим количеством параметров обрезанные модели выполняют вычисления быстрее, уменьшая задержку вывода. Это очень важно для приложений, работающих с выводами в реальном времени.
- Снижение энергопотребления: Меньшее количество вычислений означает меньшее энергопотребление, что важно для устройств с питанием от батарей и для продвижения устойчивых практик ИИ.
- Минимизация оверфиттинга: Удаление лишних параметров иногда помогает моделям лучше обобщаться на новые данные, что потенциально уменьшает оверфиттинг.
Виды обрезки моделей
Техники обрезки моделей различаются, но в целом делятся на категории в зависимости от того, что именно удаляется:
- Обрезка весов (неструктурированная): Отдельные веса или связи в сети, которые имеют низкую величину или важность, устанавливаются на ноль. Это часто приводит к разреженным моделям, но может потребовать специализированного оборудования или программного обеспечения для оптимального ускорения.
- Обрезка нейронов/фильтров (структурная): Удаляются целые нейроны, фильтры (в конволюционных нейросетях (CNN)) или другие структурные компоненты. Это обычно приводит к созданию более регулярных, менее плотных моделей, которые легче ускорить на стандартном оборудовании с помощью таких инструментов, как NVIDIA TensorRT.
Обрезка может быть применена после обучения или интегрирована в процесс обучения. Часто обрезанная модель требует некоторой тонкой настройки (дополнительного обучения), чтобы восстановить потерянную точность. Ты можешь изучить различные стратегии обрезки в таких ресурсах, как PyTorch Pruning Tutorial.
Применение в реальном мире
Обрезка моделей ценна во многих областях:
- Мобильное компьютерное зрение: Ultralytics YOLO модели, используемые для обнаружения объектов на мобильных устройствах, могут быть обрезаны для эффективной работы, что позволяет проводить анализ в реальном времени прямо на устройстве, не нуждаясь в постоянном подключении к облаку. Это крайне важно для приложений, развернутых на платформах вроде Raspberry Pi или использующих ускорители вроде Edge TPU отGoogle.
- Автономные системы: В самоуправляемых автомобилях или беспилотниках модели должны мгновенно обрабатывать данные с датчиков. Обрезка сложных моделей восприятия помогает добиться низкой задержки, необходимой для безопасной навигации и принятия решений, которые часто разворачиваются на таком оборудовании, как NVIDIA Jetson.
Обрезка модели по сравнению с другими техниками оптимизации
Обрезка моделей - это одна из нескольких техник оптимизации моделей. Важно отличать его от:
- Квантование модели: Уменьшает точность весов и активаций модели (например, с 32-битных плавающих чисел до 8-битных целых). Это также уменьшает размер и ускоряет вычисления, но работает за счет изменения типа данных, а не удаления параметров. Примеры см. в разделе "ОптимизацияTensorFlow Lite".
- Дистилляция знаний: Обучение меньшей модели "ученика" имитирует вывод большей, предварительно обученной модели "учителя". Цель - передать знания, создав компактную модель без непосредственной модификации учителя. Подробности читай в оригинальном документе Knowledge Distillation Paper.
Эти методы не являются взаимоисключающими и часто сочетаются с обрезкой для достижения максимального эффекта оптимизации. Например, модель может быть сначала обрезана, а затем квантована перед окончательным развертыванием. Руководство по оптимизации ты можешь найти в документацииUltralytics .