ARM NN هو محرك الاستدلال الأكثر تعليماً للآلة (ML) لنظام Android و Linux ، مما يتسارع ML على CORTEX-A ARM CPU و ARM MALI GPU . محرك الاستدلال ML هذا هو SDK مفتوح المصدر الذي يسد الفجوة بين أطر الشبكة العصبية الحالية و IP ARM الموفرة للطاقة.
يتفوق ARM NN على مكتبات ML العامة بسبب التحسينات الخاصة ببنية ARM (مثل SVE2) عن طريق استخدام مكتبة حساب ARM (ACL) . لاستهداف Ethos-N NPUs ، تستخدم ARM NN برنامج تشغيل Ethos-N NPU. لتسريع Arm Cortex-M ، يرجى الاطلاع على CMSIS-NN.
تتم كتابة ARM NN باستخدام Portable 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 الخاص بك باستخدام مندوب الذراع nn tf lite.
أسرع طريقة لدمج ARM NN في تطبيق Android هي استخدام ملف ARM NN AAR (أرشيف Android) مع Android Studio . يقوم ملف AAR بتعبئة الذراع nn tf lite مندوب ، ذراع nn نفسه و ACL ؛ جاهز للدمج في تطبيق Android ML الخاص بك. يتيح لك استخدام AAR الاستفادة من دعم المشغل الواسع لمندوب الذراع nn tf lite. عقدنا حديثًا تقنيًا للذراع حول كيفية تسريع تطبيق تجزئة صور ML في 5 دقائق باستخدام ملف AAR هذا. لتنزيل ملف ARM NN AAR ، يرجى الاطلاع على قسم الثنائيات المدمجة أدناه.
نحن نقدم أيضًا حزم Debian لـ ARM NN ، والتي تعد طريقة سريعة لبدء استخدام ARM NN و TF Lite Parser (وإن كان مع دعم مشغل ML أقل من TF Lite Peacegate). يوجد دليل تثبيت متوفر هنا والذي يوفر إرشادات حول كيفية تثبيت Arm nn Core و TF Lite Parser لـ Ubuntu 20.04.
لبناء ARM NN من الصفر ، نقدم أداة بناء ARM NN . تتكون هذه الأداة من برامج نصية باش معلمة مصحوبة برسوم Dockerfile لبناء ARM NN وتبعياتها ، بما في ذلك مكتبة حساب ARM (ACL) . تستبدل هذه الأداة/تحل محل غالبية أدلة البناء الموجودة في ARM NN كطريقة سهلة الاستخدام لبناء ARM NN. الفائدة الرئيسية لبناء ARM 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 المستوى 33) | |
Android 14 "U/Upside Down Cake" (API Level 34) |
يوفر ARM NN أيضًا ثنائيات متعددة ISA مصممة مسبقًا لنظام Android. يشمل الثنائي 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 .
Arm NN's TF Lite Peacegate يسارع نماذج TF Lite من خلال Python أو C ++ APIs . يتم تسريع مشغلي Lite المدعوم من TF بواسطة ARM NN ويتم تفويض أي عوامل غير مدعومة (عائلية) إلى وقت تشغيل TF Lite المرجعي - لضمان دعم مشغل ML واسع النطاق. الطريقة الموصى بها لاستخدام ARM NN هي تحويل النموذج الخاص بك إلى تنسيق TF Lite واستخدام مندوب TF Lite. يرجى الرجوع إلى أدلة البداية السريعة لمزيد من المعلومات حول كيفية استخدام مندوب TF Lite.
يوفر ARM NN أيضًا محلات TF Lite و ONNX التي هي مكتبات C ++ لدمج نماذج TF Lite أو ONNX في تطبيق ML الخاص بك. يرجى ملاحظة أن هؤلاء المحللين لا يوفرون تغطية واسعة من مشغل ML مقارنةً بمندوب الذراع nn tf lite.
لدى مطوري تطبيقات Android ML عددًا من الخيارات لاستخدام ARM NN:
يوفر ARM أيضًا سائق Android-NN الذي يقوم بتطبيق طبقة تجريد الأجهزة (HAL) لنظام Android NNAPI. عندما يتم دمج برنامج تشغيل Android NN على جهاز Android ، سيتم تسريع نماذج ML المستخدمة في تطبيقات Android تلقائيًا بواسطة ARM NN.
لمزيد من المعلومات حول مكونات ARM NN ، يرجى الرجوع إلى وثائقنا.
ARM NN هو عنصر رئيسي في منصة التعلم الآلي ، والتي تعد جزءًا من مبادرة ذكاء Machine Linaro.
للحصول على الأسئلة الشائعة واستكشاف الأخطاء وإصلاحها ، راجع الأسئلة الشائعة أو إلقاء نظرة على مشكلات جيثب السابقة.
أفضل طريقة للمشاركة هي استخدام برنامجنا. إذا كنت بحاجة إلى مساعدة أو تواجه مشكلة ، فيرجى رفعها كمسألة github. لا تتردد في إلقاء نظرة على أي من مشكلاتنا المفتوحة أيضًا. نرحب أيضًا بالتعليقات على وثائقنا.
يتم إغلاق طلبات الميزات دون وجود متطوع لتنفيذها ، ولكن لديها علامة "Help Wanted" ، ويمكن العثور عليها هنا. بمجرد العثور على مشكلة مناسبة ، لا تتردد في إعادة فتحها وإضافة تعليق ، بحيث يعرف مهندسو Arm NN أنك تعمل عليها ويمكن أن تساعد.
عند تنفيذ الميزة ، ستتم إزالة ملصق "Help Wanted".
يرحب مشروع ARM NN بالمساهمات. لمزيد من التفاصيل حول المساهمة في ARM NN ، يرجى الاطلاع على الصفحة المساهمة على موقع mlplatform.org ، أو انظر دليل المساهم.
خاصة إذا كنت ترغب في تنفيذ الواجهة الخلفية الخاصة بك بجوار وحدة المعالجة المركزية و GPU و NPU الخلفية ، فهناك أدلة لتطوير الخلفية: دليل تطوير الواجهة الخلفية ، دليل تطوير الواجهة الخلفية الديناميكية.
يحتوي دليل Armnn/Tests على اختبارات مستخدمة أثناء تطوير ARM NN. يعتمد العديد منهم على IP الجهات الخارجية ، وبروتوبوفات النموذج وملفات الصور التي لم يتم توزيعها باستخدام ARM NN. تتوفر التبعيات لبعض الاختبارات بحرية على الإنترنت ، لأولئك الذين يرغبون في التجربة ، لكنهم لن ينفدوا من الصندوق.
يتم توفير ARM NN تحت رخصة معهد ماساتشوستس للتكنولوجيا. انظر الترخيص لمزيد من المعلومات. يتم قبول المساهمات في هذا المشروع بموجب نفس الترخيص.
تحتوي الملفات الفردية على العلامة التالية بدلاً من نص الترخيص الكامل.
SPDX-License-Identifier: MIT
يتيح ذلك معالجة الجهاز لمعلومات الترخيص بناءً على معرفات ترخيص SPDX المتوفرة هنا: http://spdx.org/licenses/
تتوافق ARM NN مع سياسة اللغة الشاملة لـ ARM ، وبأفضل على حد علمنا ، لا تحتوي على أي لغة غير شاملة.
إذا وجدت شيئًا يهتم بك ، فيرجى إرسال بريد إلكتروني إلى [email protected]
أدوات الطرف الثالث المستخدمة بواسطة ARM NN:
أداة | ترخيص (معرف SPDX) | وصف | إصدار | إثبات |
---|---|---|---|---|
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 |
-الطول بوث |
-بايس-فوت المشكلات |
-النتورف |
-WSIGN التحول |
-اليرور |