Llama-Swap: लोकल LLM की सबसे परेशान करने वाली समस्या का समाधान

BBetter Stack
Computing/SoftwareConsumer ElectronicsInternet Technology

Transcript

00:00:00हमारा लोकल मॉडल सेटअप बहुत अच्छा काम करता है, जब तक हमें किसी दूसरे मॉडल की ज़रूरत नहीं पड़ती।
00:00:04अब हम लामा सर्वर को बंद कर रहे हैं, पोर्ट्स बदल रहे हैं, अपना OpenAI बेस URL अपडेट कर रहे हैं,
00:00:10रीलोड का इंतज़ार कर रहे हैं, और बस उम्मीद कर रहे हैं कि कुछ गड़बड़ न हो।
00:00:13यह सब इसलिए क्योंकि हमारा कोडिंग मॉडल क्विक चैट के लिए बहुत बड़ा है, और आपका छोटा मॉडल
00:00:18असली कोड के लिए बहुत कमज़ोर है।
00:00:19LlamaSwap इसे ठीक करता है।
00:00:21एक एंडपॉइंट, कई मॉडल्स, ऑटोमैटिक स्वैपिंग, और आपके टूल्स को पता भी नहीं चलेगा कि कुछ बदला है।
00:00:26मैं आपको अगले कुछ मिनटों में दिखाऊंगा कि इसे कैसे सेटअप करना है।
00:00:34ज़्यादातर लोकल LLM डेवलपर्स आखिरकार इसी दीवार से टकराते हैं।
00:00:37पहले आप कुछ सुविधाजनक इस्तेमाल करते हैं, जैसे लामा, lmstudio, कुछ ऐसा जो बस काम करे।
00:00:44क्योंकि वह करता है।
00:00:45और सच में यह बढ़िया है, क्योंकि वे काफी बेहतर हो गए हैं।
00:00:48लेकिन फिर हम और ज़्यादा कंट्रोल चाहने लगते हैं।
00:00:51आप सटीक लामा CPP फ्लैग्स, GPU लेयर प्लेसमेंट, शायद कॉन्टेक्स्ट साइज़, कस्टम बैकएंड्स, या
00:00:59एक्सपेरिमेंटल मॉडल्स भी चाहते हैं।
00:01:01तो आप रॉ लामा सर्वर के करीब जाते हैं, और वह बहुत अच्छा लगता है।
00:01:06जब तक आपको अहसास नहीं होता कि आपने बस एक समस्या को दूसरी से बदल लिया है।
00:01:09अब आप यह कर रहे हैं।
00:01:11आप अपना लामा सर्वर बंद कर रहे हैं, फिर QuinCoder शुरू कर रहे हैं, फिर पाँच मिनट बाद, आप
00:01:16क्या कर रहे हैं?
00:01:17आप अपना लामा सर्वर बंद कर रहे हैं।
00:01:18आप इन मॉडल्स के बीच झूल रहे हैं।
00:01:20और हर बार जब आप ऐसा करते हैं, तो कुछ न कुछ रुकता है, फिर से कनेक्ट होता है, फेल होता है, या चुपचाप
00:01:26गलत मॉडल का इस्तेमाल करता है।
00:01:27तो आप असल में जो करने की कोशिश कर रहे हैं, वह है सामने एक एंडपॉइंट रखना और
00:01:31उसके पीछे जो भी मॉडल चाहें उन्हें स्वैप करना।
00:01:33यह वही कमी है जिसे लामा स्वैप (LlamaSwap) पूरा करता है।
00:01:36अगर आपको ऐसे कोडिंग टूल्स पसंद हैं जो आपके वर्कफ़्लो को तेज़ करते हैं, तो सब्सक्राइब ज़रूर करें।
00:01:39हमारे वीडियो हर समय आते रहते हैं।
00:01:41अब इसके बारे में बात करने से पहले, मैं आपको दिखाता हूँ कि यह सब कैसे काम करता है।
00:01:44अभी लामा स्वैप एक पोर्ट पर लोकली चल रहा है।
00:01:48मेरे क्लाइंट को केवल यह बेस URL पता है, न कि Quin के लिए अलग URL, स्मॉल LM के लिए अलग,
00:01:55एंबेडिंग्स के लिए अलग URL, बस एक ही मुख्य द्वार।
00:01:58यहाँ दो मॉडल्स के साथ एक छोटा सा कॉन्फ़िग है।
00:02:02तो एक QuinCoder है, दूसरा small LM2 है।
00:02:06और हर एक की अपनी कमांड है।
00:02:09हर एक की अपनी मॉडल फाइल है।
00:02:11हर एक का अपना कॉन्टेक्स्ट साइज़ है।
00:02:14और इन दोनों के बीच का अंतर यह है कि इनमें से हर एक का अपना TTL भी है।
00:02:19अब मैं कोडिंग मॉडल से कुछ पूछूँगा।
00:02:22मैं एक सामान्य OpenAI स्टाइल चैट रिक्वेस्ट भेजता हूँ।
00:02:25मॉडल फ़ील्ड कहता है QuinCoder, ठीक है, बहुत बढ़िया।
00:02:30चलिए लॉग्स देखते हैं।
00:02:32यह तब तक इंतज़ार करता है जब तक बैकएंड चालू न हो जाए, फिर रिक्वेस्ट आगे भेज देता है।
00:02:36अब यहाँ वह चीज़ है जो नहीं हो रही है।
00:02:39मैं URL नहीं बदल रहा हूँ।
00:02:41मैं ओपन वेब UI को रीस्टार्ट नहीं कर रहा हूँ।
00:02:43मैं कर्सर (Cursor) में इसे एडिट नहीं कर रहा हूँ।
00:02:46मैं सिर्फ एक फ़ील्ड बदल रहा हूँ।
00:02:48तो मॉडल QuinCoder से small LM2 पर चला जाता है, वही एंडपॉइंट, वही क्लाइंट, अलग मॉडल।
00:02:55और जब मॉडल इस TTL से ज़्यादा समय तक खाली बैठा रहता है, तो लामा स्वैप उसे अनलोड कर सकता है
00:02:59ताकि आपकी VRAM वापस आ जाए।
00:03:00यही पूरी तरकीब है।
00:03:02आपके टूल्स को लगता है कि वे एक ही API से बात कर रहे हैं।
00:03:04लामा स्वैप पर्दे के पीछे की सारी उलझनों को संभालता है ताकि चीज़ों पर असल कंट्रोल रहे।
00:03:09ठीक है, बहुत बढ़िया।
00:03:10तो लामा स्वैप क्या है?
00:03:11मैंने यहाँ डेमो दिया ही है, है ना?
00:03:12इसे अपने लोकल मॉडल्स के लिए एक हब की तरह समझें।
00:03:13आपके ऐप्स सीधे हर मॉडल सर्वर से बात नहीं करते।
00:03:16वे लामा स्वैप से बात करते हैं।
00:03:19फिर लामा स्वैप मॉडल फ़ील्ड को देखता है और तय करता है कि क्या होना चाहिए।
00:03:21अगर मॉडल पहले से चल रहा है, तो वह रिक्वेस्ट को आगे बढ़ा देगा।
00:03:25अगर मॉडल नहीं चल रहा है, तो वह उसे शुरू करेगा।
00:03:28अगर किसी दूसरे मॉडल को हटने की ज़रूरत है, तो वह उसे रोक देगा।
00:03:31फिर आपके क्लाइंट को एक सामान्य रिस्पॉन्स मिलता है।
00:03:35तो हर 10 मिनट में बेस URL बदलने की ज़रूरत नहीं है।
00:03:38इसमें एक बाइनरी, एक कॉन्फ़िग फ़ाइल और एक स्थिर API एंडपॉइंट है।
00:03:41इसमें एक बाइनरी, एक कॉन्फिग फाइल और एक स्थिर API एंडपॉइंट है।
00:03:45यह OpenAI और Anthropic कम्पैटिबल APIs के लिए प्रॉक्सी के रूप में काम करता है और यह
00:03:48llama cpp, vllm, tabby API जैसे बैकएंड्स के सामने बैठ सकता है।
00:03:53किस्मत से आपके पास डिस्क पर 10 या 20 मॉडल्स हो सकते हैं, लेकिन VRAM केवल
00:03:59एक या दो को ही लोड रखने के लिए काफी होती है।
00:04:05TTL इसमें मदद करता है।
00:04:06अगर कोई मॉडल काफी समय तक खाली रहता है, तो लामा स्वैप उसे अनलोड कर सकता है।
00:04:08तो आपकी GPU एक ऐसे मॉडल को पकड़ कर नहीं बैठी रहती जिसे हम असल में इस्तेमाल नहीं कर रहे,
00:04:11बल्कि वह अगली रिक्वेस्ट के लिए मेमोरी खाली कर सकती है।
00:04:17पहले आपको याद रखना पड़ता था कि क्या चल रहा है।
00:04:20अब कॉन्फ़िग आपके लिए यह याद रखता है।
00:04:23इस मोड़ पर साफ़ सा सवाल है कि सिर्फ लामा या LM Studios या सीधा लामा सर्वर ही क्यों न इस्तेमाल करें?
00:04:25और जवाब है, खैर, शायद आप ऐसा करें।
00:04:31लामा स्वैप हर बार इन्हें रिप्लेस नहीं करता।
00:04:32यह एक बहुत ही खास समस्या का समाधान करता है।
00:04:35लामा (Ollama) की तुलना में, लामा स्वैप कोई मॉडल स्टोर, डाउनलोडर या बिगिनर फ्रेंडली CLI नहीं है।
00:04:37यहाँ वह मकसद नहीं है।
00:04:40मकसद है कंट्रोल।
00:04:47आप अपनी खुद की लामा cpp बिल्ड्स लाते हैं, अपने फ्लैग्स लाते हैं, आप तय करते हैं कि
00:04:49हर मॉडल कैसे लॉन्च होगा।
00:04:50LM Studio की तुलना में लामा स्वैप ज़्यादा सर्वर-फर्स्ट है, इसमें GUI की ज़रूरत नहीं है।
00:04:55यह एक देव बॉक्स, होम लैब सर्वर, डॉकर (Docker) या शेयर्ड मशीन में बेहतर फिट बैठता है
00:04:57जहाँ टूल्स को बस एक स्थिर API चाहिए।
00:05:02यह 'ollama run llama 3' जितना आसान नहीं है।
00:05:07आपको अपनी मॉडल फाइलों की ज़रूरत है।
00:05:09आपको अपने बैकएंड को समझना होगा।
00:05:13आपको YAML लिखना होगा।
00:05:15आपको पता होना चाहिए कि कौन से फ्लैग्स आपके GPU के लिए सही हैं।
00:05:17इसमें कोई इन-बिल्ट मॉडल गैलरी नहीं है जो सब कुछ डाउनलोड और कॉन्फ़िगर कर दे।
00:05:19तो सच कहूँ तो, सेटअप करना काफी सिरदर्द है।
00:05:22लेकिन कुछ डेवलपर्स के लिए, यह एक बहुत ही खास परेशानी को हल करता है।
00:05:26वह परेशानी यह कि आप जानते हैं आपको कौन सा मॉडल चाहिए, लेकिन आप उसके आसपास की
00:05:29वायरिंग को ठीक करने में समय बर्बाद कर रहे हैं।
00:05:32अगर आप कर्सर, कंटिन्यू (Continue), कस्टम एजेंट्स या लोकल स्क्रिप्ट्स जैसे टूल्स इस्तेमाल करते हैं,
00:05:38तो यह आज़माने लायक है।
00:05:39यह उपयोगी साबित होगा, लेकिन इसका सेटअप थोड़ा मुश्किल है।
00:05:44तो यह है लामा स्वैप (LlamaSwap)।
00:05:47एक स्थिर API एंडपॉइंट, उसके पीछे कई लोकल मॉडल्स, ऑटोमैटिक स्वैपिंग, आइडल अनलोड,
00:05:49और पूरा बैकएंड कंट्रोल।
00:05:54यहाँ मुख्य विचार सरल है।
00:05:56आपके क्लाइंट्स को इस बात की चिंता छोड़ देनी चाहिए कि कौन सा मॉडल सर्वर असल में चल रहा है।
00:05:58लामा स्वैप उनके लिए यह सब खुद संभाल लेता है।
00:06:02अगर आपको इस तरह के कोडिंग टूल्स पसंद हैं, तो सब्सक्राइब करना न भूलें।
00:06:04मिलते हैं आपसे किसी और वीडियो में।
00:06:06अलविदा।

