హలో, 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 కు ఇప్పుడు మీ NVIDIA GPU ని వాడుకునే నేటివ్ Windows ఇన్స్టాలర్ ఉంది. 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 ఇంజినీర్. ల్యాబ్ నుంచి లోకల్-ఫస్ట్ సిస్టమ్లు, సెల్ఫ్-హోస్టెడ్ ఇన్ఫ్రాస్ట్రక్చర్, స్వయంచాలక టూల్స్ నిర్మిస్తారు.