Efficient On-Device Diffusion LLM Inference with Mobile NPU
यह शोध पत्र llada.cpp को प्रस्तुत करता है, जो पहला NPU-सचेत (NPU-aware) इन्फरेंस फ्रेमवर्क है जो मल्टी-ब्लॉक स्पेक्युलेटिव डिकोडिंग, ड्यूल-पाथ प्रोग्रेसिव रिवीज़न और एक स्वैप-ऑप्टिमाइज़्ड मेमोरी रनटाइम का उपयोग करके ऑन-डिवाइस डिफ्यूजन LLMs को त्वरित करता है ताकि मोबाइल हार्डवेयर की सीमाओं को दूर किया जा सके और CPU बेसलाइन की तुलना में 42x तक लेटेंसी में कमी लाई जा सके।
मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें
कल्पना कीजिए कि आपका स्मार्टफोन एक व्यस्त रसोई है, और शेफ (AI) एक कहानी लिखने की कोशिश कर रहा है।
समस्या: धीमा, एक-एक शब्द वाला शेफ
पारंपरिक रूप से, AI मॉडल (जैसे आपके फोन में) कहानियाँ एक बार में एक शब्द करके लिखते हैं। यह एक ऐसे शेफ की तरह है जिसे पहले एक प्याज काटना पड़ता है, फिर चूल्हा गर्म होने का इंतज़ार करना पड़ता है, फिर एक गाजर काटनी पड़ती है, और फिर से इंतज़ार करना पड़ता है। भले ही चूल्हा शक्तिशाली हो, शेफ को धीरे काम करने के लिए मजबूर किया जाता है क्योंकि वे एक समय में केवल एक ही काम कर सकते हैं। यह फोन पर लंबे टेक्स्ट जेनरेट करने के अनुभव को सुस्त बना देता है और बैटरी को भी खत्म करता है।
नया विचार: "डिफ्यूजन" (Diffusion) शेफ
एक नए प्रकार का AI, जिसे डिफ्यूजन लार्ज लैंग्वेज मॉडल (dLLM) कहा जाता है, अलग होने की कोशिश कर रहा है। एक-एक शब्द लिखने के बजाय, यह "शोर" (रैंडम बकवास) के एक पूरे पन्ने से शुरुआत करता है और उसे एक साथ एक वास्तविक वाक्य में बदलने की कोशिश करता है। यह एक ऐसे शेफ की तरह है जो सामग्री का एक पूरा ढेर काउंटर पर डालता है और फिर एक साथ एक बेहतरीन सलाद सजाने की कोशिश करता है।
यह सुनने में बहुत अच्छा लगता है क्योंकि यह फोन के सुपर-फास्ट "NPU" (न्यूरल प्रोसेसिंग यूनिट) का बेहतर उपयोग करता है—जो कि एक विशेष चिप है जिसे भारी, समानांतर गणित (parallel math) के लिए डिज़ाइन किया गया है। हालाँकि, इसमें एक पेच है:
- "खाली पैन" की समस्या: जैसे-जैसे शेफ सलाद बनाने के करीब पहुँचता है, ठीक करने के लिए कम सामग्रियाँ बचती हैं। शक्तिशाली NPU अंततः खाली बैठा रहता है क्योंकि करने के लिए पर्याप्त काम नहीं होता, जिससे उसकी गति बर्बाद होती है।
- "ओह, मेरा इरादा बदल गया" की समस्या: कभी-कभी शेफ एक शब्द व्यवस्थित करता है, लेकिन फिर उसे एहसास होता है, "अरे, यह अगले वाक्य के साथ फिट नहीं बैठता।" AI को इसे ठीक करने के लिए पीछे जाना पड़ता है। फास्ट NPU पर ऐसा करना अव्यवस्थित है और सब कुछ धीमा कर देता है।
- "छोटा फ्रिज" की समस्या: NPU के पास एक बहुत छोटा, विशेष "फ्रिज" (मेमोरी) होता है जहाँ वह खाना पकाने के लिए सामग्रियाँ तैयार रखता है। यदि रेसिपी बहुत बड़ी है, तो शेफ को लगातार सामग्रियों को इस छोटे से फ्रिज में अंदर-बाहर करना पड़ता है, जिसमें बहुत समय लगता है और ऊर्जा बर्बाद होती है।
समाधान: llada.cpp
लेखकों ने इन तीनों समस्याओं को हल करने के लिए llada.cpp नामक एक नया सिस्टम बनाया है। इसे एक नए किचन रूल्स (नियमों) के रूप में देखें जो शेफ को उसके शक्तिशाली NPU का कुशलतापूर्वक उपयोग करने में मदद करते हैं।
1. मल्टी-ब्लॉक स्पेकुलेटिव डिकोडिंग: "अगली रेसिपी पर नज़र रखना"
उपमा: कल्पना कीजिए कि शेफ वर्तमान सलाद (ब्लॉक A) को खत्म कर रहा है, लेकिन NPU बोर हो रहा है क्योंकि अब केवल एक पत्ता काटने की बारी है। इंतज़ार करने के बजाय, सिस्टम कहता है, "हे, चलो अभी से अगले सलाद (ब्लॉक B) के लिए सामग्रियाँ तैयार करना शुरू कर देते हैं, बस इस स्थिति में कि अगर ज़रूरत पड़े।"
यह कैसे काम करता है: भले ही वर्तमान ब्लॉक 100% पूरा न हुआ हो, सिस्टम चुपके से भविष्य के शब्दों पर काम करना शुरू कर देता है। यह शक्तिशाली NPU को व्यस्त रखता है और इसका पूर्ण उपयोग सुनिश्चित करता है, ताकि वह खाली न बैठा रहे। यदि भविष्य के शब्द सही निकलते हैं, तो बहुत अच्छा! यदि नहीं, तो सिस्टम बस उन्हें हटा देता है और आगे बढ़ जाता है।
2. डुअल-पाथ प्रोग्रेसिव रिवीज़न: "फास्ट लेन बनाम स्लो लेन"
उपमा: NPU एक फॉर्मूला 1 रेस कार है: यह अविश्वसनीय रूप से तेज़ है लेकिन मोड़ बहुत अच्छी तरह से नहीं काट सकती। CPU एक भरोसेमंद, धीमी SUV है: यह छोटे, जटिल बदलाव करने में बहुत अच्छी है।
यह कैसे काम करता है: जब AI किसी शब्द को लेकर आश्वस्त होता है, तो NPU उसे सुरक्षित रखता है। लेकिन यदि AI अनिश्चित है और उसे किसी शब्द को "बदलने" की आवश्यकता है, तो llada.cpp तेज़ NPU रेस कार को रोकता नहीं है। इसके बजाय, यह चुपचाप "ठीक करने वाला" काम बैकग्राउंड में धीमे, अधिक लचीले CPU SUV को भेज देता है। NPU नए शब्दों के साथ आगे दौड़ता रहता है जबकि CPU चुपचाप पुराने शब्दों को ठीक करता रहता है।
3. स्वैप-ऑप्टिमाइज्ड मेमोरी रनटाइम: "व्यवस्थित पेंट्री"
उपमा: NPU का छोटा फ्रिज इतना छोटा है कि यदि आप सामग्रियाँ बेतरतीब ढंग से डालते हैं, तो आप चीजों को बदलने के लिए दरवाजा खोलने और बंद करने में ही सारा समय बिता देंगे।
यह कैसे काम करता है: llada.cpp एक सुपर-ऑर्गनाइज्ड पेंट्री मैनेजर की तरह काम करता है। यह पूरी रेसिपी को पहले से देखता है और यह तय करता है कि कौन सी सामग्रियाँ अभी फ्रिज में होनी चाहिए और कौन सी इंतज़ार कर सकती हैं। यह अगली खेप की सामग्रियाँ भी तैयार रखता है जबकि शेफ वर्तमान में खाना पका रहा होता है, ताकि दरवाजा कभी भी ज़्यादा देर तक खुला न रहे। यह डेटा को इधर-उधर ले जाने के कारण होने वाले "इंतज़ार के समय" को खत्म कर देता है।
परिणाम
लेखकों ने वास्तविक स्मार्टफोन (जैसे OnePlus Ace5 Pro) पर इसका परीक्षण किया।
- गति: उन्होंने पाया कि
llada.cppने पुराने तरीके की तुलना में AI को 17 से 42 गुना तेज़ बना दिया। - गुणवत्ता: लिखी गई कहानियाँ पहले जितनी ही अच्छी थीं; गति के कारण सटीकता से कोई समझौता नहीं हुआ।
- बैटरी: क्योंकि NPU ने काम जल्दी पूरा कर लिया और उसे खाली नहीं बैठना पड़ा, इसलिए फोन ने कुल मिलाकर कम ऊर्जा का उपयोग किया।
संक्षेप में, llada.cpp एक स्मार्ट मैनेजर है जो फोन के AI को यह सिखाता है कि अपने सुपर-फास्ट दिमाग (NPU) का उपयोग बिना ट्रैफिक में फंसे कैसे किया जाए, जिससे मोबाइल AI तुरंत और रिस्पॉन्सिव महसूस होता है।
अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?
आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।