Google опубликовали API для оптимизации TensorFlow моделей. API позволяет сокращать размер модели с помощью методов кластеризации весов, прунинга и квантизации. Использование кластеризации весов сокращает использование памяти и увеличивает скорость работы модели на инференсе.
Что такое кластеризация весов
Кластеризация весов — это алгоритм оптимизации размера модели. Снижение размера происходит через замену уникальных значений параметров на меньшее количество уникальных значений. Разработчики имплементировали алгоритм, описанный в статье.
Преимущества кластеризации весов
У кластеризации весов есть одно явное преимущество — сокращение требуемого места на хранение модели и размера модели. Модель с общими параметрами лучше сжимается, чем модель с уникальными параметрами. Это похоже на разреженные (запруненные) модели. Только более высокий уровень сжатия достигается за счет сокращения количества уникальных весов, в то время как в прунинге часть весов ниже определенного трешхолда обнуляется.
Сжатие и сравнение точности моделей
Разработчики сравнили качество популярных моделей и их сжатых версий. Ниже видно, что точность моделей падает на максимум на пару процентов при сокращении размера в несколько раз.