ARM NN является наиболее эффективным механизмом вывода машинного обучения (ML) для Android и Linux, ускоряя ML на процессорах ARM Cortex-A и GP ARM Mali . Этот механизм вывода ML-это SDK с открытым исходным кодом, который преодолевает разрыв между существующими рамками нейронной сети и энергосберегающим ARM IP.
ARM NN превосходит общие библиотеки ML из-за оптимизации ARM-архитектуры (например, SVE2), используя библиотеку ARM Compute (ACL) . Чтобы нацелиться на ARM Ethos-N NPUS, ARM NN использует драйвер Ethos-N NPU. Для ускорения Arm Cortex-M см. CMSIS-NN.
ARM NN записана с использованием портативного C ++ 17 и создается с использованием CMAKE - включение сборки для широкого спектра целевых платформ, из широкого спектра хост -сред. Разработчики Python могут взаимодействовать с ARM NN благодаря использованию нашего делегата ARM NN TF Lite .
Делегат ARM NN TF Lite обеспечивает самую широкую поддержку оператора ML в ARM NN и является простым способом ускорить вашу модель ML. Чтобы начать использовать Delegate TF Lite, сначала загрузите предварительно созданные двоичные файлы для последнего выпуска ARM NN. Используя интерпретатор Python, вы можете загрузить свою модель TF Lite в делегат ARM NN TF LITE и запустить ускоренный вывод. Пожалуйста, смотрите это руководство быстрого начала на GitHub или в этом более полном руководстве по разработке ARM для получения информации о том, как ускорить вашу модель TF Lite, используя делегат ARM NN TF Lite.
Самый быстрый способ интегрировать ARM NN в приложение Android - это использование нашего файла ARM NN AAR (Android Archive) с Android Studio . AAR файл хорошо упаковывает в ARM NN TF LITE DELEGATE, ARM NN и ACL; Готовы быть интегрированным в ваше приложение Android ML. Использование AAR позволяет вам извлечь выгоду из обширной поддержки оператора ARM NN TF LITE. Мы провели Tech Tech Tech Arm Tech о том , как ускорить приложение сегментации изображений ML за 5 минут, используя этот файл AAR. Чтобы загрузить файл ARM NN AAR, см. Предварительно построенный раздел Binary ниже.
Мы также предоставляем пакеты Debian для ARM NN, которые являются быстрым способом начать использовать ARM NN и TF LITE SARSER (хотя и с меньшей поддержкой операторов ML, чем делегат TF LITE). Здесь доступно руководство по установке, которое предоставляет инструкции о том, как установить ядро ARM NN и анализатор TF Lite для Ubuntu 20.04.
Чтобы построить руку NN с нуля, мы предоставляем инструмент для сборки ARM NN . Этот инструмент состоит из параметризованных сценариев Bash, сопровождаемых Dockerfile для строительства ARM NN и его зависимостей, включая библиотеку ARM Compute (ACL) . Этот инструмент заменяет/заменяет большинство существующих руководств по строительству ARM NN как удобный способ создать ARM NN. Основным преимуществом строительства ARM NN с нуля является возможность точно выбирать, какие компоненты строить, нацеленные на ваш проект ML .
Операционная система | Архив выпуска, специфичный для архитектуры (скачать) |
---|---|
Android (AAR) | |
Android 11 "R/Red Velvet Cake" (API Уровень 30) | |
Android 12 "S/Snow Cone" (API Уровень 31) | |
Android 13 "T/Tiramisu" (API Уровень 33) | |
Android 14 "u/upsy Down Cake" (API Уровень 34) |
ARM NN также предоставляет предварительно построенные мульти-ISA двоичные файлы для Android. Двоиц V8A включает в себя поддержку базовой архитектуры V8A и выше. Двоинар V8.2a включает в себя поддержку V8.2a и вверх. К ним относятся поддержка SVE, SVE2, FP16 и некоторых ядер точечных продуктов. Эти ядра нуждаются в подходящем оборудовании для работы.
Multi ISA Architecture | Архив выпуска (скачать) |
---|---|
Linux ARM V8A | |
Linux Arm V8.2a | |
Android 31 V8A | |
Android 31 V8.2a |
ARM NN SDK поддерживает модели ML в форматах Tensorflow Lite (TF Lite) и ONNX .
Делегат ARM NN TF Lite ускоряет модели TF Lite через API Python или C ++ . Поддерживаемые операторы TF LITE ускоряются ARM NN, и любые неподдерживаемые операторы делегируются (отступление) для эталонного времени выполнения TF Lite - обеспечивая обширную поддержку операторов ML. Рекомендуемый способ использования ARM NN - преобразовать вашу модель в формат TF Lite и использовать делегат TF Lite. Пожалуйста, обратитесь к руководствам быстрого начала для получения дополнительной информации о том, как использовать делегат TF Lite.
ARM NN также предоставляет анализаторы TF LITE и ONNX , которые являются библиотеками C ++ для интеграции моделей TF LITE или ONNX в ваше приложение ML. Обратите внимание, что эти анализаторы не предоставляют обширное покрытие оператора ML по сравнению с делегатом ARM NN TF LITE.
Разработчики приложений Android ML имеют ряд вариантов использования ARM NN:
ARM также предоставляет Android-NN-Driver, который реализует аппаратный слой абстракции (HAL) для Android NNAPI. Когда драйвер Android NN интегрирован на устройстве Android, модели ML, используемые в приложениях Android, будут автоматически ускорены ARM NN.
Для получения дополнительной информации о компонентах ARM NN, пожалуйста, обратитесь к нашей документации.
ARM NN является ключевым компонентом платформы машинного обучения, которая является частью инициативы Machine Intelligence Linaro.
Для часто задаваемых вопросов и советов по устранению неполадок, см. FAQ или посмотрите на предыдущие проблемы GitHub.
Лучший способ принять участие - использовать наше программное обеспечение. Если вам нужна помощь или столкнуться с проблемой, пожалуйста, поднимите ее как проблему GitHub. Не стесняйтесь взглянуть на любую из наших открытых проблем. Мы также приветствуем отзывы о нашей документации.
Запросы на функции без добровольца для их реализации закрыты, но имеют лейбл «Help Wanted», их можно найти здесь. Как только вы найдете подходящую проблему, не стесняйтесь вновь открыть ее и добавлять комментарий, чтобы инженеры ARM NN знали, что вы работаете над этим и могут помочь.
Когда эта функция будет реализована, этикетка «Захват разыскивается» будет удален.
Проект ARM NN приветствует вклад. Для получения более подробной информации о участии в ARM NN, пожалуйста, смотрите страницу «Содействие» на веб -сайте mlplatform.org или см. Руководство для участников.
Особенно, если вы хотите внедрить свой собственный бэкэнд рядом с нашим процессором, графическими процессорами и NPU, есть руководства по разработке бэкэнд: Руководство по разработке бэкэнд, Руководство по разработке динамического бэкэнда.
Каталог Armnn/Tests содержит тесты, используемые во время разработки ARM NN. Многие из них зависят от сторонних IP, модели Protobufs и файлов изображений, не распределенных с помощью ARM NN. Зависимости для некоторых тестов доступны в Интернете свободно, для тех, кто хочет экспериментировать, но они не закончится из коробки.
ARM NN предоставляется по лицензии MIT. Смотрите лицензию для получения дополнительной информации. Взносы в этот проект принимаются по той же лицензии.
Отдельные файлы содержат следующий тег вместо полного текста лицензии.
SPDX-License-Identifier: MIT
Это позволяет обработать машинную информацию о лицензии на основе идентификаторов лицензий SPDX, которые доступны здесь: http://spdx.org/licenses/
ARM NN соответствует инклюзивной языковой политике ARM и, насколько нам известно, не содержит никакого неинтукационного языка.
Если вы найдете что -то, что касается вас, пожалуйста, напишите [email protected]
Сторонние инструменты, используемые ARM NN:
Инструмент | Лицензия (ID SPDX) | Описание | Версия | Происхождение |
---|---|---|---|---|
Cxxopts | Грань | Легкая библиотека опции C ++ | 3.1.1 | https://github.com/jarro2783/cxxopts |
Doctest | Грань | Структура тестирования только для заголовка C ++ | 2.4.6 | https://github.com/onqtam/doctest |
фм | Грань | {FMT}-это библиотека форматирования с открытым исходным кодом, обеспечивающая быструю и безопасную альтернативу C Stdio и C ++ Iostreams. | 8.30 | https://github.com/fmtlib/fmt |
ГС | Грань | Однопроводимая штуковая библиотека, совместимая с отделкой только для заголовка. | 1.3.2 | https://github.com/gulrak/filesystem |
половина | Грань | IEEE 754 Соответствующая 16-битная библиотека с плавающей запятой полуоткрытием | 1.12.0 | http://half.sourceforge.net |
Mapbox/Variant | BSD | Альтернатива только для заголовка «Boost :: variant» | 1.1.3 | https://github.com/mapbox/variant |
stb | Грань | Погрузчик изображения, изменения размера и писатель | 2.16 | https://github.com/nothings/stb |
ARM NN использует следующие флаги сборки, связанные с безопасностью в своем коде:
Строить флаги |
---|
-Стена |
-Wextra |
-Волд-стиль |
-Вно-пропущенные марки |
-Воверсия |
-Вет-конверсия |
-Перрор |