Модель побольше - не всегда лучшая модель

Миниатюризация электроники, начатая благодаря натиску НАСА, превратилась в целую индустрию потребительских товаров. Теперь мы несем полное собрание сочинений Бетховена на лацкане, слушая его в наушниках. - Нил де Грасс Тайсон, астрофизик и научный обозреватель

[…] Повсеместное распространение встраиваемых устройств со сверхнизким энергопотреблением в сочетании с внедрением встроенных фреймворков машинного обучения, таких как TensorFlow Lite для микроконтроллеров, обеспечит массовое распространение устройств IoT на базе искусственного интеллекта. - Виджай Джанапа Редди, доцент Гарвардского университета

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

Введение

За последнее десятилетие мы стали свидетелями экспоненциального роста алгоритмов машинного обучения из-за повышения скорости процессора и появления больших данных. Первоначально модели были достаточно маленькими, чтобы работать на локальных машинах с использованием одного или нескольких ядер в центральном процессоре (ЦП).

Вскоре после этого для обработки больших наборов данных стали необходимы вычисления с использованием графических процессоров (GPU), которые стали более доступными благодаря внедрению облачных сервисов, таких как платформы SaaS (например, Google Colaboratory) и IaaS (например, Amazon EC2 Instances). В то время алгоритмы все еще можно было запускать на отдельных машинах.

Совсем недавно мы стали свидетелями разработки специализированных интегральных схем (ASIC) для конкретных приложений и блоков тензорной обработки (TPU), которые могут объединять мощность ~ 8 графических процессоров. Эти устройства были дополнены возможностью распределять обучение по нескольким системам в попытке вырастить все более крупные модели.

Это стало очевидным недавно с выпуском алгоритма GPT-3 (выпущенного в мае 2020 года), который может похвастаться сетевой архитектурой, содержащей ошеломляющие 175 миллиардов нейронов - более чем вдвое больше, чем в человеческом мозге (~ 85 миллиардов). Это более чем в 10 раз больше нейронов, чем у следующей по величине нейронной сети, когда-либо созданной, Turing-NLG (выпущенной в феврале 2020 года, содержащей ~ 17,5 миллиардов параметров). По некоторым оценкам, обучение модели стоило около 10 миллионов долларов и потребляло около 3 ГВт-ч электроэнергии (примерно мощность трех атомных электростанций в час).

Хотя достижения GPT-3 и Turing-NLG заслуживают похвалы, естественно, это заставило некоторых в отрасли критиковать все более значительный углеродный след индустрии искусственного интеллекта. Однако это также помогло стимулировать интерес в сообществе ИИ к более энергоэффективным вычислениям. Такие идеи, как более эффективные алгоритмы, представления данных и вычисления, в течение нескольких лет были в центре внимания, казалось бы, не связанной области: крошечное машинное обучение.

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

Основные отраслевые бенефициары tinyML - это периферийные вычисления и энергоэффективные вычисления. TinyML возник из концепции Интернета вещей (IoT). Традиционная идея Интернета вещей заключалась в том, что данные будут отправляться с локального устройства в облако для обработки. Некоторые люди выразили определенные опасения по поводу этой концепции: конфиденциальность, задержка, хранение и энергоэффективность, и это лишь некоторые из них.

Энергоэффективность. Передача данных (по проводам или по беспроводной сети) очень энергоемкая, примерно на порядок более энергоемкая, чем бортовые вычисления (в частности, единицы умножения-накопления). Разработка систем Интернета вещей, способных выполнять собственную обработку данных, является наиболее энергоэффективным методом. Пионеры искусственного интеллекта обсуждали эту идею «ориентированных на данные» вычислений (в отличие от «вычислительно-ориентированных» в облачной модели) в течение некоторого времени, и теперь мы начинаем видеть, как она реализуется.

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

Хранилище. Для многих устройств Интернета вещей данные, которые они получают, бесполезны. Представьте себе камеру видеонаблюдения, записывающую вход в здание 24 часа в сутки. Большую часть дня съемка с камеры бесполезна, потому что ничего не происходит. При наличии более интеллектуальной системы, которая активируется только при необходимости, требуется меньшая емкость хранилища и уменьшается объем данных, необходимых для передачи в облако.

