Pruning
Узнай, как прунинг (pruning) оптимизирует нейронные сети, такие как Ultralytics YOLO26, путем удаления избыточных параметров. Исследуй структурированные и неструктурированные методы для Edge AI.
Прунинг — это стратегический метод оптимизации моделей, используемый для уменьшения размера и вычислительной сложности нейронных сетей путем удаления ненужных параметров. Подобно тому как садовник подрезает сухие или разросшиеся ветки, чтобы дерево лучше росло, алгоритмы прунинга находят и устраняют избыточные веса и смещения, которые вносят минимальный вклад в предсказательную способность модели. Главная цель заключается в создании сжатой «разреженной» модели, которая сохраняет высокую точность при значительно меньшем потреблении памяти и энергии. Такое уменьшение критически важно для снижения задержки инференса, что позволяет современным архитектурам эффективно работать на оборудовании с ограниченными ресурсами, таком как мобильные телефоны и встраиваемые устройства.
Механизмы и методология#
Современные модели глубокого обучения часто имеют избыточное количество параметров, то есть содержат гораздо больше связей, чем нужно для решения конкретной задачи. Прунинг использует это, удаляя связи со значениями близкими к нулю, предполагая, что они оказывают незначительное влияние на результат. После удаления параметров модель обычно проходит процесс тонкой настройки, в ходе которого она ненадолго дообучается для корректировки оставшихся весов и восстановления утраченной производительности. Эта концепция тесно связана с гипотезой о лотерейном билете, согласно которой крупные сети содержат более мелкие, высокоэффективные подсети, способные достигать схожей точности.
Существует две основные категории стратегий прунинга:
- Неструктурированный прунинг: Этот метод удаляет отдельные веса на основе их амплитуды независимо от их местоположения. Хотя он эффективно сокращает общее количество параметров, он создает нерегулярные разреженные матрицы, с эффективной обработкой которых стандартные ЦП и GPU могут испытывать трудности без специализированного программного обеспечения.
- Структурированный прунинг: Этот подход удаляет целые геометрические структуры, такие как нейроны, каналы или слои внутри сверточной нейронной сети (CNN). Благодаря сохранению структуры матрицы, структурированный прунинг отлично совместим со стандартными аппаратными ускорителями, что часто приводит к мгновенному ускорению инференса в реальном времени.
Реальные приложения#
Прунинг незаменим для реализации Edge AI в различных отраслях, где аппаратные ресурсы ограничены:
-
Автономные дроны: Беспилотные летательные аппараты, используемые для поисково-спасательных работ, полагаются на компьютерное зрение при навигации в сложных условиях. Урезанные модели обнаружения объектов позволяют этим устройствам обрабатывать видеопотоки локально в реальном времени, избегая проблем с задержкой, связанных со связью через облако.
-
Мобильное здравоохранение: Портативные медицинские приборы для анализа ультразвука используют урезанные модели для обнаружения аномалий прямо на устройстве. Это гарантирует конфиденциальность данных пациента и позволяет проводить сложную диагностику в отдаленных районах без доступа к интернету.
Пример реализации#
Хотя передовые модели вроде YOLO26 созданы для эффективности, разработчики могут применять прунинг для дальнейшей оптимизации слоев с помощью таких библиотек, как PyTorch. Следующий пример показывает, как применить неструктурированный прунинг к сверточному слою.
import torch
import torch.nn.utils.prune as prune
# Initialize a standard convolutional layer
layer = torch.nn.Conv2d(in_channels=3, out_channels=32, kernel_size=3)
# Apply L1 unstructured pruning to remove 30% of weights with the lowest magnitude
prune.l1_unstructured(layer, name="weight", amount=0.3)
# Verify sparsity (percentage of zero parameters)
sparsity = 100.0 * float(torch.sum(layer.weight == 0)) / layer.weight.nelement()
print(f"Sparsity achieved: {sparsity:.2f}%")Прунинг против смежных методов оптимизации#
Для эффективной оптимизации модели под развертывание полезно отличать прунинг от других стратегий:
- Квантование моделей: В отличие от прунинга, который удаляет связи, квантование снижает точность весов (например, преобразуя 32-битные числа с плавающей запятой в 8-битные целые числа). Оба метода могут использоваться совместно для максимального повышения эффективности на встраиваемых системах.
- Дистилляция знаний: Это предполагает обучение меньшей модели-
Для комплексного управления жизненным циклом, включая обучение, разметку и развертывание оптимизированных моделей, пользователи могут задействовать Ultralytics Platform. Это упрощает рабочий процесс от управления датасетами до экспорта моделей в удобные для железа форматы, такие как ONNX или TensorRT.






