Разработка и оптимизация высокоэффективной системы технического зрения терминального оборудования

машинное обучение

Текст / Ван Цифэй

Организовать / LiveVideoStack

Всем привет, это Ван Цифэй, старший инженер-программист из Google Research. Прежде всего, я хотел бы поблагодарить LiveVideoStack за приглашение выступить здесь. Сегодня моя тема — последние достижения в области эффективного машинного обучения на конечных устройствах.

Данная презентация будет состоять из пяти основных частей. Сначала я кратко расскажу о локальном машинном обучении. Во-вторых, я расскажу, как построить модель машинного обучения, удобную для мобильных устройств.В третьей и четвертой частях я представлю последние исследования по оптимизации машинного обучения на устройстве для мобильных приложений и машинному обучению на устройстве с сохранением конфиденциальности соответственно. . Наконец, я обсужу перспективы будущей работы над машинным интеллектом на стороне.

1. Встроенное машинное обучение

1.1 Что такое машинное обучение на устройстве

Благодаря большому успеху глубокого обучения устройства, машины и вещи вокруг нас становятся умнее. Такие устройства, как смартфоны, домашние помощники, носимые устройства, беспилотные автомобили, такие машины, как дроны, и такие машины, как выключатели света, домашние датчики, используют искусственный интеллект для поддержки автоматического перевода, автономного вождения, умных домов и других приложений. Например, смартфоны, домашние помощники, носимые устройства и т. д.; с точки зрения машин, есть беспилотные автомобили, дроны, а устройства в жизни включают такие машины, как выключатели света и домашние датчики. Все эти машины используют такие функции, как автоматический перевод, автономное вождение, умные дома и многое другое. Пользователи могут использовать машинный интеллект по своему усмотрению и получать от этого удовольствие.

В первые годы из-за очень ограниченных вычислительных ресурсов на стороне мобильных устройств большая часть машинного интеллекта реализовывалась с использованием облачных вычислений. В облачном машинном интеллекте исходные данные отправляются в облако для интеллектуального вывода, а результаты загружаются на локальное устройство. Такие облачные и клиентские системы могут страдать от задержек, проблем с конфиденциальностью и надежностью. Однако в последнее время мы заметили тенденцию к переносу интеллектуальных рассуждений из облака на периферию, чтобы решить эти проблемы.

1.2 Почему нам нужно портировать машинное обучение

В облачных приложениях машинного интеллекта длительные задержки взаимодействия между пользователями и устройствами часто вызваны нестабильной пропускной способностью сети. Обеспечивает стабильную низкую задержку взаимодействия за счет разгрузки машинного интеллекта на клиенте.

Машинному интеллекту требуется доступ к личным данным пользователя, таким как пользовательские изображения, документы, электронные письма, голос и т. д. Машины, загружающие все свои данные в облако, могут вызвать проблемы с конфиденциальностью и безопасностью. Поскольку машины на устройстве могут обрабатывать все данные только на локальном устройстве, личные данные пользователя могут быть защищены от атак вредоносных программ.

Наконец, перенос интеллектуальных вычислений на периферию обеспечивает постоянную доступность интеллектуальных сервисов, даже когда сети недоступны или облачные сервисы не работают.

Поэтому машинный интеллект на устройстве стал ключевым направлением исследований в области интеллекта и мобильности. Благодаря облачным вычислениям, сохраняющим конфиденциальность, такие проблемы, как задержка, надежность, конфиденциальность и производительность, могут быть хорошо сбалансированы.

1.3 Рассуждения на устройстве

Таким образом, в основном интеллектуальные функции на устройстве достигаются за счет выполнения выводов глубокого обучения на устройстве с использованием входных данных от датчиков устройства, таких как камера, микрофон и все другие датчики. Модель полностью работает на устройстве без связи с сервером.

1.4 Проблемы

ограниченные вычислительные ресурсы

