इस पेज पर, 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