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

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

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

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

Основные концепции и механизмы

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

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

Типы усечения моделей

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

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

Обрезка против квантования

Хотя обе эти техники являются популярными методами оптимизации, важно отличать обрезку от квантования модели. Обрезка направлена на сокращение количества параметров (связей или нейронов), эффективно изменяя архитектуру модели. В В отличие от этого, квантование снижает точность этих параметров, например, преобразуя 32-битные числа с плавающей точкой в 8-битные целые числа. Эти методы часто дополняют друг друга; разработчик может сначала обрезать модель чтобы удалить избыточность, а затем квантовать ее, чтобы еще больше уменьшить объем памяти для развертывания. развертывания.

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

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

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

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

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

import torch
import torch.nn.utils.prune as prune

# Initialize a standard convolutional layer
layer = torch.nn.Conv2d(in_channels=3, out_channels=64, kernel_size=3)

# Apply L1 unstructured pruning to remove 30% of the connections
# This sets the smallest 30% of weights (by absolute value) to zero
prune.l1_unstructured(layer, name="weight", amount=0.3)

# Verify sparsity: calculate the percentage of zero parameters
sparsity = float(torch.sum(layer.weight == 0)) / layer.weight.nelement()
print(f"Layer sparsity: {sparsity:.2%}")

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

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

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