Что такое оптимизация моделей? Краткое руководство
Узнай, как методы оптимизации моделей, такие как настройка гиперпараметров, прореживание и квантование моделей, помогают моделям компьютерного зрения работать эффективнее.

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

Рис. 1. Причины оптимизации моделей. Изображение подготовлено автором.
Ниже приведены наиболее распространенные методы оптимизации моделей, которые мы подробнее рассмотрим в следующих разделах:
- Настройка гиперпараметров: систематическая корректировка гиперпараметров, таких как скорость обучения и размер пакета, для повышения производительности модели.
- Прореживание моделей: метод удаления ненужных весов и связей из нейронной сети для снижения ее сложности и вычислительных затрат.
- Квантование моделей: квантование подразумевает снижение точности весов и активаций модели, обычно с 32 до 16 или 8 бит, что значительно уменьшает объем памяти и вычислительные требования.
- Корректировка точности: также известная как обучение со смешанной точностью, она предполагает использование разных форматов точности для разных частей модели и оптимизацию использования ресурсов без ущерба для точности.
Объяснение гиперпараметров в моделях машинного обучения#
Ты можешь помочь модели обучаться и работать лучше, настроив ее гиперпараметры — параметры, определяющие, как модель обучается на данных. Настройка гиперпараметров — это метод оптимизации этих параметров, повышающий эффективность и точность модели. В отличие от параметров, которые модель изучает во время обучения, гиперпараметры задаются заранее и направляют процесс обучения.
Рассмотрим несколько примеров гиперпараметров, которые можно настроить:
- Скорость обучения: этот параметр определяет размер шага, с которым модель корректирует свои внутренние веса. Более высокая скорость обучения может ускорить обучение, но повышает риск пропустить оптимальное решение, тогда как более низкая скорость может обеспечить большую точность, но замедлить процесс.
- Размер пакета: определяет, сколько образцов данных обрабатывается на каждом шаге обучения. Большие пакеты обеспечивают более стабильное обучение, но требуют больше памяти. Обучение на небольших пакетах проходит быстрее, но может быть менее стабильным.
- Число эпох: с помощью этого параметра можно определить, сколько раз модель увидит весь набор данных. Большее число эпох может повысить точность, но увеличивает риск переобучения.
- Размер ядра: определяет размер фильтра в сверточных нейронных сетях (CNNs). Ядра большего размера захватывают более общие закономерности, но требуют больше вычислений; ядра меньшего размера сосредоточены на мелких деталях.
Как работает настройка гиперпараметров#
Настройка гиперпараметров обычно начинается с определения диапазона возможных значений для каждого гиперпараметра. Затем алгоритм поиска перебирает различные комбинации в этих диапазонах, чтобы определить настройки, обеспечивающие наилучшую производительность.
К распространенным методам настройки относятся поиск по сетке, случайный поиск и байесовская оптимизация. Поиск по сетке проверяет все возможные комбинации значений в заданных диапазонах. Случайный поиск выбирает комбинации случайным образом и часто быстрее находит эффективные настройки. Байесовская оптимизация использует вероятностную модель для прогнозирования перспективных значений гиперпараметров на основе предыдущих результатов. Этот подход обычно сокращает необходимое число испытаний.
В конечном счете производительность модели оценивается для каждой комбинации гиперпараметров. Процесс повторяется до достижения желаемых результатов.
Гиперпараметры и параметры модели#
Работая над настройкой гиперпараметров, ты можешь задуматься, в чем разница между гиперпараметрами и параметрами модели.
Гиперпараметры — это значения, задаваемые до обучения и определяющие, как модель обучается, например скорость обучения или размер пакета. Эти настройки фиксированы во время обучения и напрямую влияют на процесс обучения. Параметры модели, напротив, модель изучает самостоятельно в процессе обучения. К ним относятся веса и смещения, которые изменяются по мере обучения модели и в конечном счете определяют ее предсказания. Иными словами, гиперпараметры формируют процесс обучения, а параметры модели являются результатом этого процесса.

Рис. 2. Сравнение параметров и гиперпараметров.
Почему прореживание моделей важно в глубоком обучении#
Прореживание моделей — это метод уменьшения размера, который удаляет ненужные веса и параметры модели, повышая ее эффективность. В компьютерном зрении, особенно при использовании глубоких нейронных сетей, большое число параметров, таких как веса и активации (промежуточные выходные данные, помогающие вычислить итоговый результат), может повышать сложность и вычислительные требования. Прореживание упрощает модель, выявляя и удаляя параметры, которые минимально влияют на производительность, в результате чего модель становится более компактной и эффективной.

