एनएनएपीआई ड्राइवर कार्यान्वयन सर्वोत्तम अभ्यास

यह पृष्ठ ऐप डेवलपर्स द्वारा एनएनएपीआई को व्यापक रूप से अपनाने की अनुमति देने के लिए न्यूरल नेटवर्क एपीआई (एनएनएपीआई) ड्राइवरों को लागू करने के लिए सर्वोत्तम प्रथाओं का वर्णन करता है।

स्टार्टअप समय कम रखें

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

न्यूनतम विलंबता कम करें

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

एनएन एचएएल शेड्यूलट्यून समूह का उपयोग करें

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

शेड्यूलट्यून समूह का उपयोग करने के लिए, एनएन एचएएल प्रक्रिया की init.rc फ़ाइल में निम्नलिखित पंक्ति जोड़ें:

writepid /dev/stune/nnapi-hal/tasks