ARM NN ist das leistungsstärkste maschinelle Lernen (ML) Inferenzmotor für Android und Linux, der ML auf Arm Cortex-A CPUs und Arm Mali GPUs beschleunigt. Diese ML-Inferenz-Engine ist ein Open-Source-SDK, das die Lücke zwischen vorhandenen Rahmenbedingungen für neuronale Netzwerke und effizientem ARM-IP überbrückt.
ARM NN übertrifft generische ML-Bibliotheken aufgrund von ARM-Architektur-spezifischen Optimierungen (z. B. SVE2) mithilfe der ARM-Computerbibliothek (ACL) . Um Arm Ethos-N NPUs zu zielen, verwendet ARM NN den Ethos-N-NPU-Treiber. Für die ARM-Cortex-M-Beschleunigung siehe CMSIS-NN.
ARM NN wird mit tragbarem C ++ 17 geschrieben und mit CMAKE erstellt. Er aktiviert Builds für eine Vielzahl von Zielplattformen aus einer Vielzahl von Hostumgebungen. Python -Entwickler können mit ARM NN durch die Verwendung unseres ARM NN TF Lite -Delegierters einbinden.
Der ARM NN TF Lite -Delegate bietet die breiteste ML -Operator -Unterstützung in Arm NN und ist eine einfache Möglichkeit, Ihr ML -Modell zu beschleunigen. Um den TF Lite-Delegate zu verwenden, laden Sie zuerst die vorgefertigten Binärdateien für die neueste Veröffentlichung von Arm NN herunter. Mit einem Python -Dolmetscher können Sie Ihr TF -Lite -Modell in den ARM NN TF Lite -Delegieren laden und beschleunigte Inferenz ausführen. In diesem Schnellstarthandbuch zu GitHub oder in diesem umfassenderen Handbuch für ARM -Entwickler finden Sie Informationen zur Beschleunigung Ihres TF Lite -Modells mit dem ARM NN TF Lite -Delegieren.
Der schnellste Weg, ARM NN in eine Android -App zu integrieren, besteht darin, unsere ARM NN AAR (Android Archive) -Datei mit Android Studio zu verwenden. Die AAR -Datei packt schön den Arm Nn tf Lite Delegate, ARM nn selbst und ACL zusammen; Bereit, in Ihre Android ML -Anwendung integriert zu werden. Mit dem AAR können Sie von der riesigen Betreiberunterstützung des Armnn TF Lite -Delegate profitieren. Wir haben mit dieser AAR -Datei in 5 Minuten einen ARM -Tech -Vortrag über die Beschleunigung einer ML -Image -Segmentierungs -App geführt. Um die ARM NN AAR-Datei herunterzuladen, finden Sie im Bereich vorgefertigter Binärdateien unten.
Wir stellen auch Debian -Pakete für ARM NN zur Verfügung, die eine schnelle Möglichkeit für die Verwendung von ARM NN und den TF Lite -Parser (wenn auch mit weniger ML -Bedienerunterstützung als der TF Lite -Delegate). Hier gibt es einen Installationshandbuch, der Anweisungen zur Installation des Armnn -Kerns und des TF Lite -Parsers für Ubuntu 20.04 enthält.
Um Arm NN von Grund auf neu zu bauen, stellen wir das Arm NN Build -Werkzeug zur Verfügung. Dieses Tool besteht aus parametrisierten Bash -Skripten, begleitet von einer Dockerfile zum Erstellen von Arm NN und seinen Abhängigkeiten, einschließlich der ARM Compute Library (ACL) . Dieses Tool ersetzt/ersetzt den Großteil der vorhandenen Armnn-Build-Führer als benutzerfreundliche Art, Arm NN zu bauen. Der Hauptvorteil des Bauens von Arm NN von Grund auf ist die Möglichkeit, genau zu wählen, welche Komponenten für Ihr ML -Projekt ausgerichtet sind .
Betriebssystem | Architekturspezifisches Release-Archiv (Download) |
---|---|
Android (AAR) | |
Android 11 "R/Red Velvet Cake" (API Level 30) | |
Android 12 "S/Snow Cone" (API Level 31) | |
Android 13 "T/Tiramisu" (API -Stufe 33) | |
Android 14 "U/Overside Down -Kuchen" (API Level 34) |
Arm NN bietet auch vorgefertigte Multi-ISA-Binärdateien für Android. Die V8A -Binärin beinhaltet Unterstützung von Basic V8A Architecture und Upwards. Die V8.2A -Binärin beinhaltet Unterstützung von V8.2a und nach oben. Dazu gehören die Unterstützung für SVE, SVE2, FP16 und einige DOT -Produktkerne. Diese Kernel benötigen eine geeignete Hardware, um daran zu arbeiten.
Multi ISA -Architektur | Release -Archiv (Download) |
---|---|
Linux Arm V8A | |
Linux Arm V8.2a | |
Android 31 V8A | |
Android 31 v8.2a |
Der Arm NN SDK unterstützt ML -Modelle in Tensorflow Lite (TF Lite) und ONNX -Formaten.
ARM NNs TF Lite -Delegate beschleunigt TF -Lite -Modelle durch Python- oder C ++ - APIs . Unterstützte TF -Lite -Betreiber werden von ARM NN beschleunigt und alle nicht unterstützten Betreiber werden an die Referenz -Lite -Laufzeit delegiert (um eine umfassende Unterstützung des ML -Betreibers zu gewährleisten. Die empfohlene Möglichkeit zur Verwendung von ARM NN besteht darin, Ihr Modell in das TF -Lite -Format zu konvertieren und den TF Lite -Delegierten zu verwenden. Weitere Informationen zur Verwendung des TF Lite -Delegierters finden Sie in den Quick Start Guides.
ARM NN bietet auch TF Lite- und ONNX -Parsers , die C ++ - Bibliotheken für die Integration von TF -Lite- oder ONNX -Modellen in Ihre ML -Anwendung sind. Bitte beachten Sie, dass diese Parser im Vergleich zum ARM -NN TF Lite -Delegierter keine umfassende Abdeckung des ML -Bedieners bieten.
Die Entwickler von Android ML -Anwendungen haben eine Reihe von Optionen für die Verwendung von ARM NN:
ARM bietet auch einen Android-NN-Fahrer, der eine Hardware-Abstraktionsschicht (HAL) für das Android NNAPI implementiert. Wenn der Android NN -Treiber in ein Android -Gerät integriert ist, werden ML -Modelle, die in Android -Anwendungen verwendet werden, automatisch durch ARM NN beschleunigt.
Weitere Informationen zu den ARM -NN -Komponenten finden Sie in unserer Dokumentation.
ARM NN ist eine Schlüsselkomponente der Plattform für maschinelles Lernen, die Teil der Linaro Machine Intelligence Initiative ist.
Für FAQs und Fehlerbehebungsberatung finden Sie in den FAQs oder sehen Sie sich frühere Github -Probleme an.
Der beste Weg, um sich zu engagieren, besteht darin, unsere Software zu verwenden. Wenn Sie Hilfe benötigen oder auf ein Problem stoßen, stellen Sie es bitte als GitHub -Problem an. Schauen Sie sich auch eines unserer offenen Probleme an. Wir begrüßen auch Feedback zu unserer Dokumentation.
Feature -Anfragen ohne Freiwilligen, die sie implementieren, sind geschlossen, aber das Label "Help Wanted" sind hier gefunden. Sobald Sie ein geeignetes Problem gefunden haben, können Sie es gerne erneut eröffnen und einen Kommentar hinzufügen, damit ARM NN-Ingenieure wissen, dass Sie daran arbeiten und helfen können.
Wenn die Funktion implementiert wird, wird das Etikett "Help Wanted" entfernt.
Das ARM NN -Projekt begrüßt Beiträge. Weitere Informationen zum Beitrag zu ARM NN finden Sie auf der beitragenden Seite auf der Website mlPlatform.org oder finden Sie den Mitwirkendenhandbuch.
Insbesondere wenn Sie Ihr eigenes Backend neben unserer CPU-, GPU- und NPU -Backends implementieren möchten, gibt es Anleitungen für die Backend -Entwicklung: Backend Development Guide, Dynamic Backend Development Guide.
Das ARMNN/Tests -Verzeichnis enthält Tests, die während der ARM -NN -Entwicklung verwendet werden. Viele von ihnen sind auf IP, Modellprotobufe und Bilddateien angewiesen, die nicht mit ARM NN verteilt sind. Die Abhängigkeiten für einige Tests sind im Internet frei verfügbar, für diejenigen, die experimentieren möchten, aber sie werden nicht aus dem Box ausgehen.
ARM NN wird im Rahmen der MIT -Lizenz bereitgestellt. Weitere Informationen finden Sie unter Lizenz. Beiträge zu diesem Projekt werden im Rahmen derselben Lizenz akzeptiert.
Einzelne Dateien enthalten das folgende Tag anstelle des vollständigen Lizenztextes.
SPDX-License-Identifier: MIT
Dies ermöglicht die Maschinenverarbeitung von Lizenzinformationen auf der Grundlage der hier verfügbaren SPDX -Lizenzkennungen: http://spdx.org/licenses/
Arm NN entspricht der Inklusivsprachenpolitik von ARM und enthält nach unserem besten Wissen keine nicht inklusive Sprache.
Wenn Sie etwas finden, das Sie betrifft, senden Sie bitte eine E -Mail an achtziger [email protected]
Dritte Tools, die von Arm NN verwendet werden:
Werkzeug | Lizenz (SPDX -ID) | Beschreibung | Version | Herkunftswesen |
---|---|---|---|---|
cxxopts | MIT | Eine leichte C ++ Option Parser Library | 3.1.1 | https://github.com/jarro2783/cxxopts |
Doktor | MIT | Nur Header-C ++ -Test-Framework | 2.4.6 | https://github.com/onqtam/doctest |
fmt | MIT | {fmt} ist eine Open-Source-Formatierungsbibliothek, die eine schnelle und sichere Alternative zu C STDIO und C ++ iSstreams bietet. | 8.30 | https://github.com/fmtlib/fmt |
GHC | MIT | Ein nur Header-Einzel-File STD :: Dateisystem kompatible Helferbibliothek | 1.3.2 | https://github.com/gulrak/fililesystem |
Hälfte | MIT | IEEE 754 Konformant 16-Bit-Schwimmgutbibliothek mit halber Präzision | 1.12.0 | http://half.sourceforge.net |
MAPBOX/Variante | BSD | Eine nur Header-Alternative zu "Boost :: Variante" | 1.1.3 | https://github.com/mapbox/variant |
stb | MIT | Bildloa, Größe und Schriftsteller | 2.16 | https://github.com/nothings/stb |
ARM NN verwendet die folgenden Sicherheitsbuild -Flags in ihrem Code:
Flaggen bauen |
---|
-Wand |
-Wextra |
-Wold-Stil-Kaste |
-Wno-Missing-Braces |
-Wonversion |
-Wenne Konvertierung |
-Schwur |