LiteRT की मदद से हार्डवेयर से तेज़ी लाने की सुविधा

हार्डवेयर ऐक्सेलरेटेड कंप्यूटिंग में, एआई मॉडल को तेज़ी से और बेहतर तरीके से चलाने के लिए, खास कंप्यूटर हार्डवेयर का इस्तेमाल किया जाता है. LiteRT के लिए, इसमें मुख्य रूप से एआई इन्फ़रेंस के लिए ग्राफ़िक्स प्रोसेसिंग यूनिट (जीपीयू) या न्यूरल प्रोसेसिंग यूनिट (एनपीयू) का इस्तेमाल करना शामिल है. साथ ही, सामान्य मकसद वाली सेंट्रल प्रोसेसिंग यूनिट (सीपीयू) वेक्टर के निर्देशों का इस्तेमाल करना भी शामिल है.

LiteRT Compiled Model API, दो चरणों में तेज़ी से काम करता है:

  1. कंपाइलेशन: किसी खास हार्डवेयर के साथ काम करने के लिए मॉडल तैयार करना.
  2. डिस्पैच: चुने गए ऑपरेशन को हार्डवेयर पर चलाता है.

कंपाइलेशन फ़ेज़ में, LiteRT मॉडल में बदलाव किया जाता है. इसके लिए, एक नया इंटरफ़ेस इस्तेमाल किया जाता है. यह इंटरफ़ेस, कंपाइलर प्लगिन के ज़रिए ज़्यादा सुविधाएँ उपलब्ध कराता है. मॉडल कंपाइलेशन, ग्राफ़ के एक्ज़ीक्यूट होने से पहले ही हो जाता है. इसे एओटी (ऐडवांस ऑफ़ टाइम) कहा जाता है. यह डिवाइस पर चलने के लिए, खास ग्राफ़ को तैयार करता है.

ऐक्सलरेटर के टाइप

LiteRT तीन तरह के ऐक्सेलरेटर उपलब्ध कराता है: एनपीयू, जीपीयू, और सीपीयू.

  • एनपीयू: Qualcomm AI Engine Direct और MediaTek NeuroPilot के लिए, आज से यूनिफ़ाइड इंटरफ़ेस उपलब्ध है.
  • GPU: कंपाइल किए गए मॉडल एपीआई का इस्तेमाल करके, OpenCL बैकएंड के साथ-साथ WebGPU और Metal बैकएंड.
  • सीपीयू: XNNPACK के साथ ऑप्टिमाइज़ किया गया एक्ज़ीक्यूशन डिफ़ॉल्ट रूप से चालू रहता है और हमेशा उपलब्ध रहता है.

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

जीपीयू ऐक्सेलरेटेड

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

// Create a compiled model targeting GPU
LITERT_ASSIGN_OR_RETURN(auto compiled_model,
    CompiledModel::Create(env, model, kLiteRtHwAcceleratorGpu));

जीपीयू ऐक्सेलरेटेड रेंडरिंग के बारे में ज़्यादा जानने के लिए, LiteRT के साथ जीपीयू ऐक्सेलरेटेड रेंडरिंग लेख पढ़ें

एनपीयू की मदद से तेज़ी लाना

LiteRT, एनपीयू का इस्तेमाल करने के लिए एक यूनीफ़ाइड इंटरफ़ेस उपलब्ध कराता है. इससे आपको अलग-अलग वेंडर के कंपाइलर, रनटाइम या लाइब्रेरी डिपेंडेंसी को अलग-अलग नेविगेट करने की ज़रूरत नहीं पड़ती. यह AOT और डिवाइस पर कंपाइल करने के दोनों पाथ के लिए, Qualcomm और MediaTek के एनपीयू के साथ काम करता है.

LiteRT के साथ एनपीयू का इस्तेमाल करने के लिए, आम तौर पर मॉडल को Play for On-device AI (PODAI) के साथ बदलकर कंपाइल करना होता है. इसके बाद, Play AI Pack और Feature Module की मदद से मॉडल को डिप्लॉय करना होता है.