12GB या उससे कम GPU पर मॉडल स्विचिंग देरी को खत्म करने के लिए llama-swap सेटिंग्स

Computing/Software7 min read

TuBrief Editorial Written with AI assistance from the source video. The video is the authority. Source video: Llama-Swap: लोकल LLM की सबसे परेशान करने वाली समस्या का समाधान · Better Stack

VRAM क्षमता के अनुसार idle_timeout की गणना स्वयं करना

मध्यम-स्तर के GPU उपयोगकर्ताओं के लिए VRAM हमेशा एक सीमित संसाधन होता है। RTX 3060 या 4060 का उपयोग करते समय कई मॉडल चलाने से आप जल्दी ही इसकी सीमा तक पहुँच जाते हैं। 4-बिट क्वांटाइज़ेशन (Q4_K_M) वाला Llama 3.1 8B मॉडल अकेले 5.2GB वजन (weights) लेता है। विंडोज के बुनियादी उपयोग के 1GB को घटाने के बाद, केवल 2GB के आसपास जगह बचती है। यदि आप यहाँ जबरदस्ती और मॉडल लोड करते हैं, तो सिस्टम RAM का उपयोग करने वाला 'स्पिलओवर' शुरू हो जाता है। जब गति 15 टोकन प्रति सेकंड से गिरकर 1 टोकन पर आ जाती है, तो आप तुरंत उस प्रोसेस को बंद करना चाहेंगे।

इस बाधा को रोकने के लिए, आपको config.yaml में प्रत्येक मॉडल के लिए idle_timeout (निकासी समय) अलग से सेट करना होगा।

  • 8GB VRAM (RTX 3070/4060): globalTTL को 300 (5 मिनट) पर सेट करें। मॉडल रन कमांड (cmd) के पीछे --ctx-size 8192 जोड़ें ताकि KV कैश बची हुई पूरी मेमोरी को न सोख ले और आप OOM (Out of Memory) से बच सकें।
  • 12GB VRAM (RTX 3060 12G): अक्सर उपयोग होने वाले Phi-3 Mini को ttl: 0 के साथ हमेशा मौजूद रखें, और भारी Qwen 2.5 Coder 7B को ttl: 60 पर सेट करें ताकि कोडिंग समाप्त होते ही यह VRAM खाली कर दे।

इस तरह सेट करने से आप मॉडल को बार-बार मैन्युअल रूप से बंद करने और चालू करने में बर्बाद होने वाले दिन के कम से कम 20 मिनट बचा सकते हैं।

कई इन्फरेन्स इंजनों को एक पोर्ट में जोड़ने वाला YAML कॉन्फ़िगरेशन

Ollama का उपयोग करते समय llama.cpp पर स्विच करने से पोर्ट ओवरलैप और संसाधन संघर्ष (resource conflict) होता है। llama-swap इस अव्यवस्था को संभालने वाला एक ट्रैफिक पुलिस है। Go भाषा में बना यह हल्का प्रॉक्सी, नए मॉडल कॉल आने पर मौजूदा प्रोसेस को SIGTERM सिग्नल भेजकर उसे सुरक्षित रूप से बंद करता है और नया मॉडल लोड करता है।

स्थिर एकीकरण के लिए YAML लिखने का तरीका स्पष्ट है:

  1. macros सेक्शन में निष्पादन योग्य फ़ाइल पाथ और --flash-attn, --mlock जैसे सामान्य फ्लैग्स को पहले से परिभाषित करें। इससे कॉन्फ़िगरेशन फ़ाइल बहुत साफ सुथरी हो जाएगी।
  2. models आइटम के तहत ${PORT} मैक्रो का उपयोग करके प्रत्येक मॉडल का निष्पादन पाथ निर्दिष्ट करें।
  3. पहले से चल रही Ollama सेवा के लिए proxy फील्ड में http://localhost:11434 लिखकर केवल पाथ को कनेक्ट करें।

परिणामस्वरूप, आपके ऐप को केवल एक एड्रेस http://localhost:8080/v1 को देखना होगा। अंदर इंजन बदले या मॉडल, आपको चिंता करने की ज़रूरत नहीं होगी।

Cursor और Obsidian को लोकल एंडपॉइंट से जोड़कर सब्सक्रिप्शन शुल्क बचाना