Задержка. Для стандартных устройств Интернета вещей, таких как Amazon Alexa, эти устройства передают данные в облако для обработки, а затем возвращают ответ на основе результатов алгоритма. В этом смысле устройство - всего лишь удобный шлюз к облачной модели, как почтовый голубь между вами и серверами Amazon. Устройство довольно глупое и полностью зависит от скорости интернета для получения результата. Если у вас медленный интернет, Amazon Alexa также станет медленным. Для интеллектуального устройства IoT со встроенным автоматическим распознаванием речи задержка уменьшается, поскольку уменьшается (если не отсутствует) зависимость от внешних коммуникаций.

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

Такие улучшения также применимы к более крупным моделям, что может привести к повышению эффективности моделей машинного обучения на порядки без влияния на точность модели. Например, алгоритм Бонсай, разработанный Microsoft, может иметь размер всего 2 КБ, но может иметь даже лучшую производительность, чем типичный алгоритм kNN на 40 МБ или нейронная сеть на 4 МБ. Этот результат может показаться неважным, но такая же точность на модели, составляющей 1/10 000 размера, впечатляет. Такая маленькая модель может быть запущена на Arduino Uno, у которой доступно 2 КБ оперативной памяти - короче говоря, теперь вы можете построить такую ​​модель машинного обучения на микроконтроллере за 5 долларов.

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

Устройства Интернета вещей и встроенные модели машинного обучения становятся все более распространенными в современном мире (прогнозируется, что к концу 2020 года будет более 20 миллиардов активных устройств). Многие из них вы, возможно, даже не заметили. Умные дверные звонки, умные термостаты, смартфон, который «просыпается», когда вы говорите пару слов или даже просто поднимаете трубку. В оставшейся части этой статьи мы подробнее рассмотрим принцип работы tinyML, а также текущие и будущие приложения.

Примеры TinyML

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

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

Пожалуй, самый очевидный пример TinyML - смартфоны. Эти устройства постоянно активно прослушивают «слова для пробуждения», такие как «Привет, Google» для смартфонов Android или «Привет, Siri» на iPhone. Выполнение этих действий через главный центральный процессор (ЦП) смартфона, который составляет 1,85 ГГц для современного iPhone, разрядит аккумулятор всего за несколько часов. Такой уровень деградации неприемлем для чего-то, что большинство людей использовали бы максимум несколько раз в день.

Чтобы бороться с этим, разработчики создали специализированное маломощное оборудование, которое может работать от небольшой батареи (например, круглой «монетной» батареи CR2032). Это позволяет схемам оставаться активными, даже когда ЦП не работает, что обычно происходит, когда экран не горит.

Эти схемы могут потреблять всего 1 мВт и могут работать до года от стандартной батареи CR2032.

Может показаться, что это не так, но это большое дело. Энергия является ограничивающим фактором для многих электронных устройств. Любое устройство, для которого требуется электричество, ограничено местами с проводкой, которая может быстро стать перегруженной, если в одном месте присутствует дюжина устройств. Электроэнергия также неэффективна и дорога. Преобразование сетевого напряжения (которое составляет около 120 В в Соединенных Штатах) в типичный диапазон напряжения цепи (часто ~ 5 В) тратит большое количество энергии. Любой, у кого есть зарядное устройство для ноутбука, вероятно, узнает об этом, отключив зарядное устройство от сети. Тепло от трансформатора внутри зарядного устройства тратится впустую во время процесса преобразования напряжения.

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

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

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

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

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

Двумя основными направлениями tinyML в настоящее время являются:

Определение ключевых слов. Большинство людей уже знакомы с этим приложением. Привет, Siri и Привет, Google - это примеры ключевых слов (часто используются как синонимы с горячим словом или словом для пробуждения). Такие устройства непрерывно прослушивают входной аудиосигнал с микрофона и обучены реагировать только на определенные последовательности звуков, которые соответствуют изученным ключевым словам. Эти устройства проще, чем приложения для автоматического распознавания речи (ASR), и, соответственно, используют меньше ресурсов. Некоторые устройства, такие как смартфоны Google, используют каскадную архитектуру, чтобы также обеспечить проверку динамика в целях безопасности.

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

