gekro
GitHub LinkedIn
Local LLM

हॅलो, Ollama: लोकल इन्फरन्स हा तुमचा आर्किटेक्चरचा विमा आहे

6 मिनिटांचे वाचन

हा इंग्रजी मूळ लेखाचा यांत्रिक अनुवाद आहे. काही बारकावे हरवू शकतात, म्हणून संदर्भासाठी इंग्रजी आवृत्तीच ग्राह्य धरावी. मूळ लेख इंग्रजीत वाचा

थोडक्यात

Raspberry Pi वर LLM चालवणे हा फक्त छंद नाही; ती सिस्टीमच्या लवचिकतेसाठीची फॉलबॅक रणनीती आहे.
लोकल LLM चा मार्केटिंगचा कोन गोपनीयता आहे, पण इंजिनिअरिंगचे वास्तव लवचिकता आहे. जड कामासाठी मी Together AI वापरतो, पण माझा Raspberry Pi क्लस्टर शून्य-खर्चाचा फॉलबॅक म्हणून Ollama द्वारे क्वांटाइझ्ड Llama 3 मॉडेल चालवतो. हा लेख ARM हार्डवेअरवर बोर्ड वितळवल्याशिवाय प्रत्यक्षात चालणारी विशिष्ट मॉडेल आणि क्वांट पातळी सांगतो.

रात्री उशिरा बिल्ड सेशन सुरू असताना माझे इंटरनेट गेले आणि तरीही माझ्या Raspberry Pi वरील एक लोकल Llama 3 इन्स्टन्स प्रश्नांची उत्तरे देत होता, तेव्हा मला जाणवले की आपण एका निर्णायक वळणावर पोहोचलो आहोत. मूलभूत रीझनिंग कामांसाठी आपण आता अब्जावधी डॉलरच्या डेटा सेंटरशी कायम जोडलेल्या राहण्यावर अवलंबून राहिलेलो नाही. Gekro Lab मध्ये Ollama ही आर्किटेक्चरची विमा पॉलिसी आहे, जी एखाद्या प्रोव्हायडरच्या आउटेज दरम्यान माझे एजंट चालू ठेवते.

मी हे उदात्त कारणांसाठी सुरू केले नाही. ते कुतूहल आणि खर्च यांमुळे होते. मला गोष्टी सतत चालू हव्या होत्या म्हणजे मी शिकत राहीन, आणि मला हवे असलेल्या मॉडेल्सपर्यंतची पोहोच अशा खर्चामागे अडकलेली होती, ज्याची बांधिलकी स्वीकारायला मी तयार नव्हतो. विजेच्या किमतीत शांतपणे चालत राहणारा एक Pi दोन्ही समस्या सोडवतो. हळू, होय. तरीही चालू.

आर्किटेक्चर

माझा सेटअप एकच मशीन नाही; ती एक वितरित इन्फरन्स साखळी आहे. जटिल क्लाउड रीझनिंगसाठी मी Together AI ला प्राधान्य देतो, पण लॅबची “मज्जासंस्था” Ollama चालवणाऱ्या तीन-नोड Raspberry Pi 5 क्लस्टरवर (प्रत्येकी 16GB) आधारित आहे.

मॉडेलआकारक्वांट पातळीRAM वापरटोकन/सेकंद (Pi 5 16GB)सर्वोत्तम वापर
Llama-3-8B4.7GBQ4_K_M~5.2GB4-6 t/sसामान्य रीझनिंग
Phi-3-Mini2.3GBQ4_0~2.8GB12-15 t/sजलद वर्गीकरण
Mistral-7B4.1GBQ4_0~4.5GB3-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 Burani

लेखक

Rohit Burani

AI इंजिनिअर, जे लॅबमधून लोकल-फर्स्ट सिस्टीम, सेल्फ-होस्टेड इन्फ्रास्ट्रक्चर आणि स्वायत्त टूल्स तयार करतात.

वाचल्याबद्दल धन्यवाद.

हा लेख आवडला असेल तर तो तुमच्या नेटवर्कसोबत शेअर करा.

← ब्लॉगवर परत जा