Хотя применение машинного обучения на конечных устройствах показало большие преимущества, остается много проблем. Первая проблема — это ограниченные вычислительные ресурсы, и за последние несколько десятилетий мы заметили, что вычислительная мощность мобильных чипсетов продолжает расти в соответствии с законом Мура. Однако по сравнению с облачными кластерами с распределенными вычислительными системами вычислительные ресурсы одного устройства по-прежнему очень ограничены и не могут удовлетворить растущие вычислительные потребности новых приложений.

ограниченная мощность

Сегодня пользователи используют свои устройства больше, чем когда-либо прежде, и каждый новый телефон продолжает увеличивать емкость аккумулятора и поддерживать быструю зарядку. Тем не менее, ограниченная мощность устройства остается серьезной проблемой для длительного времени автономной работы.

перегрев устройства

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

Из экспериментальных данных видно, что вычисления с плавающей запятой, используемые в машинном обучении, требуют более высокого энергопотребления, чем целочисленные вычисления. Чтобы быстро учиться и сократить потребление энергии и памяти, мы должны оптимизировать модели машинного интеллекта, чтобы они соответствовали ограничениям по мощности, памяти и задержкам приложений для конечных устройств.

2. Создайте модель машинного обучения, подходящую для мобильных устройств

Теперь давайте обсудим, как создавать интеллектуальные модели для мобильных устройств.

2.1 Эффективность модели

Прежде чем углубляться в детали разработки мобильных интеллектуальных моделей, давайте взглянем на данные о производительности для традиционных интеллектуальных моделей на стороне сервера и мобильных интеллектуальных моделей. Верхний график показывает данные между размером модели и точностью, а нижний график показывает данные между точностью модели и задержкой. Красная пунктирная рамка показывает данные о производительности традиционной интеллектуальной модели, а синяя пунктирная рамка показывает мобильную интеллектуальную модель. Из рисунка видно, что традиционные модели интеллектуального анализа на стороне сервера, такие как Google Inceptiom, гораздо более обременительны, чем модели MobileNet, с точки зрения размера модели и задержки вывода. Поэтому традиционная модель слишком обременительна для применения к мобильным приложениям.

2.2 MobileNet V1

В 2017 году Google выпустила известную архитектуру глубокого обучения MobileNnet, одним из ее основных вкладов является преобразование стандартных операций свертки в операции свертки по каналам. Как показано слева, операция поканальной свертки разбивает стандартную операцию свертки на две отдельные операции свертки:

На первом этапе он сворачивает M входных каналов через M ядер свертки;

На втором этапе выполняется свертка 1x1 на выходе первого шага вместо свертки входных данных с помощью других N-1 различных групп операций свертки в качестве стандартных операций свертки.

Таким образом, вычислительная сложность модели и количество параметров могут быть уменьшены примерно в 10 раз, а производительность может поддерживаться в соответствии с новейшими моделями интеллектуального анализа на стороне сервера, такими как Inception.

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

2.3 MobileNet V3

В 2019 году исследователи разработали совершенно новую платформу MobileNet V3. Он строит новую модель MobileNetMobilenet посредством поиска структуры модели, связанного с производительностью оборудования. Новая платформа создает интеллектуальные модели, объединяя адаптивность сети и поиск структуры мобильной сети, а также устанавливает целевые функции с целевыми задержками, памятью и энергопотреблением.

2.4 Контрольные показатели производительности MobileNet

Как показано, исследователи повышают производительность моделей машинного обучения на устройствах с помощью MobileNetmobilenetvV3 и эффективного поиска по нейронной архитектуре. Все эти локальные интеллектуальные модели обеспечивают такую ​​же производительность, что и современные интеллектуальные модели на стороне сервера. Однако вычислительная сложность сохраняется на низком уровне. В частности, MobileNet V3 обеспечивает высочайшую точность при минимальном пределе вычислительной сложности. Эта несколько подобная MobileNetmobilenet архитектура стала эталоном и эталоном для интеллектуальных моделей на стороне приложений.

MLPerf

Кроме того, я хотел бы познакомить вас с MLPerf, платформой для тестирования производительности машинного обучения. Это открытая платформа, на которой исследователи могут публиковать последние тесты производительности интеллектуальных моделей на различных аппаратных платформах, включая точность, задержку, объем памяти и энергопотребление.

