Ultralytics YOLO27: Вступи в список ожидания.
Лицензия YOLO
Назад к глоссарию Ultralytics

Model Pruning

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

Прунинг модели удаляет параметры, которые почти не влияют на результат обученной нейронной сети, — от отдельных весов до целых фильтров, голов внимания или слоёв, чтобы сделать модель компактнее и дешевле в запуске. Большинство сетей избыточно параметризованы, поэтому можно удалить значительную часть их весов с незначительным снижением точности, особенно если впоследствии модель дообучить. Метод прунинга с последующим переобучением, предложенный в 2015 году, сократил число параметров AlexNet с 61 миллиона до 6,7 миллиона, а VGG-16 — со 138 миллионов до 10,3 миллиона без потери точности на ImageNet. Прунинг — стандартный этап подготовки моделей для телефонов, камер и другого оборудования для периферийного ИИ; теперь его также применяют к большим языковым моделям (LLMs).

Как работает прореживание моделей#

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

Обрезка также изменила представления исследователей о размере сетей. Согласно гипотезе лотерейного билета, плотная сеть содержит небольшие подсети, которые при обучении отдельно, начиная с исходных начальных весов, достигают точности всей сети. Авторы гипотезы стабильно находили на MNIST и CIFAR-10 такие подсети размером менее 10–20% от исходной модели.

Неструктурированная и структурированная обрезка#

При неструктурированной обрезке отдельные веса обнуляются в произвольных местах тензора. Она позволяет добиться высокой разреженности при небольшом снижении точности, но форма тензоров не меняется, поэтому стандартные плотные ядра выполняют те же вычисления; для ускорения нужны разреженные ядра или поддержка на уровне оборудования. GPU NVIDIA начиная с поколения Ampere поддерживают один из таких шаблонов — разреженность 2:4, при которой обнуляются два из каждых четырёх последовательных весов, — и обеспечивают скорость вычислений до двух раз выше, чем для плотных данных. При структурированной обрезке удаляются целые фильтры, каналы, головы или слои. В результате получается более компактная плотная модель, которая быстрее работает на любом процессоре, однако удаление того же числа весов сильнее сказывается на точности. Удаление фильтра также требует удалить соответствующий входной канал следующего слоя, а библиотеки, такие как Torch-Pruning, автоматически отслеживают такие зависимости. Утилиты обрезки в PyTorch показывают различия между этими подходами:

import torch
from torch.nn.utils import prune

# Two identical convolution layers, one for each pruning style
torch.manual_seed(0)
a = torch.nn.Conv2d(16, 32, kernel_size=3)
b = torch.nn.Conv2d(16, 32, kernel_size=3)

# Unstructured: zero the 50% of individual weights with the smallest magnitude
prune.l1_unstructured(a, name="weight", amount=0.5)

# Structured: zero the 50% of output filters with the smallest L2 norm
prune.ln_structured(b, name="weight", amount=0.5, n=2, dim=0)

for name, layer in [("unstructured", a), ("structured", b)]:
    zeros = (layer.weight == 0).float().mean().item()
    empty = (layer.weight.flatten(1) == 0).all(dim=1).sum().item()
    print(f"{name}: {zeros:.0%} of weights zero, {empty} of 32 filters empty")

В обоих слоях обнулено 50% весов. Пустые фильтры есть только в структурированно обрезанном слое — 16 из 32; их удаление оставляет плотный слой с вдвое меньшим числом фильтров, что сокращает вычисления вдвое на обычном оборудовании. Оборудование, рассчитанное на работу с разреженными данными, также выигрывает от неструктурированной обрезки: интеграция CVflow компании Ambarella для Ultralytics YOLO, которую Ambarella поддерживает в собственной версии пакета, постепенно обрезает веса во время обучения YOLO и сохраняет разреженность при экспорте в ONNX для компиляции под периферийные ИИ-чипы Ambarella.

  • Квантование модели: Снижает точность представления всех весов, например с 32-битных чисел с плавающей запятой до 8-битных целых чисел, не удаляя сами веса. Обрезку и квантование часто сочетают: обрезка уменьшает число операций, а квантование удешевляет каждую из них.
  • Дистилляция знаний: Обучает небольшую модель-ученика имитировать большую модель-учителя; часто её применяют после структурированной обрезки, чтобы восстановить точность, потерянную при удалении целых фильтров или слоёв.
  • Dropout: Временно обнуляет случайные активации во время обучения, выступая в роли регуляризации; при инференсе используется полная сеть.

