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

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

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

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

Как работает модельная обрезка

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

Жизненный цикл обрезанной модели обычно состоит из следующих этапов:

  1. Обучение: большая модель обучается до сходимости, чтобы уловить сложные особенности.
  2. Обрезка: параметры низкой важности обнуляются или физически удаляются из сетевой структуры.
  3. Точная настройка: модель проходит вторую стадию точной настройки, чтобы остальные параметры могли корректироваться и восстанавливать точность, утраченную на этапе обрезки.

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

Типы стратегий обрезки

Методы обрезки обычно классифицируются в зависимости от структуры удаляемых компонентов.

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

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

Обрезка является важным фактором, способствующим развитию Edge AI, позволяя сложным моделям работать в средах, где подключение к облаку недоступно или слишком медленно.

  • Обнаружение движущихся объектов: Приложения на мобильных устройствах, такие как перевод в реальном времени или дополненная реальность, используют обрезанные модели для экономии заряда батареи и уменьшения использования памяти. Оптимизированные архитектуры, такие как YOLO26, часто являются предпочтительной основой для этих задач из-за их врожденной эффективности.
  • Безопасность автомобилей: самоуправляемые автомобили и автономные транспортные средства требуют принятия решений за доли секунды . Обрезанные модели позволяют бортовым компьютерам обрабатывать изображения с камер высокого разрешения для обнаружения пешеходов без задержки, вызванной передачей данных на сервер.
  • Промышленный Интернет вещей: в производстве системы визуального контроля на сборочных линиях используют легкие модели для detect . Обрезка гарантирует, что эти системы могут работать на экономичных микроконтроллерах, а не на дорогостоящих серверных стойках.

Обрезка и связанные с ней методы оптимизации

Хотя обрезка моделей является мощным инструментом, ее часто путают с другими методами оптимизации моделей или используют вместе с ними.

  • Обрезка против квантования: Обрезка уменьшает количество параметров (соединений) в модели. В отличие от этого, квантование модели уменьшает точность этих параметров, например, путем преобразования 32-разрядных чисел с плавающей запятой в 8-разрядные целые числа. Оба метода часто комбинируются для максимальной эффективности развертывания модели.
  • Обрезка против дистилляции знаний: Обрезка изменяет исходную модель путем удаления частей. Дистилляция знаний включает в себя обучение совершенно новой, более компактной «учащейся» модели, чтобы она имитировала поведение более крупной «учительской» модели.

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

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

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

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

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