डिवाइस खोजने और असाइन करने की सुविधा

Android 10 में Neural Networks API (NNAPI) ऐसे फ़ंक्शन की सुविधा देता है जिनकी मदद से, मशीन लर्निंग फ़्रेमवर्क लाइब्रेरी और ऐप्लिकेशन को उपलब्ध डिवाइसों के बारे में जानकारी मिलती है. साथ ही, यह भी तय किया जाता है कि मॉडल को किन डिवाइसों पर लागू करना है. उपलब्ध डिवाइसों के बारे में जानकारी देने से, ऐप्लिकेशन को डिवाइस पर मौजूद ड्राइवर का सटीक वर्शन मिल जाता है. इससे, ऐप्लिकेशन के काम न करने की समस्या से बचा जा सकता है. ऐप्लिकेशन को यह तय करने की सुविधा देकर कि किन डिवाइसों को मॉडल के अलग-अलग सेक्शन को लागू करना है, ऐप्लिकेशन को उस प्रॉडक्ट के लिए ऑप्टिमाइज़ किया जा सकता है जिस पर उन्हें डिप्लॉय किया गया है.

NN HAL 1.2 को लागू करने के लिए, डिवाइस खोजने और असाइनमेंट की सुविधा ज़रूरी है.

लागू करना

NNAPI में डिवाइस डिस्कवरी और असाइनमेंट की सुविधाओं का इस्तेमाल करने के लिए, IDevice.hal में getType और getVersionString लागू करें. इससे फ़्रेमवर्क को डिवाइस टाइप और ड्राइवर वर्शन का पता चल पाएगा.

हर डिवाइस के लिए, टाइप को इनमें से किसी एक कैटगरी के तौर पर बताएं, जैसा कि types.hal में DeviceType में बताया गया है.

  • OTHER: ऐसा डिवाइस जो किसी भी अन्य कैटगरी में नहीं आता. इसमें अलग-अलग तरह के इंटरफ़ेस शामिल हैं. यह एक ऐसा IDeviceइंटरफ़ेस है जो अलग-अलग तरह के कई डिवाइसों को मैनेज करता है. अलग-अलग इंटरफ़ेस वाले ड्राइवर को अलग-अलग IDevice इंटरफ़ेस भी दिखाने चाहिए, ताकि ऐप्लिकेशन उन डिवाइसों में से किसी एक को चुन सके.
  • CPU: सिंगल कोर या मल्टीकोर सीपीयू.
  • GPU: ऐसा जीपीयू जो NNAPI मॉडल चला सकता है और OpenGL ES और Vulkan जैसे ग्राफ़िक एपीआई को तेज़ कर सकता है.
  • ACCELERATOR: खास तौर पर डिज़ाइन की गई न्यूरल प्रोसेसिंग यूनिट (एनपीयू).

डिवाइस पर लागू करने की वर्शन स्ट्रिंग पाने के लिए, IDevice.hal में getVersionString लागू करें. इस तरीके से ऐसी स्ट्रिंग दिखनी चाहिए जिसे कोई भी व्यक्ति आसानी से पढ़ सके. स्ट्रिंग का फ़ॉर्मैट, वेंडर के हिसाब से होता है. ड्राइवर के हर नए वर्शन के लिए वर्शन स्ट्रिंग अलग होनी चाहिए.

IDevice इंटरफ़ेस का नाम, {VENDOR}-{DEVICE_NAME} के फ़ॉर्मैट में होना चाहिए.