Каждый результат теста охватывает наиболее распространенные задачи, включая классификацию изображений, обнаружение объектов, сегментацию изображений и обработку естественного языка в самых популярных наборах данных. На основе этих тестов пользователи могут легко просматривать, моделировать производительность и выбирать подходящую модель для своего приложения.

2.5 TFLite

С другой стороны, Google выпустила TFLite, инфраструктуру для анализа данных на устройстве, в качестве облегченной библиотеки машинного обучения и инструмента для мобильных и встроенных устройств. Он встроен в экосистему TensorFlow, и разработчики могут преобразовывать обученные модели TensorFlow в формат моделей TFLite с помощью встроенных преобразователей. Преобразованную модель TFLite можно использовать для создания кроссплатформенных приложений.

В системе Android Android Neural Network API предоставляет собственный интерфейс для запуска моделей TFLitetflite и предоставляет разработчикам интерпретатор, который может создавать собственные API C++ и Java для вызова моделей на устройстве для интеллектуального вывода. В системе iosiOS пользователь может напрямую вызывать интерпретатор через C++.

TFLite быстрее для логического вывода

TFLite превосходен в машинном обучении конечных устройств благодаря следующим возможностям. Во-первых, его унифицированный формат модели на основе FlatBuffer совместим с разными платформами; во-вторых, он оптимизирует предварительные расчеты активации и смещения для мобильных устройств; кроме того, он предоставляет оптимизированные для NEON ядра на ARM для значительного повышения скорости выполнения; наконец, он также поддерживает квантование после обучения. Квантование модели, один из самых популярных методов оптимизации модели, преобразует коэффициенты с плавающей запятой в целые числа. Как правило, квантование может уменьшить размер модели в 4 раза и ускорить время выполнения на 10-50%.

Из рисунка видно, что модель, квантованная с помощью собственного инструмента квантования TFLite, значительно сокращает время вывода модели, подобной MobileNet, и модели Inception V3. Кроме того, приняв разработчиков пост-квантования, можно использовать новейшие модели без необходимости переобучения модели с нуля.

сжатие модели

TFLite также недавно выпустила обширную библиотеку для сжатия традиционных больших моделей в более мелкие модели для сценариев конечных устройств под названием Learn2Compress. Эта технология использует предоставленные пользователем предварительно обученные большие модели TensorFlow в качестве входных данных для обучения и оптимизации и автоматически создает меньшую, более экономичную, более энергоэффективную, более быструю модель логического вывода с минимальной потерей точности, готовую к использованию. В частности, сжатие модели достигается за счет удаления весов или операций, которые наиболее бесполезны для прогнозирования, таких как веса с низкой оценкой.

Он также вводит 8-битное квантование и совместное обучение моделей и дистилляцию моделей для получения компактных маленьких моделей из больших. Для классификации изображений Learn2Compress может создавать небольшие и быстрые модели с хорошей точностью предсказания для мобильных приложений. Например, модель, полученная Learn2Compress на задаче ImageNet, в 22 раза меньше, чем эталонная модель Inception V3, и в 4 раза меньше, чем эталонная модель MobileNet V1, с падением точности всего на 4,6-7%.

API задач TFLite

В дополнение к стабильной структуре и передовым методам обучения, TFLite предоставляет разработчикам приложений библиотеку мощных и простых в использовании инструментов для создания возможностей машинного обучения с помощью TFLite. Он предоставляет оптимизированные готовые к использованию интерфейсы моделей для популярных задач машинного обучения (включая классификаторы естественного языка на основе механизма Bert NLP, ответчики на вопросы) и API-интерфейсы задач видения (включая классификаторы, детекторы и сегментаторы).

