رصد الأجهزة وتحديدها

في Android 10، تقدّم Neural Networks API (NNAPI) دوالّ تتيح لتطبيقات ومكتبات إطار عمل تعلُّم الآلة الحصول على معلومات عن الأجهزة المتاحة وتحديد الأجهزة التي سيتم تنفيذ النموذج عليها. من خلال تقديم معلومات عن الأجهزة المتاحة، يمكن للتطبيقات الحصول على الإصدار الدقيق من برامج التشغيل المتوفّرة على الجهاز لتجنُّب حالات عدم التوافق المعروفة. من خلال منح التطبيقات القدرة على تحديد الأجهزة التي ستنفِّذ أقسامًا مختلفة من النموذج، يمكن تحسين التطبيقات للمنتج الذي يتم نشرها عليه.

يجب أن تتوفّر إمكانية اكتشاف الأجهزة وتحديدها لتنفيذ حِزم NN HAL 1.2.

التنفيذ

لتفعيل ميزتَي اكتشاف الجهاز وتحديد وظيفته في NNAPI، نفِّذ getType وgetVersionString في IDevice.hal للسماح للإطار بالحصول على نوع الجهاز وإصدار برنامج التشغيل.

حدِّد النوع لكل جهاز على أنّه إحدى الفئات التالية كما هو موضح في DeviceType في types.hal.

  • OTHER: جهاز لا يندرج ضمن أي من الفئات الأخرى، بما في ذلك الواجهة غير المتجانسة، وهي واجهة IDevice واحدة تدير أجهزة متعددة، قد تكون من أنواع مختلفة. يجب أن يعرِض IDevice سائق لديه واجهة غير متجانسة أيضًا واجهات IDevice منفصلة تتوافق مع الأجهزة الفردية لكي يسمح للتطبيق بالاختيار من بين هذه الأجهزة.
  • CPU: وحدة معالجة مركزية أحادية النواة أو متعددة النوى
  • GPU: وحدة معالجة رسومات يمكنها تشغيل نماذج NNAPI وتسريع واجهات برمجة تطبيقات الرسومات، مثل OpenGL ES وVulkan
  • ACCELERATOR: وحدة معالجة عصبية مخصّصة (NPU)

نفِّذ getVersionString في IDevice.hal للحصول على سلسلة الإصدار لتنفيذ الجهاز. يجب أن تعرِض هذه الطريقة سلسلة يمكن لشخص عادي قراءتها. يعتمد تنسيق السلسلة على المورّد. يجب أن يكون سلسلة الإصدار مختلفة لكل إصدار جديد من برنامج تشغيل.

يجب أن يتّبع اسم واجهة IDevice تنسيق {VENDOR}-{DEVICE_NAME}.