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

Оптимизация моделей — это процесс, направленный на повышение эффективности и performance моделей machine learning. Совершенствуя структуру и функции модели, оптимизация позволяет достигать лучших результатов с минимальными computational resources и сокращенным временем training и evaluation.
Этот процесс особенно важен в таких областях, как computer vision, где models часто требуют значительных ресурсов для анализа complex images. В условиях ограниченных ресурсов, таких как mobile devices или периферийные системы, оптимизированные модели могут успешно работать с ограниченными ресурсами, сохраняя при этом точность.
Для достижения оптимизации моделей обычно используется несколько методов, включая настройку гиперпараметров, прунинг моделей, квантование моделей и смешанную точность. В этой статье мы рассмотрим эти методы и те преимущества, которые они приносят в computer vision applications. Давай начнем!
Понимание оптимизации моделей#
Computer vision models обычно имеют deep layers и сложную структуру, которые отлично подходят для распознавания сложных паттернов в изображениях, но они также могут быть весьма требовательны к processing power. Когда эти модели deployed на устройствах с ограниченным «железом», таких как mobile phones или edge devices, они могут столкнуться с определенными трудностями или ограничениями.
Ограниченные вычислительная мощность, память и энергопотребление на этих устройствах могут привести к заметному падению performance, поскольку модели с трудом справляются с нагрузкой. Методы оптимизации моделей играют ключевую роль в решении этих проблем. Они помогают упростить модель, снизить ее computational needs и обеспечить ее эффективную работу даже в условиях ограниченных ресурсов. Оптимизацию моделей можно выполнить путем упрощения model architecture, снижения precision вычислений или удаления ненужных компонентов, чтобы сделать модель более легкой и быстрой.

Рис 1. Причины для оптимизации твоих моделей. Изображение автора.
Вот некоторые из наиболее распространенных методов optimization моделей, которые мы подробно рассмотрим в следующих разделах:
- Hyperparameter tuning: этот метод предполагает систематическую настройку гиперпараметров, таких как скорость обучения и размер батча, для улучшения производительности модели.
- Model pruning: этот метод удаляет ненужные веса и связи из нейронной сети, снижая ее сложность и вычислительные затраты.
- Model quantization: квантование заключается в снижении точности весов и активаций модели (обычно с 32-битной до 16-битной или 8-битной), что значительно уменьшает объем памяти и требования к вычислениям.
- Precision adjustments: также известный как обучение со смешанной точностью, этот метод предполагает использование различных форматов точности для разных частей модели и оптимизацию использования ресурсов без ущерба для точности.
Разбор: гиперпараметры в моделях машинного обучения#
Ты можешь помочь модели учиться и работать лучше, настроив ее гиперпараметры — настройки, которые определяют, как модель учится на данных. Hyperparameter tuning — это метод оптимизации этих параметров, повышающий эффективность и accuracy модели. В отличие от параметров, которые модель изучает во время training, гиперпараметры — это заранее заданные значения, которые направляют процесс обучения.
Давай разберем примеры гиперпараметров, которые можно настраивать:
- Learning rate: этот параметр управляет размером шага, который модель делает для настройки своих внутренних весов. Более высокая скорость обучения может ускорить обучение, но создает риск пропустить оптимальное решение, в то время как более низкая скорость может быть более точной, но медленной.
- Batch size: он определяет, сколько примеров данных обрабатывается на каждом шаге обучения. Большие размеры батча обеспечивают более стабильное обучение, но требуют больше памяти. Меньшие батчи обучаются быстрее, но могут быть менее стабильными.
- Epochs: с помощью этого параметра ты можешь определить, сколько раз модель увидит весь dataset. Большее количество эпох может повысить точность, но создает риск overfitting.
- Kernel size: он определяет размер фильтра в Convolutional Neural Networks (CNN). Более крупные ядра захватывают более широкие закономерности, но требуют больших вычислительных затрат; меньшие ядра фокусируются на более мелких деталях.
Как работает настройка гиперпараметров#
Настройка гиперпараметров обычно начинается с определения диапазона возможных значений для каждого гиперпараметра. Затем алгоритм поиска исследует различные комбинации в этих диапазонах, чтобы определить настройки, обеспечивающие best performance.
Распространенные методы настройки включают сеточный поиск (grid search), случайный поиск (random search) и байесовскую оптимизацию. Сеточный поиск тестирует каждую возможную комбинацию значений в заданных диапазонах. Случайный поиск выбирает комбинации случайным образом, часто быстрее находя эффективные настройки. Байесовская оптимизация использует вероятностную модель для прогнозирования перспективных значений гиперпараметров на основе предыдущих результатов. Этот подход обычно сокращает количество необходимых проб.
В конечном счете для каждой комбинации гиперпараметров evaluated производительность модели. Этот процесс повторяется до тех пор, пока не будут достигнуты желаемые результаты.
Гиперпараметры против параметров модели#
Работая над настройкой гиперпараметров, ты можешь задаться вопросом, в чем разница между гиперпараметрами и model parameters.
Гиперпараметры — это значения, задаваемые до training, которые управляют тем, как model учится, например, скорость обучения или размер батча. Эти настройки фиксируются во время обучения и напрямую влияют на учебный процесс. Параметры модели, с другой стороны, изучаются самой моделью в процессе обучения. К ним относятся веса и biases, которые настраиваются по мере обучения модели и в конечном итоге определяют ее predictions. По сути, гиперпараметры формируют процесс обучения, в то время как параметры модели являются результатом этого процесса обучения.

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

