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