ब्लॉग पर वापस

llama.cpp vs Ollama: 2026 में कौन चलाएँ?

10 सितंबर 2026

ज़्यादा से ज़्यादा tokens/second और पूरा कंट्रोल चाहिए तो कच्चा llama.cpp; एक कमांड में install और box से बाहर चलने वाला API server चाहिए तो Ollama। Ollama कोई मुक़ाबले का engine नहीं है — वह एक Go सर्विस है जो llama.cpp को अपने inference backend की तरह bundle करती है, model management जोड़ती है (ollama pull llama3.1), और port 11434 पर REST API देती है। इसलिए असली सवाल “कौन सा engine तेज़ है” नहीं, बल्कि “उस engine के knobs पर आपको कितना कंट्रोल चाहिए” है। क्योंकि Ollama बचाव वाले defaults भेजती है (Q4_K_M quantization, सीमित context, flash attention तो अभी कुछ समय पहले तक नहीं), एक जैसे हार्डवेयर के आँकड़े भी खुलकर अलग निकल सकते हैं। आगे: असल में क्या अलग है, स्पीड का गैप कहाँ से आता है, दोनों में चलता एक ही मॉडल, और एक decision table।

llama.cpp और Ollama में फ़र्क़ क्या है?

llama.cpp inference engine है: GGUF के बनाने वाले Georgi Gerganov का एक ही C/C++ project, जो quantized मॉडल CPU पर, GPU पर या दोनों के मिश्रण पर चलाता है। इसमें one-shot prompts के लिए llama-cli मिलता है, llama-server — एक OpenAI-compatible HTTP server — और engine के सारे tuning flags: GPU layer offload, KV-cache quantization, speculative decoding, custom samplers।

Ollama उसी engine के ऊपर बना product है। वह llama.cpp को fork और vendor करता है, फिर उसके चारों ओर लपेटता है:

  • एक model registry (ollama pull, ollama list), GGUF weights के automatic splitting के साथ,
  • Modelfile system (prompt templates और parameters के लिए Dockerfile जैसी spec),
  • एक background daemon जो मॉडलों को VRAM में warm रखता है और अपना REST API देता है,
  • safe defaults के साथ automatic hardware detection।

अमली नतीजा: Ollama के साथ आप models सँभालते हैं; llama.cpp के साथ inference। अगर आपने कभी quantization format बदलना हो, KV cache quantize करना हो, context को default से ऊपर उठाना हो, या ख़ास layers को GPU पर pin करना हो — यह सब llama.cpp का इलाक़ा है। Ollama इन ज़्यादातर dial को छिपा लेती है — जानबूझकर।

llama.cppOllama
यह क्या हैInference engine (C/C++)llama.cpp को लपेटने वाली सर्विस
InstallSource से build या packageOne-line installer, एक binary
मॉडल चलानाllama-cli -m model.gguf + flagsollama run llama3.1
APIOpenAI-compatible (llama-server)अपना REST + OpenAI-compatible endpoint
Model managementGGUF फ़ाइलें आप ख़ुद लाते हैंRegistry: pull/list/rm
Defaultsसब कुछ आप चुनते हैंSafe: Q4_K_M, सीमित context
Engine updatesपहले ही दिन (upstream)Upstream releases से पीछे
Tuning की गहराईपूरी (KV quant, spec decode, samplers)सीमित passthrough
किसके लिए बेहतरPerformance का काम, servers, edge devicesशुरुआत, dev laptops

क्या llama.cpp, Ollama से तेज़ है?

एक ही GGUF फ़ाइल, वही quantization, वही context, वही llama.cpp version — नहीं, दोनों noise की दूरी पर बराबर हैं, क्योंकि गणित वैसे भी Ollama में llama.cpp ही करता है। आपको जो भी “Ollama 30% धीमा है” benchmark दिखे, वह असल में defaults की तुलना होती है। Gap तीन जगहों से आता है:

  1. Quantization का चुनाव। Ollama की registry default पर Q4_K_M देती है। वही मॉडल llama.cpp से Q5_K_M या Q6_K पर चलाएँ और लगभग उतनी ही स्पीड में हर token की quality बेहतर मिलती है — या कच्ची स्पीड के लिए Q4_0/IQ4 चुनें।
  2. Flash attention और KV-cache quantization। --flash-attn साथ में -ctk q8_0 -ctv q8_0 KV cache को बहुत छोटा कर देते हैं, जिससे लंबे context पर tokens/second बढ़ते हैं और उतनी ही VRAM में बड़ा context समाता है। Ollama इसमें से कुछ ही बाहर देती है।
  3. Version का पिछड़ापन। llama.cpp में kernel optimizations हर हफ़्ते आती हैं; Ollama upstream को अपनी मर्ज़ी के वक़्त पर merge करती है। llama.cpp का fresh build उसी मशीन पर महीनों पुराने Ollama binary से नापने लायक़ तेज़ हो सकता है — Ollama के पकड़ पाने तक।

Benchmark की quick कमांड, engine से निरपेक्ष — वह prompt evaluation और generation की स्पीड बताती है:

./build/bin/llama-bench -m Llama-3.1-8B-Instruct-Q4_K_M.gguf -ngl 99 -fa 1