Fig3. До и после прунинга модели.
После обучения модели такие методы, как прунинг на основе величины (magnitude-based pruning) или анализ чувствительности, позволяют оценить важность каждого параметра. Затем параметры с низкой важностью удаляются с помощью одного из трех основных методов: прунинг весов, прунинг нейронов или структурный прунинг.
Прунинг весов удаляет отдельные связи с минимальным влиянием на результат. Прунинг нейронов удаляет целые нейроны, выходы которых мало влияют на работу модели. Структурированный прунинг устраняет более крупные разделы, такие как сверточные фильтры или нейроны в полносвязных слоях, оптимизируя эффективность модели. После завершения прунинга модель проходит повторное обучение для fine-tune оставшихся параметров, гарантируя сохранение высокой точности в уменьшенном виде.
Снижение задержки в ИИ-моделях с помощью квантования#
Model quantization уменьшает количество битов, используемых для представления весов и активаций модели. Обычно она преобразует высокоточные 32-битные числа с плавающей запятой в меньшую точность, такую как 16-битные или 8-битные целые числа. За счет снижения битовой точности квантование значительно уменьшает model's size, объем памяти и вычислительные затраты.
В computer vision стандартными являются 32-битные числа с плавающей запятой, но переход на 16-битные или 8-битные может повысить эффективность. Существует два основных типа квантования: квантование весов и квантование активаций. Квантование весов снижает точность весов модели, балансируя между уменьшением размера и точностью. Квантование активаций снижает точность активаций, дополнительно уменьшая требования к памяти и вычислениям.

Fig 4. Пример квантования из 32-битного числа с плавающей запятой в 8-битное целое число.
Как смешанная точность ускоряет ИИ-инференс#
Mixed precision — это метод, который использует различную числовую точность для различных частей neural network. Сочетая значения более высокой точности, такие как 32-битные числа с плавающей запятой, со значениями более низкой точности, такими как 16-битные или 8-битные числа с плавающей запятой, смешанная точность позволяет computer vision models ускорить обучение и сократить использование памяти без ущерба для точности.
Во время обучения смешанная точность достигается за счет использования более низкой точности в определенных слоях при сохранении более высокой точности там, где это необходимо по всей сети. Это выполняется с помощью приведения типов (casting) и масштабирования потерь (loss scaling). Приведение типов преобразует типы данных между различными уровнями точности по мере необходимости для модели. Масштабирование потерь регулирует пониженную точность, чтобы предотвратить численный антипереполнение (underflow), обеспечивая стабильное обучение. Смешанная точность особенно полезна для больших моделей и больших размеров батчей.

Fig 5. Обучение со смешанной точностью использует как 16-битные (FP16), так и 32-битные (FP32) типы с плавающей запятой.
Баланс между точностью модели и эффективностью#
Теперь, когда мы рассмотрели несколько методов оптимизации моделей, давай обсудим, как выбрать подходящий в зависимости от твоих конкретных потребностей. Выбор зависит от таких факторов, как доступное hardware, вычислительные ограничения и ограничения памяти deployment environment, а также требуемый уровень точности.
Например, более мелкие и быстрые модели лучше подходят для мобильных устройств с ограниченными ресурсами, в то время как более крупные и точные модели можно использовать на высокопроизводительных системах. Вот как каждый метод соотносится с different goals:
- Прунинг: идеально подходит для уменьшения размера модели без существенного влияния на точность, что делает его отличным выбором для устройств с ограниченными ресурсами, таких как мобильные телефоны или устройства Интернета вещей (IoT).
- Quantization: отличный вариант для уменьшения размера модели и ускорения inference, особенно на мобильных устройствах и embedded systems с ограниченной памятью и вычислительной мощностью. Он хорошо подходит для приложений, где допустимо небольшое снижение точности.
- Mixed precision: разработанный для крупномасштабных моделей, этот метод снижает использование памяти и ускоряет обучение на таком «железе», как графические процессоры (GPU) и TPUs, которые поддерживают операции со смешанной точностью. Он часто используется в высокопроизводительных задачах, где важна эффективность.
- Hyperparameter tuning: хотя этот процесс требует больших вычислительных затрат, он необходим для приложений, требующих высокой точности, таких как medical imaging или autonomous driving.
Основные выводы#
Оптимизация моделей — это жизненно важная часть машинного обучения, особенно для развертывания ИИ в реальных приложениях. Такие методы, как настройка гиперпараметров, прунинг, квантование и смешанная точность, помогают улучшить производительность, эффективность и использование ресурсов моделей компьютерного зрения. Эти оптимизации делают модели быстрее и менее требовательными к ресурсам, что идеально подходит для устройств с ограниченной памятью и мощностью процессора. Оптимизированные модели также легче масштабировать и развертывать на различных платформах, что позволяет создавать ИИ-решения, которые являются эффективными и адаптируемыми для широкого круга задач.
Посети GitHub repository Ultralytics и присоединяйся к нашему community, чтобы узнать больше о применении ИИ в manufacturing и agriculture.






