Автор: Суджит Рави, старший сотрудник и научный сотрудник группы Google Expander
Эта статья является оригинальной статьей Google Developers, не перепечатывайте ее без разрешения!
Успешные модели глубокого обучения часто требуют много вычислительных ресурсов, памяти и мощности для обучения и запуска, и как только вы добьетесь их хорошей работы на мобильных устройствах и устройствах IoT, вы часто упираетесь в стену. Благодаря мобильному машинному обучению вы можете запускать логические выводы непосредственно на устройстве, защищая конфиденциальность данных независимо от состояния подключения и прав доступа. Мобильные системы машинного обучения, такие как MobileNets и ProjectionNets, устраняют узкие места ресурсов на мобильных устройствах, оптимизируя эффективность модели. Но что, если вы хотите обучить свою собственную модель устройства для своего личного мобильного приложения?
На ежегодной конференции разработчиков Google I/O мы анонсировали набор инструментов ML Kit, который сделает машинное обучение доступным для всех мобильных разработчиков. Технология «Learn2Compress», разработанная нашей исследовательской группой, предоставляет услугу автоматического сжатия моделей, которая является одной из основных функций инструментария машинного обучения и также будет доступна в ближайшее время. Learn2Compress может реализовать пользовательские мобильные модели глубокого обучения в TensorFlow Lite, которые могут эффективно работать на мобильных устройствах, и разработчикам не нужно беспокоиться о проблемах оптимизации памяти и скорости. Мы рады скоро использовать Learn2Compress для классификации изображений в наборе инструментов ML Kit. Learn2Compress изначально будет доступен для небольшого числа разработчиков, а в ближайшие месяцы станет доступен для более широкой аудитории. Если вы заинтересованы в использовании этой функции для создания собственных моделей, вы можете зарегистрироваться здесь. Примечание: ссылка здесьdocs.Google.com/forms//oh/1…
Принцип работы
Learn2Compress включает структуры обучения, представленные в предыдущих исследованиях, таких как ProjectionNet, и сочетает в себе несколько современных методов сжатия моделей нейронных сетей. Он принимает предоставленную пользователем большую предварительно обученную модель TensorFlow в качестве входных данных, выполняет обучение и оптимизацию и автоматически создает меньшие, более эффективные с точки зрения памяти, энергоэффективные и готовые к логическим выводам мобильные устройства с минимальной потерей точности.
Для этого Learn2Compress использует несколько методов оптимизации и сжатия нейронных сетей, в том числе:
Уменьшите размер модели, удалив веса или операции, которые наименее важны для прогнозирования, например веса с низкой оценкой. Это хорошо работает для моделей на устройстве, включающих разреженные входные или выходные данные, и может быть уменьшено в 2 раза при сохранении 97% исходного качества прогноза. Методы квантования особенно эффективны в приложениях с большим объемом обучения и могут повысить скорость логического вывода за счет уменьшения количества битов, используемых для весов модели и активаций. Например, использование 8-битной фиксированной точки вместо плавающей может ускорить вывод модели, снизить энергопотребление и дополнительно уменьшить размер в 4 раза. Следуйте стратегии обучения «учитель-ученик», используя совместный подход к обучению и дистилляции — мы используем более крупную сеть учителей (в данном случае модель TensorFlow, предоставленную пользователем) для обучения компактной сети учеников (модель на устройстве), которая является точной. потери минимальны.
Совместное обучение и перегонка сжатых студенческих моделейСеть учителей может быть фиксированной (например, дистилляция) или совместно оптимизированной, и даже несколько моделей учеников разных размеров могут обучаться одновременно. Таким образом, в отличие от одной модели, Learn2Compress может одновременно генерировать несколько мобильных моделей разного размера и скорости вывода, позволяя разработчикам выбирать ту, которая лучше всего соответствует потребностям их приложения. Эти и другие методы, такие как трансферное обучение, также делают процесс сжатия более эффективным и масштабируемым для крупномасштабных наборов данных.
Каков реальный эффект?
Чтобы продемонстрировать эффективность Learn2Compress, мы используем его для создания компактных мобильных моделей, включающих несколько современных глубоких сетей для задач с изображениями и естественным языком, таких как MobileNets, NASNet, Inception, ProjectionNet и т. д. Для данной задачи и набора данных мы можем создать несколько мобильных моделей с разной скоростью вывода и размерами моделей.
Точность различных размеров модели Learn2Compress и полноразмерной базовой сети в задачах классификации изображений CIFAR-10 (слева) и ImageNet (справа). Студенческие сети, используемые для создания сжатых вариантов, используемых в задачах CIFAR-10 и ImageNet, были смоделированы с использованием архитектур, вдохновленных NASNet и MobileNet, соответственно.Для классификации изображений Learn2Compress может создавать небольшие и быстрые модели с хорошей точностью предсказания, подходящие для мобильных приложений. Например, в задаче ImageNet модель, реализованная Learn2Compress, в 22 раза меньше, чем базовая линия Inception v3, и в 4 раза меньше, чем базовая линия MobileNet v1, с падением точности всего на 4,6–7%. В CIFAR-10 совместное обучение нескольких моделей Learn2Compress с общими параметрами занимает всего на 10 % больше времени обучения, чем одна большая модель Learn2Compress, но создает 3 сжатые модели, которые в 94 раза меньше, в 27 раз быстрее и в 36 раз дешевле, качество прогнозирования хорошее. (90-95% точность ТОП-1).
Стоимость вычислений и средняя задержка прогнозирования (на телефонах Pixel) моделей Baseline и Learn2Compress для задачи классификации изображений CIFAR-10. Оптимизированная модель Learn2Compress использует сетевую архитектуру в стиле NASNet.Мы также с нетерпением ждем возможности узнать, как Learn2Compress работает в случаях использования разработчиками. Например, Fishbrain, социальная платформа для любителей рыбной ловли, использует Learn2Compress для сжатия существующей облачной модели классификации изображений (размером 80 МБ+ с точностью 91,8% Top-3) в меньшую мобильную модель размером менее 5 МБ с аналогичной точностью. В некоторых случаях мы наблюдаем, что сжатая модель может даже немного превосходить по точности исходную большую модель из-за лучших эффектов регуляризации.
С будущими разработками в области машинного обучения и глубокого обучения мы продолжим совершенствовать Learn2Compress и расширим его для большего количества вариантов использования, помимо классификации изображений. Мы очень рады и с нетерпением ждем скорейшего развертывания этой службы с помощью службы сжатия ML Kit в облаке. Мы надеемся, что это поможет разработчикам автоматически создавать и оптимизировать свои собственные модели машинного обучения на устройствах, чтобы они могли сосредоточиться на создании отличных приложений и интересных пользовательских интерфейсов, включая компьютерное зрение, естественный язык и другие приложения машинного обучения.