Библиотека задач TFLite обеспечивает межплатформенную работу и поддерживает разработку и поддержку JAVA, C++ и Swift. Этот набор API задач машинного обучения TFLite ML обеспечивает четыре основных преимущества. Во-первых, он предоставляет краткий и понятный API для использования экспертами по машинному обучению, не занимающимися машинным обучением. Во-вторых, он предоставляет разработчикам высокую степень расширяемости и настройки для создания собственных приложений для Android и iosOS, не зная модели. В-третьих, он также выпустил мощную, но общую библиотеку инструментов обработки данных, которая поддерживает общее зрение и логику обработки естественного языка для преобразования между пользовательскими данными и форматами данных, требуемыми моделью.Библиотека инструментов также предоставляет инструменты, которые можно использовать как для логики обработки, для обучения и выводов. Наконец, он обеспечивает высокую производительность за счет оптимизированной обработки, а поток обработки данных займет не более нескольких миллисекунд, чтобы обеспечить быстрый вывод с использованием TensorFlowTFLite, а модели, используемые во всех библиотеках задач, поддерживаются Google Research. Далее я расскажу, как использовать API задач TFLite для создания приложений машинного интеллекта на устройствах.

Запуск API задач TFLite из Java

Здесь я покажу пример клиента Android, использующего API задач TFLite. Клиент Android вызовет интерфейс JAVA для передачи входного сигнала, а входной сигнал будет далее перенаправлен на вызов модели через собственный API.После завершения вывода модели результат вывода будет отправлен на интерфейс Java, и далее вернулся к клиенту Android.

В примере пользователю необходимо скопировать файл модели в локальный каталог на устройстве:

Шаг 1: Импортируйте зависимости градиента и другие настройки файла модели;

Шаг 2: Детекторы объектов можно создать с опцией детектора объектов и синхронным выводом, вызвав метод обнаружения. При сквозном проектировании системы инфраструктура MediaPipe может использоваться для проектирования в синхронном или асинхронном режиме. Дополнительные сведения о построении сквозной системы машинного зрения см. в системе MediaPipe с открытым исходным кодом.

3. Создайте модель машинного обучения, подходящую для мобильных устройств

Похоже, мы внесли большой вклад в интеллектуальное сообщество, создающее встроенные приложения машинного интеллекта, так что можем ли мы добиться большего? Ответ положительный.

3.1 Аппаратное ускорение

Сообщество по машинному обучению на устройствах в настоящее время исследует основные усилия, направленные на ускорение вывода машинного обучения ML с помощью аппаратных ускорителей, таких как GPU EdgeTPU и DSP. На изображении выше показаны некоторые последние аппаратные ускорители, разработанные для мобильных устройств. Из графика видно, что последние чипсеты, такие как HiSilicon, Kirin 980, Snapdragon 855 и MediaTtek P9, значительно улучшили производительность. Эта захватывающая новость побудит разработчиков разрабатывать больше приложений для конечных устройств.

На графиках на этом слайде показаны эталонные показатели мощности при выполнении основных операций фильтрации и операций анализа изображений на графических процессорах ARM и FPGA со значительными преимуществами в снижении затрат на электроэнергию за счет оптимизации на графических процессорах и FPGA по сравнению с работой на процессорах.

Для Filter2D (одной из наиболее часто используемых операций в глубоком обучении) выполнение на графическом процессоре может снизить энергопотребление графического процессора вдвое. Работа на FPGA может дополнительно снизить энергопотребление до четверти от энергопотребления ЦП.

Мы перечисляем эталонные тесты для различных аппаратных платформ, запуская мобильные модели (такие как mobilenetMobileNet) и популярные модели на стороне сервера (такие как Iinception). Для запуска MobileNet V1 и V2 на настольном ЦП требуется около 45 мс, что значительно сокращается в 20 раз при одновременной работе на ЦП и ПЛИС.

Кроме того, запуск MobileNet V1 и V2 на встроенном ЦП, таком как четырехъядерный Cortex A53, превысит 150 мс, а на EdgeTPU — менее 2,5 мс.

Сравнивая запуск начальной модели на ЦП и EdgeTPU, мы также можем заметить, что задержка при работе на EdgeTPU значительно ниже, чем при работе на ЦП.

Невероятно, но вышеупомянутое значительное снижение задержки достигается с помощью крошечного чипсета, изображенного справа.

EfficientNet-EdgeTPU

