ARM NN 은 Android 및 Linux의 ML ( Most Performant Machine Learning) 추론 엔진으로 ARM Cortex-A CPU 및 ARM Mali GPU 의 ML를 가속화합니다. 이 ML 추론 엔진은 오픈 소스 SDK로 기존 신경망 프레임 워크와 전력 효율적인 ARM IP 사이의 간격을 연결합니다.
ARM NN은 ACL (Arm Compute Library)을 사용하여 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 Delegate 사용을 시작하려면 먼저 ARM NN의 최신 릴리스에 대한 사전 제작 된 바이너리를 다운로드하십시오. Python 통역사를 사용하여 TF Lite 모델을 ARM TF Lite 대의원에로드하고 가속 된 추론을 실행할 수 있습니다. ARM Nn TF Lite Delegate를 사용하여 TF Lite 모델을 가속화하는 방법에 대한 정보는 GitHub 또는이 포괄적 인 ARM 개발자 가이드 의이 빠른 시작 안내서를 참조하십시오.
ARM NN을 Android 앱 에 통합하는 가장 빠른 방법은 Android Studio와 함께 ARM NN AAR (Android Archive) 파일을 사용하는 것입니다. AAR 파일은 ARM Nn TF Lite Delegate, ARM NN 자체 및 ACL을 멋지게 포장합니다. Android ML 애플리케이션에 통합 할 준비가되었습니다. AAR을 사용하면 ARM NN TF LITE 대의원의 방대한 운영자 지원을 통해 혜택을 볼 수 있습니다. 이 AAR 파일을 사용하여 5 분 안에 ML 이미지 세분화 앱을 가속하는 방법에 대한 ARM AI Tech Talk를 개최했습니다. ARM NN AAR 파일을 다운로드하려면 아래 사전 제작 된 바이너리 섹션을 참조하십시오.
또한 ARM NN 및 TF Lite Parser를 사용하는 빠른 방법 인 ARM NN에 대한 데비안 패키지를 제공합니다 (TF Lite 대표보다 ML 운영자 지원이 적더라도). Ubuntu 20.04 용 ARM NN 코어 및 TF Lite Parser를 설치하는 방법에 대한 지침을 제공하는 설치 안내서가 있습니다.
ARM NN을 처음부터 구축하려면 ARM NN 빌드 도구를 제공합니다. 이 도구는 ARM NN을 건축하기위한 Dockerfile 과 ARM Compute Library (ACL)를 포함한 종속성과 함께 매개 변수화 된 Bash 스크립트 로 구성됩니다. 이 도구는 기존 ARM NN 빌드 가이드의 대부분을 ARM 빌드 NN을 사용자 친화적 인 방법으로 대체/대체합니다. 건물 ARM NN을 처음부터 처음부터 구축 할 수있는 주요 이점은 ML 프로젝트를 대상으로 빌드 할 구성 요소를 정확하게 선택할 수 있다는 것입니다.
운영 체제 | 아키텍처 관련 릴리스 아카이브 (다운로드) |
---|---|
안드로이드 (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/거꾸로 케이크"(API 레벨 34) |
ARM NN은 또한 안드로이드 용 미리 제작 된 멀티 ISA 바이너리를 제공합니다. V8A 바이너리에는 기본 V8A 아키텍처의 지원이 포함됩니다. V8.2A 이진에는 V8.2A 이상의지지가 포함됩니다. 여기에는 SVE, SVE2, FP16 및 일부 도트 제품 커널에 대한 지원이 포함됩니다. 이 커널은 작업하려면 적절한 하드웨어가 필요합니다.
멀티 ISA 아키텍처 | 릴리스 아카이브 (다운로드) |
---|---|
Linux Arm V8a | |
리눅스 암 V8.2A | |
안드로이드 31 V8A | |
안드로이드 31 V8.2A |
ARM NN SDK는 Tensorflow Lite (TF Lite) 및 ONNX 형식의 ML 모델을 지원합니다.
ARM NN의 TF LITE DELEGATE는 Python 또는 C ++ API를 통해 TF Lite 모델을 가속화합니다. 지원되는 TF Lite 연산자는 ARM NN에 의해 가속화되며 지원되지 않은 운영자는 참조 LITE 런타임에 위임 (폴백)을 위임하여 광범위한 ML 운영자 지원을 보장합니다. ARM NN을 사용하는 권장 방법은 모델을 TF LITE 형식으로 변환하고 TF Lite 대의원을 사용하는 것입니다. TF Lite Delegate 사용 방법에 대한 자세한 내용은 빠른 시작 안내서를 참조하십시오.
ARM NN은 또한 TF LITE 및 ONNX 모델을 ML 애플리케이션에 통합하기위한 C ++ 라이브러리 인 TF LITE 및 ONNX 파서를 제공합니다. 이 파서는 ARM NN TF LITE 대의원과 비교하여 광범위한 ML 운영자 커버리지를 제공하지 않습니다.
Android ML 애플리케이션 개발자는 ARM NN을 사용하기위한 여러 가지 옵션이 있습니다.
ARM은 또한 Android NNAPI의 하드웨어 추상화 레이어 (HAL)를 구현하는 Android-NN-Driver를 제공합니다. Android NN 드라이버가 Android 장치에 통합되면 Android 응용 프로그램에 사용되는 ML 모델은 ARM NN에 의해 자동으로 가속됩니다.
ARM NN 구성 요소에 대한 자세한 내용은 문서를 참조하십시오.
ARM NN은 Linaro Machine Intelligence Initiative의 일부인 기계 학습 플랫폼의 핵심 구성 요소입니다.
FAQ 및 문제 해결 조언은 FAQ를 참조하거나 이전 GitHub 문제를 참조하십시오.
참여하는 가장 좋은 방법은 소프트웨어를 사용하는 것입니다. 도움이 필요하거나 문제가 발생하면 GitHub 문제로 제기하십시오. 공개 문제도 자유롭게 살펴보십시오. 우리는 또한 문서에 대한 피드백을 환영합니다.
자원 봉사자가없는 기능 요청은 닫혀 있지만 '도움말 원하는'레이블이 있습니다. 여기에서 찾을 수 있습니다. 적절한 문제를 찾으면 다시 열어주고 의견을 추가하여 ARM 엔지니어가 자신이 작업하고 있음을 알고 도움이 될 수 있도록하십시오.
기능이 구현되면 'Help Wanted'레이블이 제거됩니다.
ARM NN 프로젝트는 기여를 환영합니다. ARM NN에 대한 자세한 내용은 mlplatform.org 웹 사이트의 기여 페이지를 참조하거나 기고자 안내서를 참조하십시오.
특히 CPU, GPU 및 NPU 옆에 자신의 백엔드를 구현하려면 백엔드 개발 가이드 : 백엔드 개발 가이드, 동적 백엔드 개발 안내서가 있습니다.
ARMNN/TESTS 디렉토리에는 ARM NN 개발 중에 사용되는 테스트가 포함되어 있습니다. 그들 중 다수는 타사 IP, 모델 프로토 비프 및 ARM NN으로 배포되지 않은 이미지 파일에 의존합니다. 일부 테스트의 종속성은 인터넷에서 자유롭게 이용할 수 있지만 실험을 원하는 사람들을 위해 이용 가능하지만 상자가 부족하지 않습니다.
ARM NN은 MIT 라이센스에 따라 제공됩니다. 자세한 내용은 라이센스를 참조하십시오. 이 프로젝트에 대한 기부금은 동일한 라이센스에 따라 허용됩니다.
개별 파일에는 정식 라이센스 텍스트 대신 다음 태그가 포함되어 있습니다.
SPDX-License-Identifier: MIT
이를 통해 여기에서 사용 가능한 SPDX 라이센스 식별자를 기반으로 라이센스 정보의 기계 처리가 가능합니다 : http://spdx.org/licenses/
ARM NN은 ARM의 포괄적 인 언어 정책을 준수하며, 우리가 아는 한, 비 포함 언어는 포함되지 않습니다.
당신이 당신과 관련된 것을 찾으면 [email protected]으로 이메일을 보내주십시오.
ARM NN에서 사용하는 타사 도구 :
도구 | 라이센스 (SPDX ID) | 설명 | 버전 | 기원 |
---|---|---|---|---|
cxxopts | MIT | 가벼운 C ++ 옵션 파서 라이브러리 | 3.1.1 | https://github.com/jarro2783/cxxopts |
DocTest | MIT | 헤더 전용 C ++ 테스트 프레임 워크 | 2.4.6 | https://github.com/onqtam/doctest |
FMT | MIT | {FMT}는 C STDIO 및 C ++ iOSTreams에 빠르고 안전한 대안을 제공하는 오픈 소스 형식의 라이브러리입니다. | 8.30 | https://github.com/fmtlib/fmt |
GHC | MIT | 헤더 전용 단일 파일 STD :: FileSystem 호환 도우미 라이브러리 | 1.3.2 | https://github.com/gulrak/filesystem |
반 | MIT | IEEE 754 적합한 16 비트 반-반 자격 부동 소수점 라이브러리 | 1.12.0 | http://half.sourceforge.net |
맵 박스/변형 | BSD | 'boost :: variant'에 대한 헤더 전용 대안 | 1.1.3 | https://github.com/mapbox/variant |
STB | MIT | 이미지 로더, 크기 조정 및 작성자 | 2.16 | https://github.com/nothings/stb |
ARM NN은 코드에서 다음 보안 관련 빌드 플래그를 사용합니다.
깃발을 만듭니다 |
---|
-벽 |
-wextra |
-Wold 스타일 캐스트 |
-wno 미스-크래스 |
-wconversion |
-WSIGN-CONVERSION |
-우선자 |