Key Takeaway

LlamaSwap एक स्थिर API एंडपॉइंट और YAML आधारित कॉन्फ़िगरेशन का उपयोग करके लोकल LLM वर्कफ़्लो से मैन्युअल सर्वर रीस्टार्ट और पोर्ट मैनेजमेंट की समस्या को समाप्त करता है।

Highlights

  • LlamaSwap एक ही API एंडपॉइंट के माध्यम से कई लोकल LLM के बीच ऑटोमैटिक स्वैपिंग की सुविधा देता है।

  • Time-to-Live (TTL) फीचर का उपयोग करके सिस्टम खाली बैठे मॉडल्स को अनलोड करता है ताकि VRAM को मुक्त किया जा सके।

  • यह टूल OpenAI और Anthropic के कम्पैटिबल API के लिए एक प्रॉक्सी के रूप में कार्य करता है।

  • llama.cpp, vLLM और Tabby API जैसे बैकएंड्स को एक स्थिर बेस URL के पीछे मैनेज किया जा सकता है।

  • डेवलपर्स को अपनी पसंद के GPU लेयर प्लेसमेंट, कॉन्टेक्स्ट साइज़ और कस्टम लामा CPP फ्लैग्स पर पूर्ण नियंत्रण मिलता है।

Timeline

लोकल LLM मैनेजमेंट की चुनौतियाँ

  • विभिन्न कार्यों के लिए अलग-अलग मॉडल इस्तेमाल करते समय बार-बार सर्वर बंद करना और पोर्ट बदलना पड़ता है।
  • कोडिंग और सामान्य चैट के लिए अलग-अलग आकार के मॉडल्स की ज़रूरत होती है जो अक्सर एक साथ लोड नहीं हो पाते।
  • सटीक GPU फ्लैग्स और कॉन्टेक्स्ट साइज़ पर नियंत्रण पाने की कोशिश में सेटअप की जटिलता बढ़ जाती है।

