हेलो, Ollama: लोकल इन्फ़रेंस आपका आर्किटेक्चरल बीमा है
यह अंग्रेज़ी मूल लेख का मशीनी अनुवाद है। कुछ बारीकियाँ छूट सकती हैं, इसलिए संदर्भ के लिए अंग्रेज़ी संस्करण ही मान्य है। अंग्रेज़ी में मूल लेख पढ़ें
संक्षेप में
जब देर रात के एक बिल्ड सेशन के दौरान मेरा इंटरनेट चला गया और फिर भी मेरे Raspberry Pi पर एक लोकल Llama 3 इंस्टेंस सवालों के जवाब दे रहा था, तब मुझे समझ आया कि हम एक निर्णायक मोड़ पर पहुँच गए हैं। बुनियादी रीज़निंग कामों के लिए अब हमें अरबों डॉलर के डेटा सेंटर से लगातार जुड़े रहने पर निर्भर नहीं रहना पड़ता। Gekro Lab में Ollama वह आर्किटेक्चरल बीमा पॉलिसी है जो किसी प्रोवाइडर के आउटेज के दौरान मेरे एजेंटों को चालू रखती है।
मैंने यह किसी नेक वजह से शुरू नहीं किया था। यह जिज्ञासा और लागत की बात थी। मैं चाहता था कि चीज़ें लगातार चलती रहें ताकि मैं सीखता रहूँ, और जिन मॉडलों तक मुझे पहुँचना था वे ऐसे ख़र्च के पीछे बंद थे जिसके लिए मैं प्रतिबद्ध नहीं होना चाहता था। एक Pi जो बिजली के दाम पर चुपचाप चलता रहे, दोनों समस्याएँ हल कर देता है। धीमा, हाँ। फिर भी चालू।
आर्किटेक्चर
मेरा सेटअप कोई एक मशीन नहीं है; यह एक वितरित इन्फ़रेंस चेन है। जटिल क्लाउड रीज़निंग के लिए मैं Together AI को प्राथमिकता देता हूँ, लेकिन लैब का “तंत्रिका-तंत्र” Ollama चलाने वाले तीन-नोड Raspberry Pi 5 क्लस्टर (हर एक 16GB) पर टिका है।
| मॉडल | आकार | क्वांट स्तर | RAM उपयोग | टोकन/सेकंड (Pi 5 16GB) | सबसे अच्छा उपयोग |
|---|---|---|---|---|---|
| Llama-3-8B | 4.7GB | Q4_K_M | ~5.2GB | 4-6 t/s | सामान्य रीज़निंग |
| Phi-3-Mini | 2.3GB | Q4_0 | ~2.8GB | 12-15 t/s | तेज़ वर्गीकरण |
| Mistral-7B | 4.1GB | Q4_0 | ~4.5GB | 3-4 t/s | टूल उपयोग / फ़ंक्शन कॉलिंग |
क्रम हार्डवेयर से ज़्यादा मायने रखता है। OpenRouter के मुफ़्त मॉडल पहले आते हैं, Pi बीच में बैठता है, और सशुल्क OpenRouter आख़िरी सहारा है। बीच की वह जगह सजावटी नहीं है। जब मुफ़्त टियर उपलब्ध नहीं होता, जो इतनी बार होता है कि नज़र आए, तब जवाब Pi देता है। उसने मुझे उन दिनों सचमुच काम करते रहने दिया जब विकल्प पैसे देना था।
वहाँ तक पहुँचने में कई दौर की कोशिश और भूल लगी। मैं सही बैठने वाला मॉडल ढूँढने के लिए मॉडल बदलता रहा, और हर बार सबक़ एक ही था: जब बड़ा मॉडल बहुत धीमा था, तो हल कम पैरामीटर और ज़्यादा भारी क्वांटाइज़ेशन था, ज़्यादा धैर्य नहीं।
ARM64 आर्किटेक्चर पर मेमोरी बैंडविड्थ अड़चन है। हर नोड में 16GB होने से मेरे पास इंटरनेट पर दिखने वाले आम 8GB Pi बिल्ड से बड़े मॉडल चलाने की गुंजाइश है। मैंने पाया है कि 4-बिट क्वांटाइज़ेशन (Q4) सबसे सही बिंदु है: इससे कम पर मॉडल अपनी “कॉमन सेंस” खो देता है, इससे ज़्यादा पर आप गुणवत्ता में ख़ास फ़ायदे के बिना सिस्टम ओवरहेड में कटौती करते हैं।
निर्माण
Linux पर (WSL2 और Raspberry Pi OS समेत) Ollama सेट करना एक ही लाइन का काम है, लेकिन असली इंजीनियरिंग इस बात में है कि आप उसे कैसे लपेटते हैं।
1. हेडलेस इंस्टॉल
मैं अपना Pi क्लस्टर हेडलेस चलाता हूँ। कोई GUI नहीं, बस SSH और एक systemd सर्विस।
# Install Ollama on Linux/Pi
curl -fsSL https://ollama.com/install.sh | sh
# Serve Ollama on all network interfaces (required for cluster access)
sudo systemctl edit ollama.service
अपने मुख्य वर्कस्टेशन से बाहरी कॉल की अनुमति देने के लिए सर्विस फ़ाइल में यह एनवायरनमेंट वेरिएबल जोड़ें:
[Service]
Environment="OLLAMA_HOST=0.0.0.0"
2. एब्स्ट्रैक्शन का बॉइलरप्लेट
अपने प्रयोगों में कच्चे Ollama API का सीधे इस्तेमाल न करें। फ़ॉलबैक-जागरूक क्लाइंट इस्तेमाल करें। यह उस लॉजिक का सरलीकृत रूप है जो मैं पूरी लैब में इस्तेमाल करता हूँ।
import ollama
import logging
class LocalBrain:
def __init__(self, model="llama3:8b"):
self.model = model
self.logger = logging.getLogger("GekroLocal")
def inference(self, prompt: str) -> str:
try:
self.logger.info(f"Running local inference on {self.model}...")
response = ollama.chat(model=self.model, messages=[
{'role': 'user', 'content': prompt},
])
return response['message']['content']
except Exception as e:
self.logger.error(f"Local inference failed: {e}")
return "ERROR: Brain Offline"
# Running a quantized test on the Pi
if __name__ == "__main__":
brain = LocalBrain(model="phi3:mini")
print(brain.inference("What is the current state of the Raspberry Pi cluster?"))
बोर्ड ख़ुद बता देता है कि वह काम कर रहा है
आप एक Pi को सोचते हुए सुन सकते हैं। मेरा गरम हो जाता था, पंखा तेज़ चलने लगता था, और उसके पास बैठकर मैं टर्मिनल देखे बिना बता सकता था कि वह किसी प्रॉम्प्ट के बीच में है। इस पैमाने पर थर्मल थ्रॉटलिंग स्पेक शीट की कोई अमूर्त लाइन नहीं है; यह आपकी डेस्क पर एक आवाज़ है। बाक़ी किसी भी चीज़ से पहले एयरफ़्लो की योजना बनाइए।
WSL2 नोट
अगर आप इसे Windows पर WSL2 में आज़मा रहे हैं, तो Ollama का अब एक नेटिव Windows इंस्टॉलर है जो आपके NVIDIA GPU का फ़ायदा उठाता है। Windows ऐप चलाइए, फिर उस GPU की ताक़त को अपने Linux एनवायरनमेंट से इस्तेमाल करने के लिए WSL2 के भीतर OLLAMA_HOST=172.x.x.x (आपके Windows Ethernet अडैप्टर का IP) सेट कीजिए।
समझौते
Raspberry Pi कोई H100 नहीं है। अगर आप Pi पर Llama 3-70B मॉडल चलाने की कोशिश करेंगे, तो वह सिर्फ़ धीमा नहीं होगा; OOM किलर प्रोसेस को ख़त्म कर देगा। अगर सस्ते SD कार्ड पर स्वैप चालू है, तो अकेली थ्रैशिंग आपका फ़ाइल सिस्टम करप्ट कर सकती है।
सबसे बड़ी नाकामी जो मुझे मिली, वह हीट थ्रॉटलिंग थी। एक भारी बैच-प्रोसेसिंग जॉब के दौरान Pi 5 का तापमान 85°C तक पहुँच गया और इन्फ़रेंस की रफ़्तार 0.5 टोकन प्रति सेकंड तक गिर गई। लैब के माहौल में लोकल LLM के लिए एक्टिव कूलिंग (Argon ONE केस को शाबाशी) वैकल्पिक नहीं है; अनिवार्य है।
साथ ही, क्लाउड स्तर की “रचनात्मकता” की उम्मीद न रखें। लोकल क्वांटाइज़्ड मॉडल एक्सट्रैक्शन, सारांश और बुनियादी लॉजिक के लिए बढ़िया हैं। बारीकियों या उच्च-स्तरीय रणनीतिक योजना के लिए वे ख़राब हैं।
आगे की राह
मैं फ़िलहाल कंकरेंसी-फ़र्स्ट रूटिंग के साथ प्रयोग कर रहा हूँ: एक अकेले मॉडल को तीनों नोड में बाँटने के बजाय तीनों Pi नोड का इस्तेमाल समानांतर इन्फ़रेंस रिक्वेस्ट सँभालने के लिए करना। लक्ष्य एक सचमुच का “संप्रभु ब्रेन” है जो सिर्फ़ फ़ॉलबैक की तरह नहीं, बल्कि क्लाउड मॉडलों के लोकल साथी की तरह काम करे और एक साथ तर्क कर रहे कई एजेंटों को सँभाल सके।
लेखक
Rohit BuraniAI इंजीनियर, जो लैब से लोकल-फ़र्स्ट सिस्टम, सेल्फ़-होस्टेड इंफ्रास्ट्रक्चर और स्वायत्त टूल बनाते हैं।