Рис. 3. Модель до и после прореживания.
После обучения модели такие методы, как прореживание на основе величины или анализ чувствительности, могут оценить важность каждого параметра. Затем параметры с низкой важностью удаляются с помощью одного из трех основных методов: прореживания весов, прореживания нейронов или структурного прореживания.
Прореживание весов удаляет отдельные связи с минимальным влиянием на выходные данные. Прореживание нейронов удаляет целые нейроны, выходные данные которых вносят небольшой вклад в работу модели. Структурное прореживание удаляет более крупные фрагменты, например сверточные фильтры или нейроны в полносвязных слоях, повышая эффективность модели. После завершения прореживания модель повторно обучается, чтобы дообучить оставшиеся параметры и сохранить высокую точность в уменьшенном виде.
Снижение задержки в моделях ИИ с помощью квантования#
Квантование моделей уменьшает число битов, используемых для представления весов и активаций модели. Обычно значения с плавающей точкой высокой точности, занимающие 32 бита, преобразуются в значения более низкой точности, например 16- или 8-битные целые числа. Снижение разрядности значительно уменьшает размер модели, объем занимаемой памяти и вычислительные затраты.
В компьютерном зрении обычно используются 32-битные числа с плавающей точкой, но переход на 16 или 8 бит может повысить эффективность. Существует два основных типа квантования: квантование весов и квантование активаций. Квантование весов снижает точность весов модели, обеспечивая баланс между уменьшением размера и точностью. Квантование активаций снижает точность активаций, дополнительно уменьшая требования к памяти и вычислительным ресурсам.

Рис. 4. Пример квантования из 32-битного числа с плавающей точкой в 8-битное целое число.
Как смешанная точность ускоряет выполнение ИИ-моделей#
Смешанная точность — это метод, использующий разную числовую точность для различных частей нейронной сети. Сочетая значения высокой точности, например 32-битные числа с плавающей точкой, со значениями более низкой точности, например 16- или 8-битными числами с плавающей точкой, смешанная точность позволяет моделям компьютерного зрения ускорить обучение и снизить использование памяти без потери точности.
Во время обучения смешанная точность достигается за счет использования более низкой точности в определенных слоях и сохранения более высокой точности там, где это необходимо, во всей сети. Для этого применяются приведение типов и масштабирование функции потерь. Приведение типов преобразует типы данных между форматами разной точности в соответствии с требованиями модели. Масштабирование функции потерь компенсирует сниженную точность, предотвращая числовое исчезновение, и обеспечивает стабильное обучение. Смешанная точность особенно полезна для больших моделей и больших размеров пакета.

Рис. 5. При обучении со смешанной точностью используются типы данных с плавающей точкой на 16 (FP16) и 32 (FP32) бита.
Баланс между точностью и эффективностью модели#
Теперь, когда мы рассмотрели несколько методов оптимизации моделей, обсудим, как выбрать подходящий метод с учетом конкретных потребностей. Выбор зависит от таких факторов, как доступное оборудование, ограничения вычислительных ресурсов и памяти в среде развертывания, а также требуемый уровень точности.
Например, небольшие и быстрые модели лучше подходят для мобильных устройств с ограниченными ресурсами, тогда как крупные и более точные модели можно использовать в высокопроизводительных системах. Вот как каждый метод соответствует разным целям:
- Прореживание: идеально подходит для уменьшения размера модели без существенного влияния на точность, поэтому отлично подходит для устройств с ограниченными ресурсами, таких как мобильные телефоны или устройства Интернета вещей (IoT).
- Квантование: отличный вариант для уменьшения размера модели и ускорения вывода, особенно на мобильных устройствах и встроенных системах с ограниченными памятью и вычислительной мощностью. Оно хорошо подходит для приложений, допускающих небольшое снижение точности.
- Смешанная точность: предназначена для крупномасштабных моделей; этот метод снижает использование памяти и ускоряет обучение на оборудовании, таком как GPU и TPU, поддерживающем операции со смешанной точностью. Его часто применяют в высокопроизводительных задачах, где важна эффективность.
- Настройка гиперпараметров: несмотря на высокую вычислительную затратность, она необходима для приложений, требующих высокой точности, таких как медицинская визуализация или автономное вождение.
Основные выводы#
Оптимизация моделей — важная часть машинного обучения, особенно при развертывании ИИ в реальных приложениях. Такие методы, как настройка гиперпараметров, прореживание моделей, квантование и смешанная точность, помогают повысить производительность, эффективность и рациональность использования ресурсов в моделях компьютерного зрения. Благодаря этим оптимизациям модели работают быстрее и требуют меньше ресурсов, что особенно важно для устройств с ограниченными памятью и вычислительной мощностью. Оптимизированные модели также проще масштабировать и развертывать на разных платформах, создавая эффективные и адаптируемые решения ИИ для широкого спектра задач.
Посети репозиторий Ultralytics на GitHub и присоединяйся к нашему сообществу, чтобы узнать больше о применении ИИ в производстве и сельском хозяйстве.