डेवलपर्स अक्सर बड़े कोडिंग मॉडल और छोटे चैट मॉडल के बीच स्विच करने के लिए मैन्युअल रूप से प्रोसेस को मारते हैं और URL अपडेट करते हैं। यह प्रक्रिया समय लेने वाली है और अक्सर कनेक्शन फेलियर का कारण बनती है। मैन्युअल बदलावों के बिना एक स्थिर इंटरफ़ेस की अनुपस्थिति ही मुख्य बाधा है।

LlamaSwap का कार्यात्मक डेमो

  • क्लाइंट केवल एक बेस URL का उपयोग करता है और मॉडल का नाम बदलकर बैकएंड बदल सकता है।
  • कॉन्फ़िगरेशन फ़ाइल में हर मॉडल के लिए अलग कमांड, मॉडल फ़ाइल पाथ और विशिष्ट TTL मान शामिल होते हैं।
  • सिस्टम रिक्वेस्ट मिलने पर मॉडल को लोड करता है और काम पूरा होने के बाद VRAM खाली कर देता है।

डेमो में QuinCoder और small LM2 जैसे मॉडल्स के बीच स्विच करने के लिए केवल चैट रिक्वेस्ट के मॉडल फ़ील्ड को बदला जाता है। कर्सर या ओपन वेब UI जैसे टूल्स में बिना किसी बदलाव के पर्दे के पीछे मॉडल बदल जाता है। TTL सेटिंग्स यह सुनिश्चित करती हैं कि GPU मेमोरी का उपयोग केवल सक्रिय रहने के दौरान ही हो।