इसे Ollama की अपनी model फ़ाइल पर चलाएँ (~/.ollama/models/blobs/..., .gguf में rename करके) और आम तौर पर आप Ollama के आँकड़े हूबहू पाएँगे — फिर 16k context पर -ctk q8_0 जोड़कर उनसे आगे निकल जाएँगे।

एक ही मॉडल दोनों में कैसे चलाएँ?

दोनों GGUF लेते हैं। हर एक के लिए कम से कम यह:

# --- Ollama रास्ता: install, pull, serve ---
curl -fsSL https://ollama.com/install.sh | sh
ollama run llama3.1:8b        # Q4_K_M डाउनलोड, VRAM में लोड, chat खुल जाती है

# इसका API, OpenAI-compatible अंदाज़ में:
curl -s http://localhost:11434/v1/chat/completions -d '{
  "model": "llama3.1:8b",
  "messages": [{"role": "user", "content": "Say hi in 5 words"}]
}'
# --- llama.cpp रास्ता: build, GGUF डाउनलोड, serve ---
git clone https://github.com/ggml-org/llama.cpp && cd llama.cpp
cmake -B build -DGGML_CUDA=ON    # या -DGGML_VULKAN=ON / -DGGML_HIP=ON
cmake --build build --config Release -j

huggingface-cli download bartowski/Meta-Llama-3.1-8B-Instruct-GGUF 
  Meta-Llama-3.1-8B-Instruct-Q4_K_M.gguf --local-dir models

./build/bin/llama-server -m models/Meta-Llama-3.1-8B-Instruct-Q4_K_M.gguf 
  -ngl 99 --ctx-size 16384 --flash-attn -ctk q8_0 -ctv q8_0 --port 8080

llama-server OpenAI Chat Completions schema देता है, इसलिए http://localhost:8080/v1/chat/completions पर वही curl बिना बदले चल जाता है। OpenAI API के लिए बना कोई भी tool — scripts, editors, RAG pipelines — किसी भी तरफ़ इशारा कर सकता है। असली काम flags करते हैं: -ngl 99 हर layer GPU पर उतार देता है, और --flash-attn साथ में -ctk/-ctv की जोड़ी 16k context को ऐसी 8 GB card में समा लेती है जिसे Ollama के defaults ने ठुकरा दिया होता।

GGUF फ़ाइल ही कैसे चुनें और quant labels का क्या मतलब है, इसके लिए देखें how to run GGUF models locally

Ollama कब ज़्यादा समझदारी भरा चुनाव है?

ज़्यादातर लोगों को Ollama से शुरुआत करनी चाहिए, और यह कोई तसल्ली वाला इनाम नहीं है:

  • आपको आज रात तक काम करता चाहिए। एक कमांड, model pull, API तैयार। llama.cpp का मतलब है backend चुनना (CUDA/Vulkan/HIP/Metal), build करना, और weights ख़ुद उठाना।
  • आप कई मॉडल सँभालते हैं। Registry, automatic unloading और Modelfiles, GGUF फ़ाइलों की डायरेक्टरियाँ हाथ से सँभालने से बेहतर हैं।
  • आपकी मशीन साधारण है। Ollama के defaults किसी वजह से बचाव वाले हैं — वे लगभग हमेशा समा भी जाते हैं और चल भी जाते हैं।
  • आपको API की स्थिर surface चाहिए। Ollama का daemon models का lifecycle सँभालता है ताकि कोई लंबा चलने वाला service यह जिम्मेदारी न उठाए।

कच्चा llama.cpp तब चुनें जब आप benchmark कर रहे हों, किसी भी scale पर serve कर रहे हों, phone या Raspberry Pi पर चला रहे हों, छोटी VRAM में लंबा context चाहिए, या कोई feature जिस दिन upstream में merge हो उसी दिन चाहिए। बड़े users अक्सर दोनों चलाते हैं: रोज़मर्रा के मॉडलों के लिए Ollama, और उस एक workload के लिए pinned llama.cpp build जिसे आख़िरी 20% चाहिए।

अगर आपकी तुलना असल में desktop GUI apps की है, तो वह अलग axis है — देखें Ollama vs LM Studio — और हर काम के हिसाब से engine, the best local LLMs for coding model वाला पहलू सँभालता है।

आख़िर इस्तेमाल कौन करे?

स्पीड से नहीं, कंट्रोल से फ़ैसला करें। Engine वही हैं; defaults नहीं। Ollama install करें अगर मक़सद “चल रहा है और API दे रहा है” है — आप कुछ ऐसे knobs खोते हैं जिन्हें आप घुमाने वाले ही नहीं थे। llama.cpp build करें अगर tokens/second, context length या quantization पर कंट्रोल मक़सद है — हर knob मिलता है, क़ीमत यह कि models आप ख़ुद सँभालें। हर हाल में चल रही GGUF फ़ाइलें वही हैं, और बाद में switch करने की क़ीमत एक दोपहर है, rewrite नहीं।

— mrsaynothing

Get the next one by email

One email per post. No spam, no algorithms.

self-hosted · no third parties · one-click unsubscribe

what is this?

Git Untracked Files हटाना: git clean की Safe गाइड

लेख पसंद आए? मैं पेशेवर रूप से ऐसे ही काम करता हूँ। मुझे हायर करें