Оптимизация ИИ для встроенных приложений
В моем предыдущем блоге я говорил о том, что спрос на интерфейсы на основе ИИ стал почти неизбежным, и что добавление интерфейса на основе ИИ, такого как face-id для авторизации доступа к машине, на первый взгляд может показаться огромным скачком, но это не так. должно быть так сложно, как вы могли подумать. Существует множество доступных платформ искусственного интеллекта, множество вариантов обучения и даже приложения с открытым исходным кодом, такие как пример с идентификатором лица. Вы можете быстро приступить к тестированию с помощью прототипа, который можно запустить на своем ПК.
(Источник:CEVA)
Ограничения
Перенос обученной сети во встроенное приложение может показаться еще одним серьезным препятствием. Сети, обученные на ПК или в облаке, не сильно оптимизируют использование памяти или энергопотребление. Они могут использовать числа с плавающей запятой или двойные слова для сетевых вычислений, и они будут сильно полагаться на доступ к внешней памяти при обработке скользящих окон по изображению. Это не проблема для прототипа, работающего на высокопроизводительном ПК, подключенном к электросети, но вам нужно быть намного экономнее в своем конечном приложении без ущерба для производительности.
Основы оптимизации
Один из ключевых шагов в оптимизации называется квантованием. Переключение весов с плавающей точки на фиксированную точку и уменьшение размера фиксированной точки, скажем, с 32-битной плавающей точки до 8-битных целых чисел, влияет не только на размер весов, но и на промежуточные значения вычислений. Одно только это может значительно уменьшить объем памяти, в большинстве случаев практически не влияя на качество распознавания.
Вторая манипуляция - использовать разреженность весов с минимальным влиянием на точность. Эта практика будет использовать веса, близкие к нулю, и округлять их до нуля, внимательно отслеживая влияние точности. Веса используются для умножения частичных сумм - бессмысленное упражнение, когда один из множителей равен нулю, поэтому нет необходимости выполнять операцию.
В практических реализациях изображения обрабатываются постепенно, поэтому веса должны обновляться по мере перемещения окна вычислений по изображению. Это может привести к большому количеству обновлений и большому трафику. Установив большой процент весов равным нулю, массив весов может быть сжат, что дает возможность хранить весь или большую часть массива во встроенной SRAM для распаковки по требованию. Это, в свою очередь, сводит к минимуму необходимость обращения к основной памяти и, следовательно, увеличивает производительность и снижает энергопотребление. Это также случайно снижает внутренний трафик при загрузке весов. Меньше конкуренции за трафик - выше пропускная способность.
Следует учитывать еще один фактор. Как и большинство сложных приложений, нейронные сети зависят от сложных библиотек. Вам нужно будет использовать библиотеку, предназначенную для использования в средах микроконтроллеров, и компилятор для выбранной вами платформы. Хорошей отправной точкой может быть библиотека с открытым исходным кодом, такая как TensorFlow Lite, но для полного использования микроконтроллера потребуется специальное специализированное решение.
Конечно, знание того, что вам нужно делать, не облегчает задачу. Теперь вам нужно найти платформу, которая упростит эти операции и предоставит библиотеки, оптимизированные для оборудования.
Как сделать этот процесс простым в использовании?
Вам нужен поток, в котором вы можете взять сеть, которую вы обучили на своей конкретной платформе, например TensorFlow, и скомпилировать ее непосредственно во встроенное решение - без какого-либо вмешательства, кроме набора нескольких основных требований. Конечно, вам также нужна возможность дальнейшей ручной оптимизации, возможно, с установкой разных уровней квантования в разных плоскостях. Возможно, поэкспериментируем с пороговыми значениями веса в сравнении с размерами встроенной памяти. И вы хотите, чтобы библиотеки были оптимизированы для оборудования, а оборудование оптимизировано для библиотек.
Проверенная платформа искусственного интеллекта, такая как CDNN CEVA, предназначена для обеспечения такого потока. CDNN предлагает набор инструментов автономного процессора для квантования и генерации задач времени выполнения, а также специализированные библиотеки времени выполнения для аппаратных ускорителей CEVA DSP и пользовательских пользователей. Решение CEVA поддерживает все популярные форматы моделей искусственного интеллекта, включая TensorFlow Lite, ONNX, Caffe и другие.
Связанное содержание:
- Освоение встроенного ИИ
- Втиснуть модели ИИ в микроконтроллеры
- Применение машинного обучения во встроенных системах
- Архитектура микроконтроллеров развивается для ИИ
- Обучение ИИ-моделей на передовой.
- Архитектура микроконтроллеров развивается для ИИ
- Превращение больших данных в интеллектуальные данные с помощью встроенного ИИ
Чтобы получить больше информации о Embedded, подпишитесь на еженедельную рассылку Embedded по электронной почте.
Встроенный
- VersaLogic выпускает компьютеры серверного класса для встроенных приложений
- Infineon запускает серию встроенных систем питания TLE985x для автомобильных приложений
- Sundance:встроенный процессорный модуль VCS-1 для приложений точной робототехники
- PPA для приложений электронной мобильности
- 4 совета по оптимизации гидроабразивной резки
- Идеальное применение для пневматических приводов
- 4 типа инструментов для майнинга
- Типичные области применения суппортных тормозов
- Военные применения бронзовых сплавов
- Применения для алюминиевой бронзы C63200