लोकल LLM का उपयोग करने का असली कारण पैसा बचाना और व्यक्तिगत डेटा को सुरक्षित रखना है। Cursor मूल रूप से सशुल्क है, लेकिन OpenAI Compatible सेटिंग्स का उपयोग करके आप इसे लोकल llama-swap के साथ इस्तेमाल कर सकते हैं। इस तरह आप हर महीने 20 डॉलर, यानी साल के 240 डॉलर बचाते हैं।

कनेक्ट करने का तरीका सरल है:

  1. Cursor Settings > Models में OpenAI API Compatible को चालू करें और Base URL में http://localhost:8080/v1 डालें।
  2. API Key में आप कुछ भी डाल सकते हैं। llama-swap सेटिंग्स में वास्तविक मॉडल नाम के बजाय gpt-4o जैसा उपनाम (Alias) दें, तो Cursor इसे अपना पार्टनर समझकर तुरंत काम करने लगेगा।
  3. Obsidian Copilot प्लगइन में भी एम्बेडिंग मॉडल को nomic-embed-text पर सेट करें और llama-swap में ttl: 0 पर फिक्स करें।

नोट्स बनाते समय कोडिंग विंडो पर जाने पर भी, बैकएंड में मॉडल अपने आप स्वैप हो जाता है। सारा डेटा आपके कंप्यूटर के अंदर ही रहता है, इसलिए सुरक्षा की कोई चिंता नहीं है।

NSSM का उपयोग करके बैकग्राउंड सर्विस के रूप में पंजीकरण

हर बार टर्मिनल खोलकर प्रॉक्सी चालू करना बहुत थकाऊ काम है। AI को एक टूल की तरह इस्तेमाल करने के लिए, इसे हवा की तरह शांति से बैकग्राउंड में चलते रहना चाहिए। विंडोज उपयोगकर्ताओं के लिए, NSSM (Non-Sucking Service Manager) के साथ सेवा के रूप में llama-swap को पंजीकृत करना सबसे अच्छा तरीका है।

तरीका इस प्रकार है:

  1. टर्मिनल में winget install NSSM के साथ इसे इंस्टॉल करें, और एडमिनिस्ट्रेटर अधिकारों के साथ nssm install LlamaSwap टाइप करें।
  2. जब सेटिंग्स विंडो खुले, तो Path में llama-swap.exe का पाथ और Arguments में --config config.yaml -watch-config दर्ज करें।
  3. Process टैब में प्राथमिकता (priority) को High पर सेट करें। इससे अन्य कार्यों के कारण इन्फरेन्स की गति धीमी नहीं होगी।

अब कंप्यूटर चालू करते ही API एंडपॉइंट सक्रिय हो जाएगा। YAML कॉन्फ़िगरेशन फ़ाइल में बदलाव करने और उसे सहेजने पर, -watch-config विकल्प के कारण सेवा को रीस्टार्ट किए बिना नए बदलाव तुरंत लागू हो जाएंगे।

Flash Attention और कॉन्टेक्स्ट सीमा के साथ क्रैश रोकना

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

स्थिरता सुनिश्चित करने के लिए तीन उपाय यहाँ दिए गए हैं:

  1. cmd फील्ड में --ctx-size को 8192 के आसपास स्पष्ट रूप से निर्दिष्ट करें। इसे असीमित छोड़ने पर VRAM क्रैश हो सकता है।
  2. यदि मॉडल का आकार बड़ा है, तो लोडिंग का समय बढ़ जाएगा। healthCheckTimeout को लगभग 300 सेकंड पर सेट करें ताकि लोडिंग के दौरान प्रॉक्सी कनेक्शन न काटे।
  3. रनिंग ऑप्शन्स में --flash-attn अनिवार्य है। इसका उपयोग करने पर, आप उसी VRAM में 20% अधिक कॉन्टेक्स्ट का उपयोग कर सकते हैं।

8B मॉडल के आधार पर, स्वैपिंग लगभग 5 सेकंड में पूरी हो जाती है। यह वर्कफ़्लो में बाधा न डालने के लिए पर्याप्त है। भले ही आपके पास हाई-परफॉर्मेंस वर्कस्टेशन न हो, बस कुछ सेटिंग्स को ठीक करके आप अपने डेस्क पर एक सुखद AI वातावरण का आनंद ले सकते हैं।

Related Video

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

Better Stack6:09

More from the community

Comments

Log in to leave a comment.

No comments yet.