Model Pruning
Узнай, как прунинг (обрезка) моделей уменьшает размер и сложность нейронной сети для граничного ИИ. Изучи стратегии оптимизации Ultralytics YOLO26 для более быстрого инференса на мобильных устройствах.
Прунинг (прореживание) моделей — это техника машинного обучения, используемая для уменьшения размера и вычислительной сложности нейронной сети путем систематического удаления ненужных параметров. Подобно садовнику, который обрезает засохшие или чрезмерно разросшиеся ветви, чтобы дерево лучше росло, разработчики «обрезают» искусственные сети, чтобы сделать их быстрее, компактнее и энергоэффективнее. Этот процесс необходим для развертывания современных архитектур глубокого обучения на устройствах с ограниченными ресурсами, таких как смартфоны, встроенные датчики и оборудование для периферийных вычислений (edge computing).
Link to this sectionКак работает прунинг моделей#
Основная идея прунинга заключается в том, что глубокие нейронные сети часто «перепараметризованы», то есть они содержат значительно больше весов и смещений, чем строго необходимо для решения конкретной задачи. В процессе обучения модель изучает огромное количество связей, но не все они вносят одинаковый вклад в конечный результат. Алгоритмы прунинга анализируют обученную модель, чтобы выявить эти избыточные или неинформативные связи — обычно те, чьи веса близки к нулю, — и удаляют их.
Жизненный цикл прунинга модели обычно включает следующие этапы:
-
Обучение: Большая модель обучается до сходимости, чтобы уловить сложные признаки.
-
Прунинг: Параметры с низкой важностью обнуляются или физически удаляются из структуры сети.
-
Дообучение (Fine-Tuning): Модель проходит вторичный раунд дообучения, чтобы оставшиеся параметры могли адаптироваться и восстановить точность, потерянную на этапе прунинга.
Эта методология часто ассоциируется с гипотезой лотерейного билета, которая предполагает, что плотные сети содержат более мелкие изолированные подсети («выигрышные билеты»), способные достичь сопоставимой с исходной моделью точности, если их обучать отдельно.
Link to this sectionТипы стратегий прунинга#
Методы прунинга обычно классифицируются в зависимости от структуры удаляемых компонентов.
- Неструктурированный прунинг (Unstructured Pruning): Этот подход удаляет отдельные веса в любом месте модели на основе определенного порога (например, величины веса). Хотя это эффективно сокращает количество параметров, в результате получаются разреженные матрицы, которые стандартному оборудованию бывает трудно обрабатывать эффективно. Без специализированного программного обеспечения или аппаратных ускорителей неструктурированный прунинг может не дать значительного прироста скорости.
- Структурированный прунинг (Structured Pruning): Этот метод удаляет целые геометрические структуры, такие как каналы, фильтры или слои в сверточной нейронной сети (CNN). Благодаря сохранению структуры плотной матрицы, прунированная модель остается совместимой со стандартным оборудованием GPU и CPU, что приводит к прямому улучшению задержки вывода и пропускной способности.
Link to this sectionРеальные приложения#
Прунинг является критически важным инструментом для Edge AI, позволяя сложным моделям работать в средах, где облачное подключение недоступно или слишком медленно.
- Мобильное обнаружение объектов: Приложения на мобильных устройствах, такие как перевод речи в реальном времени или дополненная реальность, используют прунированные модели для экономии заряда батареи и уменьшения использования памяти. Оптимизированные архитектуры, такие как YOLO26, часто являются предпочтительной основой для этих задач из-за их естественной эффективности.
- Автомобильная безопасность: Самоуправляемые автомобили и автономные транспортные средства требуют принятия решений за доли секунды. Прунированные модели позволяют бортовым компьютерам обрабатывать видеопотоки с высоким разрешением для обнаружения пешеходов без задержек, вызванных передачей данных на сервер.
- Промышленный IoT: В производстве системы визуального контроля на сборочных линиях используют легковесные модели для обнаружения дефектов. Прунинг гарантирует, что эти системы могут работать на экономичных микроконтроллерах, а не на дорогих серверных стойках.
Link to this sectionПрунинг против смежных методов оптимизации#
Хотя прунинг моделей — мощный инструмент, его часто путают с другими методами оптимизации моделей или используют их вместе.
- Прунинг против квантования: Прунинг уменьшает количество параметров (связей) в модели. В отличие от него, квантование моделей уменьшает точность этих параметров, например, путем преобразования 32-битных чисел с плавающей запятой в 8-битные целые числа. Оба метода часто комбинируются для максимизации эффективности при развертывании моделей.
- Прунинг против дистилляции знаний: Прунинг модифицирует исходную модель, удаляя ее части. Дистилляция знаний включает обучение совершенно новой, более компактной «модели-ученика» для имитации поведения более крупной «модели-учителя».
Link to this sectionПример реализации#
Следующий пример на Python демонстрирует, как применить неструктурированный прунинг к сверточному слою с помощью PyTorch. Это распространенный шаг перед экспортом моделей в оптимизированные форматы, такие как ONNX.
import torch
import torch.nn as nn
import torch.nn.utils.prune as prune
# Initialize a standard convolutional layer
module = nn.Conv2d(in_channels=1, out_channels=20, kernel_size=3)
# Apply unstructured pruning to remove 30% of the connections
# This sets the weights with the lowest L1-norm to zero
prune.l1_unstructured(module, name="weight", amount=0.3)
# Calculate and print the sparsity (percentage of zero elements)
sparsity = 100.0 * float(torch.sum(module.weight == 0)) / module.weight.nelement()
print(f"Layer Sparsity: {sparsity:.2f}%")Пользователям, которые хотят управлять всем жизненным циклом своих наборов данных и моделей — включая обучение, оценку и развертывание, — Ultralytics Platform предлагает оптимизированный интерфейс. Он упрощает процесс создания высокооптимизированных моделей, таких как YOLO26, и их экспорт в удобные для оборудования форматы, такие как TensorRT или CoreML.






