हार्डवेयर से तेज़ी लाने का मतलब है, एआई मॉडल को तेज़ी से और बेहतर तरीके से चलाने के लिए, खास कंप्यूटर हार्डवेयर का इस्तेमाल करना. LiteRT के लिए, एआई (AI) के अनुमान के लिए मुख्य रूप से ग्राफ़िक्स प्रोसेसिंग यूनिट (जीपीयू) या न्यूरल प्रोसेसिंग यूनिट (एनपीयू) का इस्तेमाल किया जाता है. साथ ही, सामान्य काम के लिए सेंट्रल प्रोसेसिंग यूनिट (सीपीयू) के वेक्टर निर्देशों का भी इस्तेमाल किया जाता है.
LiteRT, TFLite के प्रतिनिधि का इस्तेमाल करके हार्डवेयर की मदद से तेज़ी से काम करने की सुविधा देता है. यह ग्राफ़ में अपने ऑपरेशन को बदलकर, LiteRT ग्राफ़ के कुछ हिस्सों को कंट्रोल करता है. LiteRT Next, हार्डवेयर से तेज़ी लाने की प्रोसेस को दो चरणों में मैनेज करके, इस प्रोसेस को बेहतर बनाता है:
- कंपाइलेशन: किसी खास हार्डवेयर पर चलाने के लिए मॉडल तैयार करना.
- डिस्पैच: काम के हार्डवेयर पर चुने गए ऑपरेशन चलाएं.
कंपाइल करने के चरण में, LiteRT मॉडल को नए इंटरफ़ेस में बदल दिया जाता है. यह इंटरफ़ेस, कंपाइलर प्लग इन की मदद से ज़्यादा सुविधाएं देता है. मॉडल कंपाइलेशन, ग्राफ़ को लागू करने से पहले (एओटी) होता है. साथ ही, डिवाइस पर चलने के लिए किसी खास ग्राफ़ को तैयार करता है.
अलग-अलग तरह के ऐक्सेलरेटर
LiteRT तीन तरह के ऐक्सेलरेटर उपलब्ध कराता है: एनपीयू, जीपीयू, और सीपीयू.
- एनपीयू की मदद से, एक ही इंटरफ़ेस के ज़रिए खास हार्डवेयर का इस्तेमाल किया जा सकता है. एनपीयू से जुड़ी सहायता, रिलीज़ होने से पहले इस्तेमाल करने का ऐक्सेस देने वाले कार्यक्रम के ज़रिए उपलब्ध है.
- जीपीयू से तेज़ी लाने की सुविधा, WebGL और OpenCL की सुविधा वाले डिवाइसों पर काम करती है.
- सीपीयू ऐक्सेलरेशन, XNNPack लाइब्रेरी का इस्तेमाल करके, अलग-अलग प्रोसेसर के साथ काम करता है. यह ऐक्सेलरेशन का डिफ़ॉल्ट लेवल है और यह हमेशा उपलब्ध रहता है.
जब किसी हार्डवेयर पर कुछ जटिल ऑपरेशन उपलब्ध न हों, तो बेहतर परफ़ॉर्मेंस पाने के लिए, इन एक्सेलेरेटर को एक साथ इस्तेमाल किया जा सकता है. जब ऐक्सेलरेटर किसी ऑपरेशन के लिए मुकाबला करते हैं, तो LiteRT इनके क्रम में प्राथमिकता देता है: एनपीयू, जीपीयू, सीपीयू.
जीपीयू एक्सेलेरेशन
LiteRT Next के जीपीयू ऐक्सेलरेशन की मदद से, जीपीयू के हिसाब से इनपुट और आउटपुट बफ़र बनाए जा सकते हैं. साथ ही, जीपीयू मेमोरी में अपने डेटा के साथ जीरो-कॉपी हासिल की जा सकती है. साथ ही, पैरलल प्रोसेसिंग को बढ़ाने के लिए, टास्क को अलग-अलग क्रम में चलाया जा सकता है. LiteRT Next, नए और बेहतर GPU प्रतिनिधि का इस्तेमाल करता है. यह सुविधा LiteRT में उपलब्ध नहीं है.
LiteRT के साथ GPU पर मॉडल चलाने के लिए, साफ़ तौर पर प्रतिनिधि बनाने, फ़ंक्शन कॉल करने, और ग्राफ़ में बदलाव करने की ज़रूरत होती है. LiteRT Next में, सिर्फ़ ऐक्सेलरेटर की जानकारी दें:
// Create a compiled model targeting GPU
LITERT_ASSIGN_OR_RETURN(auto compiled_model,
CompiledModel::Create(env, model, kLiteRtHwAcceleratorGpu));
जीपीयू की परफ़ॉर्मेंस बेहतर बनाने के बारे में ज़्यादा जानने के लिए, LiteRT ऐक्सेलरेशन की मदद से जीपीयू की परफ़ॉर्मेंस बेहतर करना लेख पढ़ें
एनपीयू से तेज़ी
LiteRT Next, एक यूनिफ़ाइड इंटरफ़ेस उपलब्ध कराता है. इससे, आपको अलग-अलग वेंडर के कंपाइलर, रनटाइम या लाइब्रेरी डिपेंडेंसी पर जाने की ज़रूरत नहीं पड़ती. एनपीयू को तेज़ करने के लिए LiteRT Next का इस्तेमाल करने से, वेंडर और डिवाइस के हिसाब से होने वाली कई समस्याओं से बचा जा सकता है. साथ ही, रीयल-टाइम और बड़े मॉडल के अनुमान लगाने की प्रोसेस की परफ़ॉर्मेंस बेहतर होती है. साथ ही, ज़ीरो-कॉपी हार्डवेयर बफ़र के इस्तेमाल से, मेमोरी कॉपी कम हो जाती है.
LiteRT के साथ एनपीयू का इस्तेमाल करने के लिए, Play for डिवाइस पर मौजूद एआई (पीओडीएआई) के साथ मॉडल को बदलना और कंपाइल करना होता है. साथ ही, Play के एआई पैक और फ़ीचर मॉड्यूल के साथ मॉडल को डिप्लॉय करना होता है.