ARM NN是Android和Linux的最性能機器學習(ML)推理引擎,在ARM Cortex-A CPU和Arm Mali GPU上加速ML。該ML推理引擎是一種開源SDK,它彌合了現有的神經網絡框架與功率高效ARM IP之間的差距。
ARM NN通過使用ARM Compute庫(ACL)而優於ARM結構特定優化(例如SVE2)引起的通用ML庫。為了靶向ARM ETHOS-N NPU,ARM NN使用Ethos-N NPU驅動器。有關ARM Cortex-M加速度,請參閱CMSIS-NN。
ARM NN使用便攜式C ++ 17編寫,並使用CMAKE構建 - 從各種主機環境中為各種目標平台啟用構建。 Python開發人員可以通過使用我們的ARM NN TF LITE代表與ARM NN連接。
ARM NN TF LITE代表在ARM NN提供了最廣泛的ML操作員支持,這是加速您的ML模型的一種簡單方法。要開始使用TF Lite代表,請首先下載預先構建的二進製文件,以獲取ARM NN的最新版本。使用Python解釋器,您可以將TF Lite模型加載到ARM NN TF LITE委託並加速推理中。請參閱GITHUB上的此快速啟動指南或此更全面的ARM開發人員指南,以獲取有關如何使用ARM NN TF Lite代表加速TF Lite模型的信息。
將ARM NN集成到Android應用程序中的最快方法是將我們的ARM NN AAR(Android Archive)文件與Android Studio一起使用。 AAR文件很好地包裝了ARM NN TF Lite代表,ARM NN本身和ACL;準備將其集成到您的Android ML應用程序中。使用AAR可以使您從ARM NN TF Lite代表的龐大操作員支持中受益。我們舉行了ARM AI技術對話,涉及如何使用此AAR文件在5分鐘內加速ML圖像細分應用程序。要下載ARM NN AAR文件,請參閱下面的“預構建二進製文件”部分。
我們還為ARM NN提供了Debian套餐,這是一種開始使用ARM NN和TF Lite Parser的快速方法(儘管ML操作員的支持少於TF Lite代表)。這裡有一個安裝指南,可提供有關如何安裝ARM NN核心和Ubuntu 20.04的TF Lite解析器的說明。
為了從頭開始建造ARM NN,我們提供了ARM NN構建工具。該工具由參數化的bash腳本組成,伴隨著用於構建ARM NN及其依賴項的Dockerfile ,包括ARM Compute庫(ACL) 。該工具替換/取代了大多數現有的ARM NN構建指南,以構建ARM NN的用戶友好方式。從頭開始構建ARM NN的主要好處是能夠準確選擇要構建哪些組件的目標,該組件針對您的ML項目。
作業系統 | 特定於架構的版本檔案(下載) |
---|---|
Android(AAR) | |
Android 11“ R/紅色天鵝絨蛋糕”(API級30) | |
Android 12“ S/Snow錐”(API級別31) | |
Android 13“ T/Tiramisu”(API級別33) | |
Android 14“ U/倒置蛋糕”(API級別34) |
ARM NN還為Android提供了預先建造的多ISA二進製文件。 V8A二進製文件包括基本V8A架構和向上的支持。 v8.2a二進製文件包括v8.2a及向上的支持。其中包括對SVE,SVE2,FP16和一些點產品內核的支持。這些內核需要適當的硬件才能進行。
多ISA架構 | 發布檔案(下載) |
---|---|
Linux ARM V8A | |
Linux ARM V8.2A | |
Android 31 V8A | |
Android 31 V8.2A |
ARM NN SDK支持Tensorflow Lite (TF Lite)和ONNX格式中的ML模型。
ARM NN的TF Lite代表通過Python或C ++ API加速了TF Lite模型。支持的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應用程序中。請注意,與ARM NN TF LITE代表相比,這些解析器不提供廣泛的ML操作員覆蓋範圍。
Android ML應用程序開發人員有許多使用ARM NN的選項:
ARM還提供了Android-NN-Driver,該驅動器為Android NNAPI實現了硬件抽象層(HAL)。當Android NN驅動器集成在Android設備上時,Android應用中使用的ML模型將通過ARM NN自動加速。
有關ARM NN組件的更多信息,請參閱我們的文檔。
ARM NN是機器學習平台的關鍵組成部分,該平台是Linaro Machine Intelligence Initiative的一部分。
有關常見問題解答和故障排除建議,請參閱常見問題解答或查看以前的GitHub問題。
參與的最佳方法是使用我們的軟件。如果您需要幫助或遇到問題,請作為GitHub問題提出。也可以隨意查看我們的任何開放問題。我們也歡迎對我們的文檔進行反饋。
沒有志願者實施它們的功能請求已關閉,但是具有“幫助”標籤,可以在此處找到。一旦找到合適的問題,請隨時重新打開並添加評論,以便ARM NN工程師知道您正在努力並可以提供幫助。
實現該功能後,將刪除“幫助想要”標籤。
ARM NN項目歡迎貢獻。有關貢獻ARM NN的更多詳細信息,請參閱mlplatform.org網站上的貢獻頁面,或查看貢獻者指南。
尤其是如果您想在我們的CPU旁邊實施自己的後端,GPU和NPU後端會有後端開髮指南:後端開髮指南,動態後端開髮指南。
ARMNN/測試目錄包含在ARM NN開發過程中使用的測試。其中許多依賴於第三方IP,模型Protobufs和未與ARM NN分發的圖像文件。某些測試的依賴項可以在Internet上自由使用,對於那些希望進行實驗的人,但不會用完。
NN由MIT許可提供。有關更多信息,請參見許可證。根據相同的許可,對該項目的貢獻被接受。
單個文件包含以下標籤,而不是完整的許可文本。
SPDX-License-Identifier: MIT
此啟用了基於此處可用的SPDX許可證標識符的許可證信息:http://spdx.org/licenses/
ARM NN符合ARM的包容性語言政策,據我們所知,不包含任何不包含語言的語言。
如果您發現與您有關的東西,請發送電子郵件至[email protected]
ARM NN使用的第三方工具:
工具 | 許可證(SPDX ID) | 描述 | 版本 | 可靠的能力 |
---|---|---|---|---|
cxxopts | 麻省理工學院 | 輕巧的C ++選項解析器庫 | 3.1.1 | https://github.com/jarro2783/cxxopts |
醫生 | 麻省理工學院 | 僅標題C ++測試框架 | 2.4.6 | https://github.com/onqtam/doctest |
FMT | 麻省理工學院 | {FMT}是一個開源格式庫,為C stdio和C ++ iostreams提供了快速安全的替代品。 | 8.30 | https://github.com/fmtlib/fmt |
GHC | 麻省理工學院 | 僅標頭單文件std ::文件系統兼容助手庫 | 1.3.2 | https://github.com/gulrak/filesystem |
一半 | 麻省理工學院 | IEEE 754 16位半精度浮點庫 | 1.12.0 | http://half.sourceforge.net |
MAPBOX/變體 | BSD | “ boost :: variant'的僅標題替代品” | 1.1.3 | https://github.com/mapbox/variant |
STB | 麻省理工學院 | 圖像加載器,調整大小和作家 | 2.16 | https://github.com/nothings/stb |
ARM NN在其代碼中使用以下相關構建標誌:
建立標誌 |
---|
-牆 |
-wextra |
-Wold-style-cast |
-wno-Missing-Braces |
-wconversion |
-wsign-conversion |
-werror |