NNAPI ड्राइवर को लागू करने के सबसे सही तरीके

इस पेज पर, Neural Networks API (NNAPI) ड्राइवर लागू करने के सबसे सही तरीके बताए गए हैं. इससे ऐप्लिकेशन डेवलपर, NNAPI का ज़्यादा से ज़्यादा इस्तेमाल कर पाएंगे.

स्टार्टअप में कम समय लगना

अगर आपका ड्राइवर, मॉडल के वेट को पहली बार इस्तेमाल करने पर बदलता है, तो पक्का करें कि ड्राइवर, कंपाइलेशन कैश मेमोरी की सुविधा के साथ काम करता हो. इससे, ऐप्लिकेशन शुरू होने पर कंपाइलेशन में लगने वाला समय कम हो जाता है. यह ज़रूरी है, क्योंकि अगर ऐप्लिकेशन को शुरू होने में ज़्यादा समय लगता है, तो हो सकता है कि वे हार्डवेयर ऐक्सेलरेटेड रेंडरिंग का इस्तेमाल न करें. उदाहरण के लिए, कुछ ऐप्लिकेशन में 100 एमबी से ज़्यादा के वेट होते हैं. हर बार ऐप्लिकेशन लॉन्च होने पर, इन्हें ट्रांसफ़ॉर्म करना फ़ायदेमंद नहीं होता.

कम से कम इंतज़ार का समय कम करना

यह पक्का करने के लिए कि मॉडल, हार्डवेयर ऐक्सेलरेटर का इस्तेमाल करें, यह ज़रूरी है कि ड्राइवर में कम से कम देरी हो. कई ऐप्लिकेशन, छोटे मॉडल का इस्तेमाल करते हैं. इन्हें कई बार एक्ज़ीक्यूट किया जाता है. अगर किसी वर्कलोड को एक्ज़ीक्यूट करने में कम से कम समय लगता है, जैसे कि कुछ मिलीसेकंड, तो मॉडल हार्डवेयर ऐक्सेलरेटर का इस्तेमाल करने के बजाय, सीपीयू पर वर्कलोड चला सकते हैं. इसमें सिर्फ़ एक या दो मिलीसेकंड लगते हैं. थ्रेड सिंक्रनाइज़ेशन में लगने वाले ज़्यादा समय से सावधान रहें.

NN HAL SchedTune ग्रुप का इस्तेमाल करना

Android 11 या उसके बाद के वर्शन में, AOSP में एक खास NN HAL SchedTune ग्रुप शामिल है. इससे इंटरप्रोसेस NN HAL प्रोसेस, बड़े कोर का इस्तेमाल कर सकती हैं. यह पहले से तय किए गए top-app cgroup में, एक ही प्रोसेस को लागू करने जैसा है. इस SchedTune ग्रुप का इस्तेमाल करने से, ड्राइवर का ओवरहेड कम हो जाता है. खास तौर पर, छोटे मॉडल के लिए.

SchedTune ग्रुप का इस्तेमाल करने के लिए, NN HAL प्रोसेस की init.rc फ़ाइल में यह लाइन जोड़ें:

writepid /dev/stune/nnapi-hal/tasks