Здесь мы хотим показать пример использования автоматизированного машинного обучения для создания моделей машинного обучения с аппаратным ускорением на устройстве. Мы используем EfficientNet (также одну из самых современных архитектур мобильной нейронной сети) в качестве основы для этой работы. Чтобы построить EfficientNets, нацеленные на использование архитектуры ускорителя Edge TPU, мы вызываем структуру автоматического поиска архитектуры сети и расширяем пространство поиска архитектуры нейронной сети исходной EfficientNet с помощью строительных блоков, которые можно эффективно выполнять в Edge. Мы также создали и интегрировали модуль «предсказателя задержки», который обеспечивает оценку задержки модели при выполнении на Edge TPU путем запуска модели на моделирующем структурно-структурном симуляторе с точностью до цикла. Контроллер автоматического поиска структуры сети использует алгоритм обучения с подкреплением для поиска совместной функции вознаграждения, которая максимизирует задержку прогнозирования и точность модели.

Из прошлого опыта мы знаем, что энергопотребление и производительность Edge TPU максимальны, когда модель помещается во встроенную память. Поэтому мы также модифицируем функцию вознаграждения, чтобы генерировать более высокое вознаграждение для моделей, удовлетворяющих этому ограничению.

По сравнению с существующими моделями EfficientNet, ResNet и Inception, модель EfficientNet-EdgeTPU-Small/Medium/Large обеспечивает лучшую задержку и точность благодаря сетевой архитектуре, предназначенной для оборудования Edge, что особенно заметно по сравнению с ResNet-50, мы получили EfficientNet- EdgeTPU — небольшая модель с более высокой точностью, но работающая в 10 раз быстрее.

Будучи широко распространенной платформой логического вывода для конечных устройств, TFLite также поддерживает встроенное аппаратное ускорение. Здесь мы показываем пример запуска модели MobileNet V1TFLite на CPU, GPU и периферийном TPU.

В целом ЦП работает с плавающей запятой в MobileNet Vv1, и для вывода кадра данных требуется около 124 мс. Запуск квантованной версии MobileNet Vv1 на ЦП в 1,9 раза быстрее, чем модель с плавающей запятой, а запуск модели с плавающей запятой на ГП в 7,7 раза быстрее, чем на ЦП, используя всего около 16 мс на кадр.

Наконец, для запуска квантованной модели на Edge TPU требуется всего 2 мс. Это в 62 раза быстрее, чем модель с плавающей запятой на ЦП. Потому что мы можем сделать вывод, что с аппаратным ускорением вывод модели может быть значительно оптимизирован с точки зрения задержки, энергопотребления и памяти.

4. Конфиденциальность бортового машинного обучения

Достигли ли мы конечной цели машинного интеллекта на устройстве? Мы только начинаем.

4.1 Данные на терминале имеют смысл

Как мы упоминали в начале, конфиденциальность данных — еще одна важная причина, по которой мы обращаемся к искусственному интеллекту на конечных устройствах. Однако обучение новейших моделей машинного интеллекта по-прежнему необходимо проводить на стороне сервера. Приведу типичный пример использования: чтобы машина могла распознавать животных, таких как собаки, для людей, мы можем использовать общедоступные обучающие изображения слева для обучения модели, но обычно нам нужно запускать модель на чрезвычайно сложных изображениях, показанных на справа Используйте эту модель в сцене. Так как же добиться высокой точности вашей модели в сложных повседневных случаях персонализации? Простое решение — собрать частные изображения и переобучить модель через централизованный центр обработки данных. В то время как крупные компании, такие как Google, создали самую безопасную и надежную облачную инфраструктуру для обработки этих данных и предоставления более качественных услуг. Но это явно все же не лучшее решение. Потому что это поднимает проблему использования личных данных пользователей, которые могут содержать конфиденциальную информацию, такую ​​как лицо пользователя, его жилое пространство и т. д. Как мы можем улучшить производительность персонализации моделей и защитить конфиденциальность пользователей.

4.2 Федеративное обучение

Теперь о модели, обученной взаимодействию пользователя с мобильным устройством. Мы представим еще один метод — федеративное обучение.

