ARM NN est le moteur d'inférence Machine Learning (ML) le plus performant pour Android et Linux, accélérant ML sur les processeurs ARM Cortex-A et les GPU Mali ARM . Ce moteur d'inférence ML est un SDK open source qui comble l'écart entre les cadres de réseau neuronal existants et l'IP ARM économe en puissance.
ARM NN surpasse les bibliothèques génériques ML en raison des optimisations spécifiques à l'architecture ARM (par exemple SVE2) en utilisant la bibliothèque de calcul ARM (ACL) . Pour cibler les NPUS ARM ETHOS-N, ARM NN utilise le pilote Ethos-N NPU. Pour l'accélération ARM Cortex-M, veuillez consulter CMSIS-NN.
ARM NN est écrit à l'aide de C ++ 17 portable et construit à l'aide de CMake - permettant des versions pour une grande variété de plates-formes cibles, à partir d'une grande variété d'environnements hôtes. Les développeurs Python peuvent s'interfacer avec ARM nn grâce à l'utilisation de notre délégué ARM NN TF Lite .
Le délégué ARM NN TF Lite fournit la prise en charge la plus large de l'opérateur ML dans ARM NN et est un moyen facile d'accélérer votre modèle ML. Pour commencer à utiliser le délégué TF Lite, téléchargez d'abord les binaires prédéfinis pour la dernière version d'ARM NN. À l'aide d'un interprète Python, vous pouvez charger votre modèle TF Lite dans le délégué ARM NN TF Lite et exécuter une inférence accélérée. Veuillez consulter ce guide de démarrage rapide sur GitHub ou ce Guide de développeur ARM plus complet pour des informations sur la façon d'accélérer votre modèle TF Lite à l'aide du délégué ARM NN TF Lite.
Le moyen le plus rapide d'intégrer ARM NN dans une application Android consiste à utiliser notre fichier AR NN AAR (Archive Android) avec Android Studio . Le fichier AAR emballe bien le délégué ARM NN TF Lite, ARM nn lui-même et ACL; Prêt à être intégré dans votre application Android ML. L'utilisation de l'AAR vous permet de bénéficier du vaste prise en charge de l'opérateur du délégué ARM NN TF Lite. Nous avons tenu une conversation sur le bras AI Tech sur la façon d'accélérer une application de segmentation d'image ML en 5 minutes en utilisant ce fichier AAR. Pour télécharger le fichier ARM NN AAR, veuillez consulter la section Binaires prédéfinie ci-dessous.
Nous fournissons également des packages Debian pour ARM NN, qui sont un moyen rapide de commencer à utiliser ARM NN et le Parser TF Lite (bien qu'avec moins de support de l'opérateur ML que le délégué TF Lite). Il existe un guide d'installation disponible ici qui fournit des instructions sur la façon d'installer le noyau ARM NN et l'analyseur TF Lite pour Ubuntu 20.04.
Pour construire un bras à partir de zéro, nous fournissons l' outil de construction du bras . Cet outil se compose de scripts de bash paramétrés accompagnés d'un dockerfile pour construire un bras nn et de ses dépendances, y compris la bibliothèque de calcul ARM (ACL) . Cet outil remplace / remplace la majorité des guides de construction ARM NN existants comme un moyen convivial de construire ARM NN. Le principal avantage de la construction du bras à partir de zéro est la possibilité de choisir exactement les composants à construire, ciblés pour votre projet ML .
Système opérateur | Archive de version spécifique à l'architecture (téléchargement) |
---|---|
Android (AAR) | |
Android 11 "r / gâteau en velours rouge" (niveau API 30) | |
Android 12 "S / Snow Cone" (API Niveau 31) | |
Android 13 "T / Tiramisu" (niveau API 33) | |
Android 14 "U / Upside Down Cake" (API Niveau 34) |
ARM NN fournit également des binaires multi-ISA prédéfinis pour Android. Le binaire V8A comprend le support de l'architecture V8A de base et vers le haut. Le binaire V8.2A comprend le soutien de V8.2A et vers le haut. Il s'agit notamment de la prise en charge de SVE, SVE2, FP16 et certains noyaux de produit DOT. Ces grains ont besoin de matériel approprié pour travailler.
Architecture multisa | Sortie d'archive (téléchargement) |
---|---|
ARM LINUX V8A | |
ARM LINUX V8.2A | |
Android 31 V8A | |
Android 31 v8.2a |
Le SDK ARM NN prend en charge les modèles ML dans les formats TensorFlow Lite (TF Lite) et ONNX .
Le délégué TF Lite d'ARM NN accélère les modèles TF Lite via des API Python ou C ++ . Les opérateurs TF Lite pris en charge sont accélérés par ARM NN et tous les opérateurs non pris en charge sont délégués (secours) à la référence TF Lite Runtime - garantissant un support approfondi des opérateurs ML. La façon recommandée d'utiliser ARM NN consiste à convertir votre modèle au format TF Lite et à utiliser le délégué TF Lite. Veuillez vous référer aux guides de démarrage rapide pour plus d'informations sur la façon d'utiliser le délégué TF Lite.
ARM NN fournit également des analyseurs TF Lite et ONNX qui sont des bibliothèques C ++ pour intégrer les modèles TF Lite ou ONNX dans votre application ML. Veuillez noter que ces analyseurs ne fournissent pas une couverture étendue de l'opérateur ML par rapport au délégué ARM NN TF Lite.
Les développeurs d'applications Android ML ont un certain nombre d'options d'utilisation de ARM NN:
ARM fournit également un Android-NN-Driver qui implémente une couche d'abstraction matérielle (HAL) pour l'Android NNAPI. Lorsque le pilote Android NN est intégré sur un appareil Android, les modèles ML utilisés dans les applications Android seront automatiquement accélérés par ARM NN.
Pour plus d'informations sur les composants ARM NN, veuillez vous référer à notre documentation.
ARM NN est un composant clé de la plate-forme d'apprentissage automatique, qui fait partie de la Linaro Machine Intelligence Initiative.
Pour les FAQ et les conseils de dépannage, consultez la FAQ ou consultez les problèmes de GitHub précédents.
La meilleure façon de s'impliquer est d'utiliser notre logiciel. Si vous avez besoin d'aide ou de rencontre un problème, veuillez le relever en tant que problème GitHub. N'hésitez pas à jeter un œil à l'un de nos problèmes ouverts. Nous accueillons également des commentaires sur notre documentation.
Les demandes de fonctionnalités sans bénévole pour les mettre en œuvre sont fermées, mais ont le label «Help Wanted», ceux-ci peuvent être trouvés ici. Une fois que vous avez trouvé un problème approprié, n'hésitez pas à le rouvrir et à ajouter un commentaire, afin que les ingénieurs Arm NN sachent que vous y travaillez et que vous pouvez vous aider.
Lorsque la fonctionnalité est implémentée, l'étiquette «Help Wanted» sera supprimée.
Le projet Arm NN accueille les contributions. Pour plus de détails sur la contribution à ARM NN, veuillez consulter la page contributive sur le site Web MLPLATFORM.org, ou consultez le Guide des contributeurs.
En particulier, si vous souhaitez implémenter votre propre backend à côté de nos backends CPU, GPU et NPU, il existe des guides pour le développement du backend: guide de développement du backend, Guide de développement backend dynamique.
Le répertoire ARMNN / Tests contient des tests utilisés pendant le développement du bras. Beaucoup d'entre eux dépendent de l'IP tiers, des protobufs du modèle et des fichiers d'image non distribués avec ARM NN. Les dépendances de certains tests sont disponibles librement sur Internet, pour ceux qui souhaitent expérimenter, mais ils ne manqueront pas de la boîte.
ARM NN est fourni sous la licence du MIT. Voir la licence pour plus d'informations. Les contributions à ce projet sont acceptées sous la même licence.
Les fichiers individuels contiennent la balise suivante au lieu du texte complet de licence.
SPDX-License-Identifier: MIT
Cela permet le traitement machine des informations de licence basées sur les identificateurs de licence SPDX disponibles ici: http://spdx.org/licenses/
ARM NN est conforme à la politique linguistique inclusive d'ARM et, au meilleur de nos connaissances, ne contient aucun langage non inclusif.
Si vous trouvez quelque chose qui vous concerne, veuillez envoyer un e-mail à [email protected]
Outils tiers utilisés par ARM NN:
Outil | Licence (ID SPDX) | Description | Version | Provenance |
---|---|---|---|---|
cxxopts | Mit | Une bibliothèque d'analyseur d'option C ++ légère | 3.1.1 | https://github.com/jarro2783/cxxopts |
doctst | Mit | Framework de test C ++ d'en-tête uniquement | 2.4.6 | https://github.com/onqtam/doctest |
fmt | Mit | {FMT} est une bibliothèque de formatage open source offrant une alternative rapide et sûre à C STDIO et C ++ IoStreams. | 8.30 | https://github.com/fmtlib/fmt |
GHC | Mit | Une bibliothèque d'assistantes compatibles compatibles compatibles STD :: STD de fichiers uniquement en tête | 1.3.2 | https://github.com/gulrak/filesystem |
moitié | Mit | IEEE 754 Bibliothèque de points flottants à demi-précision 16 bits | 1.12.0 | http://half.sourceforge.net |
Mapbox / variante | BSD | Une alternative en tête uniquement à «Boost :: Variant» | 1.1.3 | https://github.com/mapbox/variant |
STB | Mit | Chargeur d'image, redimensionner et écrivain | 2.16 | https://github.com/nothings/stb |
ARM NN utilise les indicateurs de construction liés à la sécurité suivants dans leur code:
Construire des drapeaux |
---|
-Mur |
-Wextra |
-Thold-bask |
-No-Missing-Braces |
-Wconversion |
-Wsign-conversion |
-Werror |