डिवाइस ढूंढना और असाइन करना

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

एनएन एचएएल 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} फ़ॉर्मैट में होना चाहिए.