Ранее в чудесном путешествии magicplan-AI…
В части 2 мы показали, как можно достичь хорошей точности определения уровня в модели глубокого обучения, работающей на мощном графическом процессоре, если у вас есть необходимый опыт в обучении глубокому обучению.
К сожалению, этого недостаточно, если вы хотите реализовать эту функцию на смартфоне и имеете дело с действительно ограниченными аппаратными ресурсами как с точки зрения памяти, так и с точки зрения вычислительной мощности.
Часть 3 - Встраивание функции в смартфон
Предыдущая работа позволила разработать и обучить «достаточно хорошую» модель обнаружения дверных / оконных объектов. Однако даже для вывода, эта архитектура может работать только на мощном графическом процессоре NVIDIA. Это несовместимо с ограниченными аппаратными ресурсами смартфона, как с точки зрения требований к памяти, так и времени обработки.
Это огромная проблема, из-за которой мы на какое-то время застряли.
Удаленный подход
Сначала предполагаемое решение заключалось в том, чтобы перенести вычисления на GPU в облако.
Основное преимущество этого подхода заключается в том, что сервер имеет необходимую память графического процессора и вычислительную мощность для правильной работы модели. Итак, это решение доступно с первого дня.
Однако три фактора сделали этот подход проблематичным:
- magicplan предназначен для работы как онлайн, так и офлайн. Использование удаленного соединения для обнаружения окон / дверей изменило бы эту парадигму,
- длительность загрузки и скачивания создает нежелательную и непредсказуемую задержку, которая может сильно раздражать во время сеанса захвата в реальном времени,
- существовала неопределенность в отношении стоимости развертывания серверов GPU в облаке с целью масштабирования с учетом потенциального спроса после запуска в производство.
Тем не менее, этот подход был очень полезен для «моделирования», локально в частной сети и в реальных условиях захвата, надежности модели и подтверждения приемлемости пользовательского опыта.
В итоге комбинация трех решений позволила нам преодолеть этот критический барьер:
- Применение подхода квантования для уменьшения объема памяти за счет снижения точности с плавающей запятой,
- Применяя подход учителя / ученика к нашей модели, чтобы «сжать» ее до приемлемого размера памяти, сохраняя при этом ту же точность обнаружения,
- Перенос части модели из стандартной платформы TensorFlow в ускоренную платформу Apple CoreML для оптимизации производительности вычислений на смартфоне.
Применение квантового подхода
Квантизация - это идея перехода от арифметики с плавающей запятой к целочисленной, что позволяет сэкономить память и время вычислений. Это была быстрая победа, поскольку TensorFlow предлагает некоторые инструменты для пересмотра данной модели, чтобы очень легко выполнить квантование.
Еще по теме:
Применение подхода учитель / ученик
Мы должны поблагодарить лабораторию MILA, с которой мы сотрудничали в рамках инициативы, финансируемой IRAP, поскольку они рекомендовали нам этот подход как способ сокращения модели, и это сработало!
Ключевым моментом было то, что опыт MILA помогал нам в этом решении, решение, которое мы, скорее всего, не рассматривали бы в противном случае.
Этот продвинутый подход очень увлекателен. Короче говоря, он основан на идее, что маленькие модели хуже обобщают, чем большие модели во время процедуры обучения. Итак, чтобы хорошо обучиться работе с маленькой моделью, полезно иметь большую модель, которая «извлекает» знания из своих внутренних слоев в некоторые внутренние слои маленькой модели.
Еще по теме:
- Джеффри Хинтон, Ориол Виньялс и Джефф Дин. Получение знаний в нейронной сети. В NIPS Workshop, 2014 .
- Адриана Ромеро, Николас Баллас, Самира Эбрахими Каху, Антуан Чассанг, Карло Гатта и Йошуа Бенжио. Fitnets: подсказки для тонких глубоких сетей. В ICLR, 2015.
Переход на платформу Apple CoreML с ускорением графического процессора
Хотя фреймворки глубокого обучения на ПК с ускорением графического процессора достаточно развиты, это неверно, когда речь идет о переносе этих фреймворков на iOS или Android:
- Встроенные версии основных фреймворков (например, TensorFlow Mobile) все еще находятся на начальной стадии и не используют все преимущества аппаратного обеспечения смартфона.
- На другом конце находится Apple CoreM. CoreML - это официальная платформа Apple Machine Learning для iOS, оптимизированная для работы на устройстве. К сожалению, в настоящее время он охватывает только ограниченное подмножество вычислительных узлов, реализованных в TensorFlow.
- Кроме того, до сих пор не существует стандартного формата взаимодействия, позволяющего легко переносить модель с одной платформы на другую вплоть до встроенной реализации, даже если такие инициативы, как ONNX или NNEF, начинают действовать.
В результате единственный способ добиться максимальной отдачи от iOS - это вручную реорганизовать весь граф на несколько частей, чтобы легко перенести соответствующий подграф в CoreML.
После всех этих операций полученная модель SSD имеет производительность лучшей модели R-CNN, проверенной на большом графическом процессоре, занимая при этом 14 МБ и выполняя логический вывод за 250 мс на iPhone X. Настоящее достижение!
Уроки выучены
Когда дело доходит до встраивания моделей в смартфоны, реальность такова, что встроенные фреймворки и инструменты взаимодействия все еще находятся на начальной стадии, что резко противоречит тому опыту, который мы имели с POC на ПК с графическим процессором.
Кроме того, для получения хороших результатов требуются передовые методы обучения глубокому обучению. Вам нужна специализированная команда по глубокому обучению, чтобы заниматься этими расширенными процедурами обучения, а также играть с совместимостью и сложными кодами ускорения.
Именно здесь сотрудничество с ведущими академическими организациями в области ИИ может иметь решающее значение при выборе правильных направлений и вариантов для достижения целей.
Заключение
Наше путешествие в области глубокого обучения было удивительным, но сложным.
Действительно, правило 80/20 применяется:
- легко получить обнадеживающие результаты благодаря наличию зрелых инструментов для создания прототипов и готовых моделей на начальном этапе,
- Когда дело доходит до реального приложения, вы гораздо более самостоятельны в развертывании технологии на смартфоне и использовании передовых методов обучения для создания моделей, совместимых с ограничениями смартфона.
Сейчас мы находимся на стадии бета-тестирования magicplan-AI. Это означает, что эта функция доступна в magicplan 7.2 для iOS!
Он доступен всем, кто хочет зарегистрироваться на бета-версию magicplan-AI.
Цель этой бета-версии - улучшить обучающий набор, а также лучше понять пользовательский опыт и определить, что работает, а что нужно изменить.
Еще предстоит проделать значительную работу, чтобы сделать его официальной функцией, но мы считаем, что в конечном итоге ИИ станет частью ядра magicplan, точно так же, как AR был в magicplan последние 5 лет.
Будь то расширение его использования (электрические розетки или обнаружение углов) или внедрение подхода непрерывного обучения к моделям, команде Sensopia Research предстоит еще много интересной работы по глубокому обучению!
И для этого нанимаем!
Благодарности
Я хочу поблагодарить Джонатана Эйгрейна и Вахида Эттехади, двух наших ведущих инженеров-исследователей, за их выдающуюся работу по реализации magicplan-AI. Это их достижение в первую очередь.
Я также хочу поблагодарить Сильвена Лароша из Национального исследовательского совета Канады за доверие, которое он всегда проявлял к возможностям Сенсопии. NRCC на протяжении многих лет помогал нам на критических этапах развития компании, позволяя нашей небольшой структуре реализовывать амбициозные проекты при одновременном снижении финансовых рисков.
Наконец, мы благодарим Майка Пипера (Группа НИОКР и передачи технологий MILA) за все полезные советы, которые он нам дал. В конце концов, это имело значение.