Ниже показан более широкий обзор текущих сценариев использования TinyML с помощью машинного обучения.

Как работает TinyML

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

Модель дистилляции

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

Идея, лежащая в основе извлечения знаний, заключается в том, что в более крупных сетях есть некоторая разреженность или избыточность внутри них. В то время как большие сети имеют высокую репрезентативную емкость, если пропускная способность сети не насыщена, она может быть представлена ​​в меньшей сети с более низкой репрезентативной способностью (то есть с меньшим количеством нейронов). Hinton et al. (2015) назвали встроенную информацию в модели учителя, которая должна быть передана модели ученика, как «темные знания».

На диаграмме ниже показан процесс извлечения знаний.

На этой диаграмме «учитель» - это обученная модель нейронной сети. Учителю поручено передать свои «знания» в меньшую сетевую модель с меньшим количеством параметров, «ученик». Этот процесс используется для сохранения тех же знаний в меньшей сети, обеспечивая способ сжатия представления знаний и, следовательно, размера нейронной сети, чтобы их можно было использовать на устройствах с ограниченным объемом памяти.

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

Квантование

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

Зачем нужно квантование? Представьте себе Arduino Uno, использующий микроконтроллер ATmega328P, который использует 8-битную арифметику. Чтобы запустить модель на Uno, в идеале веса модели должны быть сохранены в виде 8-битных целочисленных значений (тогда как многие настольные компьютеры и ноутбуки используют 32-битное или 64-битное представление с плавающей запятой). При квантовании модели размер хранилища весов уменьшается в 4 раза (для квантования от 32-битных до 8-битных значений), а точность часто оказывается незначительной (часто около 1–3%).

Некоторая информация может быть потеряна во время квантования из-за ошибки квантования (например, значение, равное 3,42 в представлении с плавающей запятой, может быть усечено до 3 на платформе, основанной на целых числах). Для борьбы с этим в качестве альтернативы было предложено обучение с учетом квантования (QA). QA-обучение существенно ограничивает сеть во время обучения, чтобы использовать только те значения, которые будут доступны на квантованном устройстве (см. Пример Tensorflow).

Кодирование Хаффмана

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

Компиляция

После того, как модель была квантована и закодирована, она преобразуется в формат, который может быть интерпретирован каким-либо легким интерпретатором нейронной сети, наиболее популярными из которых, вероятно, являются TF Lite (размером ~ 500 КБ) и TF Lite. Micro »(размером ~ 20 КБ). Затем модель компилируется в код C или C ++ (языки, на которых работает большинство микроконтроллеров для эффективного использования памяти) и запускается интерпретатором на устройстве.

Большая часть навыков tinyML приходится на сложный мир микроконтроллеров. TF Lite и TF Lite Micro настолько малы, потому что все ненужные функции были удалены. К сожалению, сюда входят такие полезные возможности, как отладка и визуализация. Это означает, что может быть трудно понять, что происходит, если во время развертывания произошла ошибка.

Кроме того, хотя модель должна храниться на устройстве, модель также должна иметь возможность выполнять логический вывод. Это означает, что микроконтроллер должен иметь достаточно большой объем памяти, чтобы он мог запускать (1) свою операционную систему и библиотеки, (2) интерпретатор нейронной сети, такой как TF Lite, (3) сохраненные нейронные веса и нейронную архитектуру и (4) промежуточные результаты при выводе. Таким образом, пиковое использование памяти квантованным алгоритмом часто упоминается в исследовательских статьях tinyML, наряду с использованием памяти, количеством единиц умножения с накоплением (MAC), точностью и т. Д.

Почему бы не тренироваться на устройстве?

Тренировка на устройстве вызывает дополнительные сложности. Из-за пониженной числовой точности становится чрезвычайно трудно гарантировать необходимый уровень точности для достаточного обучения сети. Методы автоматического дифференцирования на стандартном настольном компьютере примерно соответствуют машинной точности. Вычисление производных с точностью 10 ^ -16 невероятно, но использование автоматического дифференцирования по 8-битным значениям приведет к плохим результатам. Во время обратного распространения эти производные объединяются и в конечном итоге используются для обновления нейронных параметров. При такой низкой числовой точности точность такой модели может быть низкой.