आर्किटेक्चर और बैकएंड इंटीग्रेशन

  • LlamaSwap एक सिंगल बाइनरी और YAML कॉन्फ़िगरेशन फ़ाइल के रूप में संचालित होता है।
  • यह प्रॉक्सी के रूप में काम करते हुए आने वाली रिक्वेस्ट को सही सक्रिय मॉडल सर्वर पर रूट करता है।
  • डिस्क पर मौजूद दर्जनों मॉडल्स को सीमित VRAM क्षमता के भीतर कुशलतापूर्वक मैनेज किया जा सकता है।

यह टूल उन यूज़र्स के लिए डिज़ाइन किया गया है जो llama.cpp या vLLM जैसे रॉ सर्वर का उपयोग करना चाहते हैं लेकिन उन्हें एक सेंट्रलाइज्ड हब की ज़रूरत है। यह रिक्वेस्ट आने पर मॉडल शुरू करता है और यदि कोई अन्य मॉडल पहले से चल रहा है जिसे हटने की ज़रूरत है, तो उसे रोक देता है। यह हाइब्रिड सेटअप मैन्युअल निगरानी की आवश्यकता को खत्म करता है।

तुलना और सेटअप की शर्तें

  • Ollama या LM Studio के विपरीत, इसमें कोई इन-बिल्ट मॉडल स्टोर या GUI उपलब्ध नहीं है।
  • सफल सेटअप के लिए YAML लिखने और विशिष्ट GPU फ्लैग्स की तकनीकी जानकारी होना आवश्यक है।
  • यह होम लैब सर्वर या शेयर्ड देव मशीनों के लिए सबसे उपयुक्त है जहाँ एक स्थिर API की मांग होती है।

LlamaSwap शुरुआती यूज़र्स के लिए नहीं है क्योंकि इसमें ऑटोमैटिक डाउनलोडर की कमी है। यह उन प्रोफेशनल्स के लिए है जो अपने मॉडल्स के लॉन्च मापदंडों पर पूरा कंट्रोल चाहते हैं। हालाँकि इसका सेटअप चुनौतीपूर्ण है, लेकिन यह कोडिंग एजेंट्स और स्क्रिप्ट्स के लिए एक निरंतर चलने वाला बुनियादी ढांचा प्रदान करता है।

Community Posts

View all posts