«Сжатие модели» относится к методам машинного обучения, позволяющим уменьшить размер обученных моделей. Большие модели могут обеспечить высокую точность, но часто это достигается за счет значительных требований к ресурсам. Методы сжатия направлены на сжатие моделей без существенного ущерба для производительности. Меньшие модели требуют меньше места для хранения, потребляют меньше памяти и вычислений во время вывода.
Сжатые модели позволяют развертывать устройства с ограниченными ресурсами, такие как смартфоны и встроенные системы, искусственный интеллект на устройствах, периферийные вычисления и компьютеры с бытовой электроникой. Эффективный вывод также ценен для крупных корпораций, которые выполняют вывод больших моделей через API, что позволяет им сократить вычислительные затраты и сократить время отклика для пользователей.
Сжатие модели не является дистилляцией модели, при которой обучается «отдельная» меньшая модель, имитирующая поведение ввода-вывода более крупной модели.
== Техники ==
Для сжатия модели используется несколько методов.
=== Обрезка ===
Сокращение делает большую модель разреженной, устанавливая для некоторых параметров ровно ноль. Это эффективно уменьшает количество параметров. Это позволяет использовать операции с разреженной матрицей|разреженной матрицей, которые выполняются быстрее, чем операции с плотной матрицей.
Критерии сокращения могут быть основаны на величинах параметров, статистической закономерности нейронной функции активации|активаций, матрицы Гессе|значениях Гессе и т. д.
=== Квантование ===
Квантование снижает числовую точность весов и активаций. Например, вместо того, чтобы хранить веса в виде 32-битных чисел с плавающей запятой, их можно представить с помощью 8-битных целых чисел. Параметры низкой точности занимают меньше места и требуют меньше вычислений для выполнения арифметических операций.
Также возможно квантовать некоторые параметры более агрессивно, чем другие, например, менее важный параметр может иметь точность 8 бит, а другой, более важный параметр, может иметь точность 16 бит. Для вывода таких моделей требуется арифметика смешанной точности|арифметика смешанной точности.
Квантованные модели также можно использовать во время обучения (а не после обучения). PyTorch реализует автоматическое преобразование смешанной точности (AMP), которое выполняет автоматическое приведение, градиентное масштабирование и масштабирование потерь.
=== Факторизация низкого ранга ===
Матрицы весов могут быть аппроксимированы матрицами низкого ранга (линейная алгебра)|ранга. Пусть W — весовая матрица формы m \times n. Низкоранговая аппроксимация — это W \approx UV^T, где U и V — матрицы форм m \times k, n \times k. Когда k мал, это одновременно уменьшает количество параметров, необходимых для приблизительного представления W, и ускоряет умножение матрицы на W.
Приближения низкого ранга можно найти с помощью разложения по сингулярным значениям (SVD). Выбор ранга для каждой весовой матрицы является гиперпараметром и совместно оптимизируется как смешанная задача дискретно-непрерывной оптимизации.
== Обучение ==
Сжатие модели обычно не связано с обучением, то есть модель сначала обучается без учета того, как ее можно сжать, а затем сжимается. Однако можно совместить сжатие модели с обучением.
Метод «обучить, затем сжать» обучает большую модель за небольшое количество шагов обучения (меньше, чем было бы, если бы она была обучена сходимости), а затем сильно сжимает модель. Обнаружено, что при том же вычислительном бюджете этот метод дает лучшую модель, чем слегка сжатые небольшие модели.
* Обзорные статьи
** ** ** ** Машинное обучение
Глубокое обучение
Подробнее: https://en.wikipedia.org/wiki/Model_compression
Сжатие модели ⇐ Васина Википедия
-
Автор темыwiki_en
- Всего сообщений: 94542
- Зарегистрирован: 16.01.2024
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
Мобильная версия