Обрезка больших языковых моделей#

Повторное обучение LLM после каждого этапа обрезки обходится слишком дорого, поэтому методы однократной обрезки удаляют параметры за один проход, используя небольшой калибровочный набор. Метод SparseGPT сократил разреженность моделей OPT с 175 миллиардами и BLOOM со 176 миллиардами параметров до 60% менее чем за 4,5 часа, лишь незначительно увеличив перплексию; он также поддерживает шаблон 2:4, который ускоряют GPU. Структурированная обрезка в сочетании с дистилляцией знаний позволяет создавать компактные плотные модели: на основе предварительно обученной модели с 15 миллиардами параметров компания NVIDIA создала модели Minitron с 8 и 4 миллиардами параметров, обрезав каналы эмбеддингов, нейроны MLP и головы внимания, а затем повторно обучив их, используя до 40 раз меньше токенов, чем при обучении с нуля.

Изучи решения

Компьютерное зрение в спорте

Компьютерное зрение в спорте

Узнай, как Ultralytics YOLO обеспечивает компьютерное зрение в спорте: отслеживание игроков и мяча, аналитика результатов, полезные выводы для тренеров и реабилитация спортсменов.
Подробнее
Компьютерное зрение для аэросъёмки

Компьютерное зрение для аэросъёмки

Превращай снимки с дронов и аэрофотоснимки в полезные данные в реальном времени для сельского хозяйства, аквакультуры, охраны природы и геопространственного анализа с Ultralytics YOLO.
Подробнее
Компьютерное зрение в аэрокосмической отрасли

Компьютерное зрение в аэрокосмической отрасли

Применяй компьютерное зрение в аэрокосмической отрасли с Ultralytics YOLO: для осмотра самолётов, обнаружения посторонних предметов на взлётно-посадочных полосах, наземного обслуживания аэропортов и выявления дефектов композитных материалов.
Подробнее
Компьютерное зрение в сфере безопасности

Компьютерное зрение в сфере безопасности

Защити любой объект с помощью моделей Ultralytics YOLO. ИИ на базе компьютерного зрения обеспечивает мониторинг периметра, обнаружение угроз, распознавание номерных знаков и безопасность на рабочем месте.
Подробнее
Компьютерное зрение в робототехнике

Компьютерное зрение в робототехнике

Создавай более интеллектуальные машины с моделями Ultralytics YOLO. ИИ на базе компьютерного зрения в робототехнике обеспечивает автономную навигацию, восприятие, отслеживание объектов и управление в реальном времени.
Подробнее
Компьютерное зрение в логистике

Компьютерное зрение в логистике

Оптимизируй логистику с моделями Ultralytics YOLO. Визуальный AI обеспечивает проверку посылок, сортировку, отслеживание транспорта и мониторинг безопасности на складе в реальном времени.
Подробнее
Компьютерное зрение в розничной торговле

Компьютерное зрение в розничной торговле

Переосмысли розничную торговлю с моделями Ultralytics YOLO. Визуальный AI обеспечивает отслеживание запасов, мониторинг полок, управление очередями и более глубокое понимание поведения покупателей.
Подробнее
Компьютерное зрение в здравоохранении

Компьютерное зрение в здравоохранении

Создавай решения для здравоохранения с моделями Ultralytics YOLO. Визуальный AI в здравоохранении ускоряет медицинскую визуализацию, улучшает диагностику и мониторинг пациентов.
Подробнее
Компьютерное зрение в производстве

Компьютерное зрение в производстве

Оптимизируй производство с моделями Ultralytics YOLO. Компьютерное зрение на базе ИИ обеспечивает контроль качества, обнаружение дефектов, контроль использования СИЗ и автоматизацию сборочных линий.
Подробнее
Компьютерное зрение в автомобильной отрасли

Компьютерное зрение в автомобильной отрасли

Применяй компьютерное зрение в автомобильной отрасли с моделями Ultralytics YOLO. Компьютерное зрение на базе ИИ повышает безопасность дорожного движения, улучшает помощь водителю и автоматизацию автомобилей, делая дороги умнее.
Подробнее
Компьютерное зрение в сельском хозяйстве

Компьютерное зрение в сельском хозяйстве

Внедряй ИИ для компьютерного зрения в умное сельское хозяйство с моделями Ultralytics YOLO. Используй их для мониторинга посевов, отслеживания скота и точного земледелия, чтобы повысить урожайность и эффективность.
Подробнее

Давай вместе строить будущее ИИ!

Начни свой путь в будущее машинного обучения