При этом нейронные сети обучались с использованием 16-битных и 8-битных чисел с плавающей запятой.

Первой статьей, посвященной снижению числовой точности в глубоком обучении, была статья Суйога Гупты и его коллег Глубокое обучение с ограниченной числовой точностью 2015 года. Результаты этой статьи были интересными, они показали, что 32-битное представление с плавающей запятой может быть сокращено до 16-битного представления с фиксированной запятой, по существу, без ухудшения точности. Однако это единственный случай, когда используется стохастическое округление, поскольку в среднем оно дает несмещенный результат.

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

Как насчет вычислительной эффективности?

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

Следующая революция в области искусственного интеллекта

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

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

использованная литература

[1] Хинтон, Джеффри и Виньялс, Ориол и Дин, Джефф. (2015). Распространение знаний в нейронной сети.

[2] Д. Бэнкман, Л. Янг, Б. Мунс, М. Верхелст и Б. Мурманн, Постоянно включенный бинарный процессор CNN со смешанными сигналами 3,8 мкДж / 86% CIFAR-10 со всей памятью на кристалле по 28-нм техпроцессу. CMOS , Международная конференция по твердотельным схемам IEEE 2018 - (ISSCC), Сан-Франциско, Калифорния, 2018 г., стр. 222–224, DOI: 10.1109 / ISSCC.2018.8310264.

[3] Уорден, П. (2018). Почему будущее машинного обучения крошечное. Блог Пита Уордена.

[4] Уорд-Фокстон, С. (2020). Распознавание звука AI на Cortex-M0: данные - король. EE Times.

[5] Леви, М. (2020). Глубокое обучение на микроконтроллерах - будущее пограничных вычислений. EE Times.

[6] Грюнштейн, Александр и Альварес, Разиэль и Торнтон, Крис и Годрат, Мохаммадали. (2017). Каскадная архитектура для обнаружения ключевых слов на мобильных устройствах.

[7] Кумар А., Сураб Гойал и М. Варма. (2017). Ресурсоэффективное машинное обучение в 2 КБ ОЗУ для Интернета вещей.

[8] Чжан, Юньдун и Суда, Навин и Лай, Лянчжэнь и Чандра, Викас. (2017). Hello Edge: определение ключевых слов на микроконтроллерах.

[9] Федоров, Игорь и Стаменович, Марко и Дженсен, Карл и Ян, Ли-Чиа и Манделл, Ари и Ган, Иминь и Маттина, Мэтью и Ватмоу, Пол. (2020). TinyLSTMs: эффективное улучшение нейронной речи для слуховых аппаратов.

[10] Линь, Цзи и Чен, Вэй-Мин и Линь, Юджун и Кон, Джон и Ган, Чуанг и Хан, Сон. (2020). MCUNet: Tiny Deep Learning on IoT Devices.

[ 11] Чен, Тианки и Моро, Тьерри. (2020). TVM: автоматизированный компилятор сквозной оптимизации для глубокого обучения.

[12] Вебер, Логан и Ройш, Эндрю (2020). TinyML - Как TVM укрощает крошечных.

[ 13] Кришнамурти, Рагхураман. (2018). Квантование глубоких сверточных сетей для эффективного вывода: технический документ.

[14] Йосински, Джейсон и Клюн, Джефф и Бенжио, Ю. и Липсон, Ход. (2014). Насколько переносимы функции в глубоких нейронных сетях?.

[15] Лай, Лянчжэнь и Суда, Навин и Чандра, Викас. (2018). C MSIS-NN: Эффективные ядра нейронной сети для процессоров Arm Cortex-M.

[16] Чаудхери, Ааканкша и Уорден, Пит и Шленс, Джонатон и Ховард, Эндрю и Родс, Рокки. (2019). Набор визуальных слов для пробуждения.

[17] Надзиратель, Пит. (2018). Речевые команды: набор данных для распознавания речи с ограниченным словарным запасом.

[18] Земляникин, Максим и Сморкалов, Александр и Ханова, Татьяна и Петровичева, Анна и Серебряков, Григорий. (2019). 512KiB RAM достаточно! Прямая трансляция DNN камеры по распознаванию лиц на MCU . 2493–2500. 10.1109 / ICCVW.2019.00305.