Федеративное обучение позволяет телефонам совместно изучать общие прогностические модели. Хранение всех обучающих данных на устройстве одновременно отделяет возможность машинного обучения от необходимости хранить данные в облаке, что выходит за рамки использования локальных моделей для прогнозирования на мобильных устройствах путем переноса обучения моделей на устройство. Это работает следующим образом: устройство пользователя загружает текущую модель, улучшает текущую модель, изучая данные на телефоне, затем объединяет изменения в небольшое локальное обновление, используя только зашифрованную связь для отправки обновления модели в облако, и Это немедленно усредняет его с другими пользовательскими обновлениями для улучшения общей модели. Все данные обучения хранятся на устройстве пользователя, а обновления личных данных пользователя не хранятся в облаке.Федеративное обучение может обеспечить более интеллектуальные модели, меньшую задержку и меньшее энергопотребление, обеспечивая при этом конфиденциальность.

Еще одним непосредственным преимуществом такого подхода является то, что в дополнение к обновлению общих моделей сразу же доступны улучшенные модели на вашем телефоне, что обеспечивает индивидуальный подход к тому, как вы используете свой телефон.

Тестирование федеративного обучения с помощью Gboard

В настоящее время мы тестируем федеративное обучение на Gboard, клавиатурном приложении Google для Android. Когда Gboard отображает предлагаемый запрос, ваш телефон локально сохраняет информацию о текущем контексте и о том, следует ли принять предложение. Федеративное обучение обрабатывает историю на конечных устройствах, чтобы предлагать улучшения для следующей итерации модели предложений запросов Gboard.

Для Gboard, у которого миллионы пользователей, развертывание технологии на разных устройствах — очень сложная задача. В фактическом развертывании мы используем крошечную версию TensorFlow, чтобы обеспечить обучение модели на устройстве, с хорошо спланированным расписанием, чтобы гарантировать, что обучение происходит только тогда, когда устройство находится в режиме ожидания, подключено к источнику питания и имеет бесплатную беспроводную связь, поэтому оно не работает. не влияет на производительность устройства.

5. Будущие рабочие места

Похоже, мы достигли хорошей цели, так что нас ждет в будущем?

В прошлом все обучение и вывод производились в централизованных облачных системах. Это вызывает растущую обеспокоенность по поводу конфиденциальности, задержки и надежности. Сегодня мы создаем частично распределенные модели машинного интеллекта с помощью энергоэффективных интеллектуальных устройств, логических выводов и по-прежнему обучаем в централизованных центрах обработки данных и запускаем на локальных устройствах.

В ближайшем будущем благодаря технологии федеративного обучения у нас будет полностью распределенный ИИ для решения проблем конфиденциальности и поддержки обучения на конечных устройствах в течение всей жизни. В последнее время 5G развертывается по всему миру, а низкая задержка и высокая пропускная способность 5G также позволяют распределять обработку ИИ между устройствами, пограничными облаками и центральными облаками, чтобы обеспечить гибкие гибридные системные решения для множества новых и улучшенных возможностей.

Эта беспроводная граничная архитектура является адаптируемой и допускает соответствующие компромиссы для каждого варианта использования. Например, компромисс между производительностью и экономикой может помочь определить, как распределять рабочие нагрузки, чтобы удовлетворить требования к задержке или вычислениям, требуемые конкретным приложением. К тому времени мы могли увидеть множество новых приложений в умных городах IoT (Интернет вещей) и персонализации.

Суммировать

В этом отчете мы кратко описываем возможности и проблемы локального машинного обучения. Во-вторых, мы обсуждаем ресурсоэффективные вычисления для машинного обучения на конечных устройствах. В этом разделе мы представляем архитектуру мобильных моделей, высокоуровневые методы сжатия моделей платформы TFLite и API задач машинного обучения с открытым исходным кодом, с помощью которого пользователи могут создавать приложения искусственного интеллекта. Наконец, мы представляем последние достижения в технологиях машинного обучения на устройствах с сохранением конфиденциальности (федеративное обучение). Мы также указываем на будущее направление ИИ на настольных компьютерах.