Android 10 में, Neural Networks API (NNAPI) ऐसे फ़ंक्शन की सुविधा देता है जिनकी मदद से, मशीन लर्निंग फ़्रेमवर्क लाइब्रेरी और ऐप्लिकेशन को उपलब्ध डिवाइसों के बारे में जानकारी मिलती है. साथ ही, यह भी तय किया जाता है कि मॉडल को किन डिवाइसों पर लागू करना है. उपलब्ध डिवाइसों के बारे में जानकारी देने पर, ऐप्लिकेशन को डिवाइस पर मिलने वाले ड्राइवर का सटीक वर्शन मिल जाता है. इससे, ऐप्लिकेशन को किसी अन्य डिवाइस के साथ काम करने में होने वाली गड़बड़ियों से बचा जा सकता है. ऐप्लिकेशन को यह तय करने की सुविधा देकर कि किस डिवाइस पर मॉडल के अलग-अलग सेक्शन लागू किए जाएं, ऐप्लिकेशन उस प्रॉडक्ट के हिसाब से ऑप्टिमाइज़ किए जा सकते हैं जिस पर वे डिप्लॉय किए गए हैं.
NN HAL 1.2 को लागू करने के लिए, डिवाइस खोजने और असाइन करने की सुविधा ज़रूरी है.
लागू करने का तरीका
एनएनएपीआई में डिवाइस खोजने और असाइन करने की सुविधाएं ठीक से काम कर सकें, इसके लिए IDevice.hal
में getType
और getVersionString
लागू करें. इससे फ़्रेमवर्क को डिवाइस का टाइप और ड्राइवर का वर्शन पाने में मदद मिलेगी.
हर डिवाइस के लिए, नीचे दी गई कैटगरी में से किसी एक कैटगरी के बारे में बताएं, जैसा कि DeviceType
types.hal
में बताया गया है.
OTHER
: ऐसा डिवाइस जो किसी भी अन्य कैटगरी में नहीं आता. इसमें विषम इंटरफ़ेस, एक हीIDevice
इंटरफ़ेस होता है. यह कई तरह के डिवाइसों को मैनेज कर सकता है. यह अलग-अलग तरह के डिवाइसों को मैनेज कर सकता है. ऐसे ड्राइवर को भी अलग-अलगIDevice
इंटरफ़ेस दिखाने चाहिए जो अलग-अलग डिवाइसों से जुड़े हों, ताकि कोई ऐप्लिकेशन उन डिवाइसों में से किसी भी डिवाइस को चुन सके.CPU
: सिंगल कोर या मल्टीकोर सीपीयू.GPU
: ऐसा जीपीयू जो NNAPI मॉडल को चला सकता है और OpenGL ES और Vulkan जैसे ग्राफ़िक एपीआई को तेज़ी से काम करने में मदद कर सकता है.ACCELERATOR
: एक खास न्यूरल प्रोसेसिंग यूनिट (एनपीयू).
लागू किए गए डिवाइस की वर्शन स्ट्रिंग पाने के लिए, IDevice.hal
में getVersionString
को लागू करें.
इस तरीके से ऐसी स्ट्रिंग होनी चाहिए जिसे कोई भी व्यक्ति आसानी से पढ़ सके. स्ट्रिंग का फ़ॉर्मैट, वेंडर के हिसाब से होता है. ड्राइवर के हर नए वर्शन के लिए वर्शन स्ट्रिंग अलग होनी चाहिए.
IDevice
इंटरफ़ेस का नाम, {VENDOR}-{DEVICE_NAME}
फ़ॉर्मैट के हिसाब से होना चाहिए.