Оптимизируйте модели ИИ с помощью pruning — уменьшите сложность, повысьте эффективность и быстрее развертывайте на периферийных устройствах без ущерба для производительности.
Обрезка - важнейшая техника в Машинное обучение направлено на уменьшение размера и вычислительной сложности нейронной сети (НС) путем удаления ненужных параметров. Подобно обрезке мертвых ветвей дерева для стимулирования здорового роста, обрезка модели выявляет и удаление весов модели или связей, которые которые вносят минимальный вклад в выходной сигнал системы. Основная цель - создать разреженную модель, которая сохраняет высокую точность, при этом значительно снижая потребление памяти и улучшая время ожидания вывода. Этот процесс необходим для развертывания сложных архитектур, таких как Ultralytics YOLO11на устройствах с ограниченными ресурсами, где хранения и вычислительной мощности ограничены.
Как правило, процесс начинается с предварительно обученной модели. Алгоритмы анализируют сеть, чтобы найти параметры - часто часто представленных в виде тензоров, которые имеют значения, близкие к нулю, или оказывают ограниченное влияние на конечный прогноз. Эти параметры затем удаляются или "обнуляются". Поскольку удаление связей может временно ухудшить производительность, модель обычно подвергается процессу, называемому тонкой настройкой, в ходе которого ее переобучают в течение нескольких эпох, чтобы оставшиеся чтобы оставшиеся весовые коэффициенты смогли приспособиться и восстановить утраченную точность.
Существует две основные категории обрезки:
Важно отличать обрезку от других стратегий оптимизации модели, хотя они часто используются в тандеме:
Обрезка играет важную роль в обеспечении Edge AI в различных отраслях в различных отраслях:
Пока Ultralytics YOLO модели YOLO от Ultralytics оптимизированы изначально, разработчики могут экспериментировать с обрезкой, используя стандартные утилиты PyTorch . Следующий пример демонстрирует, как как применить неструктурированную обрезку к стандартному конволюционному слою, используемому в моделях компьютерного зрения.
import torch
import torch.nn.utils.prune as prune
from ultralytics.nn.modules import Conv
# Initialize a standard convolutional block used in YOLO models
layer = Conv(c1=64, c2=128)
# Apply L1 unstructured pruning to remove 30% of the lowest magnitude weights
prune.l1_unstructured(layer.conv, name="weight", amount=0.3)
# Verify the sparsity (percentage of zero weights)
sparsity = float(torch.sum(layer.conv.weight == 0)) / layer.conv.weight.nelement()
print(f"Layer sparsity achieved: {sparsity:.2%}")
Будущие достижения в области эффективной архитектуры, такие как грядущий YOLO26, нацелены на интеграцию этих В будущем в эффективную архитектуру будут интегрированы эти принципы оптимизации, что позволит создавать более компактные, быстрые и точные модели.