ARM NN เป็นเครื่องยนต์การอนุมานของเครื่องจักร ที่มีประสิทธิภาพมากที่สุด (ML) สำหรับ Android และ Linux เร่ง ML บน CPUS-A ARM และ ARM Mali GPU เอ็นจิ้นการอนุมาน ML นี้เป็น SDK โอเพนซอร์สซึ่งเชื่อมช่องว่างระหว่างกรอบเครือข่ายประสาทที่มีอยู่และ IP แขนที่ประหยัดพลังงาน
ARM NN มีประสิทธิภาพสูงกว่าไลบรารี ML ทั่วไปเนื่องจาก การเพิ่มประสิทธิภาพเฉพาะสถาปัตยกรรม ARM (เช่น SVE2) โดยใช้ ARM Compute Library (ACL) ในการกำหนดเป้าหมาย ARM Ethos-N NPU, ARM NN ใช้ไดรเวอร์ ethos-n NPU สำหรับการเร่งความเร็ว ARM Cortex-M โปรดดู CMSIS-NN
ARM NN เขียนโดยใช้ C ++ 17 แบบพกพาและสร้างขึ้นโดยใช้ CMAKE - เปิดใช้งานการสร้างสำหรับแพลตฟอร์มเป้าหมายที่หลากหลายตั้งแต่สภาพแวดล้อมโฮสต์ที่หลากหลาย นักพัฒนา Python สามารถเชื่อมต่อกับ ARM NN ผ่านการใช้ แขนของเรา nn tf lite ตัวแทน
ARM NN TF Lite ผู้แทนให้การสนับสนุนผู้ให้บริการ ML ที่กว้างที่สุดใน ARM NN และเป็นวิธีที่ง่ายในการเร่งรุ่น ML ของคุณ ในการเริ่มต้นใช้ตัวแทน TF Lite ให้ดาวน์โหลด ไบนารีที่สร้างไว้ล่วงหน้า สำหรับการเปิดตัว ARM NN ล่าสุด การใช้ล่าม Python คุณสามารถโหลดโมเดล TF Lite ของคุณลงในแขน NN TF Lite และเรียกใช้การอนุมานเร่งความเร็ว โปรดดู คู่มือการเริ่มต้นอย่างรวดเร็ว นี้เกี่ยวกับ GitHub หรือ คู่มือนักพัฒนา ARM ที่ครอบคลุมมากขึ้นสำหรับข้อมูลเกี่ยวกับวิธีเร่งรุ่น TF Lite ของคุณโดยใช้ ARM NN TF Lite Delegate
วิธีที่เร็วที่สุดในการรวม ARM NN เข้ากับ แอพ Android คือการใช้ ไฟล์ ARM NN AAR (Android Archive) ของเรากับ Android Studio ไฟล์ AAR ได้อย่างดีแพคเกจแขน nn tf lite ตัวแทน, แขน nn ตัวเองและ acl; พร้อมที่จะรวมเข้ากับแอปพลิเคชัน Android ML ของคุณ การใช้ AAR ช่วยให้คุณได้รับประโยชน์จาก การสนับสนุนผู้ประกอบการที่กว้างขวาง ของผู้แทน ARM NN TF Lite เราถือ ARM AI Tech พูดคุย เกี่ยวกับวิธีเร่งแอพการแบ่งส่วนภาพ ML ใน 5 นาทีโดยใช้ไฟล์ AAR นี้ ในการดาวน์โหลดไฟล์ ARM NN AAR โปรดดูส่วน ไบนารีที่สร้างไว้ล่วงหน้า ด้านล่าง
นอกจากนี้เรายังมีแพ็คเกจ Debian สำหรับ ARM NN ซึ่งเป็นวิธีที่รวดเร็วในการเริ่มใช้ ARM NN และ TF Lite Parser (แม้ว่าจะมีการสนับสนุนผู้ให้บริการ ML น้อยกว่าผู้แทน TF Lite) มีคู่มือการติดตั้งที่นี่ซึ่งให้คำแนะนำเกี่ยวกับวิธีการติดตั้ง ARM NN Core และ TF Lite Parser สำหรับ Ubuntu 20.04
ในการสร้าง ARM NN ตั้งแต่เริ่มต้นเรามี เครื่องมือสร้างแขน NN เครื่องมือนี้ประกอบด้วย สคริปต์ Bash ที่มีพารามิเตอร์ พร้อมกับ Dockerfile สำหรับการสร้างแขน NN และการพึ่งพาของมันรวมถึง ARM Compute Library (ACL) เครื่องมือนี้แทนที่/แทนที่ส่วนใหญ่ของ ARM NN Build Guide ที่มีอยู่เป็นวิธีที่ใช้งานง่ายในการสร้างแขน NN ประโยชน์หลักของการสร้างแขน NN ตั้งแต่เริ่มต้นคือความสามารถใน การเลือกส่วนประกอบที่จะสร้างโดยกำหนดเป้าหมายสำหรับโครงการ ML ของคุณ
ระบบปฏิบัติการ | คลังเก็บเฉพาะสถาปัตยกรรม (ดาวน์โหลด) |
---|---|
Android (AAR) | |
Android 11 "R/Red Velvet Cake" (API Level 30) | |
Android 12 "S/Snow Cone" (API Level 31) | |
Android 13 "T/Tiramisu" (API Level 33) | |
Android 14 "U/upside Down Cake" (API Level 34) |
ARM NN ยังให้บริการไบนารี Multi-ISA ที่สร้างไว้ล่วงหน้าสำหรับ Android Binary V8A รวมถึงการสนับสนุนจากสถาปัตยกรรม V8A ขั้นพื้นฐานและสูงกว่า ไบนารี V8.2A รวมถึงการสนับสนุนจาก v8.2a และสูงกว่า เหล่านี้รวมถึงการสนับสนุนสำหรับ SVE, SVE2, FP16 และเมล็ดผลิตภัณฑ์ DOT บางส่วน เมล็ดเหล่านี้ต้องการฮาร์ดแวร์ที่เหมาะสมในการทำงาน
สถาปัตยกรรมหลาย ISA | รีลีสคลังเก็บ (ดาวน์โหลด) |
---|---|
Linux arm v8a | |
Linux Arm v8.2a | |
Android 31 v8a | |
Android 31 v8.2a |
ARM NN SDK รองรับรุ่น ML ในรูปแบบ Tensorflow Lite (TF Lite) และ ONNX
ผู้แทน TF Lite ของ ARM NN เร่งรุ่น TF Lite ผ่าน Python หรือ C ++ APIs ผู้ให้บริการ TF Lite ที่ได้รับการสนับสนุนจะถูกเร่งโดย ARM NN และผู้ให้บริการที่ไม่ได้รับการสนับสนุนใด ๆ จะได้รับการมอบหมาย (ทางเลือก) ไปยัง Runtime TF Lite Runtime - รับรองการสนับสนุนผู้ให้บริการ 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 ซึ่งใช้เลเยอร์ Abstraction ของฮาร์ดแวร์ (HAL) สำหรับ Android NNAPI เมื่อไดรเวอร์ Android NN ถูกรวมเข้ากับอุปกรณ์ Android รุ่น ML ที่ใช้ในแอปพลิเคชัน Android จะถูกเร่งโดย ARM NN โดยอัตโนมัติ
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับส่วนประกอบ ARM NN โปรดดูเอกสารของเรา
ARM NN เป็นองค์ประกอบสำคัญของแพลตฟอร์มการเรียนรู้ของเครื่องซึ่งเป็นส่วนหนึ่งของโครงการ Intelligence Machine Intelligence Linaro
สำหรับคำถามที่พบบ่อยและคำแนะนำการแก้ไขปัญหาดูคำถามที่พบบ่อยหรือดูปัญหา GitHub ก่อนหน้านี้
วิธีที่ดีที่สุดในการเข้าร่วมคือการใช้ซอฟต์แวร์ของเรา หากคุณต้องการความช่วยเหลือหรือพบปัญหาโปรดยกระดับเป็นปัญหา GitHub อย่าลังเลที่จะดูปัญหาที่เปิดกว้างของเราด้วย นอกจากนี้เรายังยินดีรับข้อเสนอแนะเกี่ยวกับเอกสารของเรา
คำขอคุณสมบัติที่ไม่มีอาสาสมัครที่จะนำไปใช้จะถูกปิด แต่มีฉลาก 'Help Wanted' ซึ่งสามารถพบได้ที่นี่ เมื่อคุณพบปัญหาที่เหมาะสมอย่าลังเลที่จะเปิดใหม่และเพิ่มความคิดเห็นเพื่อให้วิศวกรแขน NN รู้ว่าคุณกำลังทำงานอยู่และสามารถช่วยได้
เมื่อมีการใช้งานฟีเจอร์ฉลาก 'Help Wanted' จะถูกลบออก
โครงการ ARM NN ยินดีต้อนรับผลงาน สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับการมีส่วนร่วมใน ARM NN โปรดดูหน้าการบริจาคในเว็บไซต์ mlplatform.org หรือดูคู่มือผู้สนับสนุน
โดยเฉพาะอย่างยิ่งหากคุณต้องการใช้แบ็กเอนด์ของคุณเองถัดจากแบ็กเอนด์ CPU, GPU และ 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:
เครื่องมือ | ใบอนุญาต (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 | มิกซ์ | header-file-file std :: library ผู้ช่วยที่เข้ากันได้ของระบบไฟล์ | 1.3.2 | https://github.com/gulrak/filesystem |
ครึ่ง | มิกซ์ | IEEE 754 Conformant Library จุดลอย | 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 |
-รูปแบบการฉกรรจ์ |
-wno-missing-braces |
-wconversion |
-wsign-Conversion |
-เวอร์เรอร์ |