Yolo Vision Shenzhen
Шэньчжэнь
Присоединиться сейчас
Глоссарий

Прунинг (Удаление неструктурных связей)

Узнайте, как обрезка оптимизирует нейронные сети, такие как Ultralytics , путем удаления избыточных параметров. Изучите структурированные и неструктурированные методы для Edge AI.

Обрезка — это стратегическая методика оптимизации моделей, используемая для уменьшения размера и вычислительной сложности нейронных сетей путем удаления ненужных параметров. Подобно тому, как садовник обрезает мертвые или разросшиеся ветви, чтобы помочь дереву расти, алгоритмы обрезки выявляют и устраняют избыточные weights and biases , которые не вносят значительного вклада в предсказательную способность модели. Основная цель — создать сжатую, «разреженную» модель, которая сохраняет высокую точность, но потребляет значительно меньше памяти и энергии. Это сокращение необходимо для улучшения задержки вывода, что позволяет передовым архитектурам эффективно работать на аппаратном обеспечении с ограниченными ресурсами, таком как мобильные телефоны и встроенные устройства.

Механизмы и методология

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

Существует две основные категории стратегий обрезки:

  • Неструктурированная обрезка: этот метод удаляет отдельные веса в зависимости от их величины, независимо от их местоположения. Хотя он эффективно уменьшает общее количество параметров, он создает нерегулярные разреженные матрицы, которые стандартные ЦП и ГП могут с трудом обрабатывать эффективно без специализированного программного обеспечения.
  • Структурная обрезка: этот подход удаляет целые геометрические структуры, такие как нейроны, каналы или слои в сверточной нейронной сети (CNN). Благодаря сохранению матричной структуры структурная обрезка в высокой степени совместима со стандартными аппаратными ускорителями, что часто приводит к немедленному ускорению вывода в реальном времени.

Применение в реальном мире

Обрезка незаменима для обеспечения работы Edge AI в различных отраслях, где аппаратные ресурсы ограничены:

  1. Автономные дроны: беспилотные летательные аппараты, используемые для поисково-спасательных операций, полагаются на компьютерное зрение для навигации в сложных условиях. Модели обнаружения объектов с обрезкой позволяют этим устройствам обрабатывать видеопоток локально в режиме реального времени, избегая проблем с задержкой, связанных с облачной связью.
  2. Мобильное здравоохранение: портативные медицинские устройства для ультразвуковогоанализа используют упрощенные модели для detect непосредственно на устройстве. Это обеспечивает конфиденциальность данных пациентов и позволяет проводить сложную диагностику в отдаленных районах без доступа к Интернету.

Пример реализации

Хотя современные модели, такие как 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 . Это упрощает рабочий процесс от управления наборами данных до экспорта моделей в удобные для аппаратного обеспечения форматы, такие как ONNX или TensorRT.

Присоединяйтесь к сообществу Ultralytics

Присоединяйтесь к будущему ИИ. Общайтесь, сотрудничайте и развивайтесь вместе с мировыми новаторами

Присоединиться сейчас