6 पॉइंट द्वारा GN⁺ 2025-05-11 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Llama.cpp अब libmtmd के जरिए multimodal input (vision सहित) को सपोर्ट करता है
    • llama-mtmd-cli या llama-server के माध्यम से OpenAI-compatible /chat/completions API
  • Gemma 3, SmolVLM, Pixtral, Qwen 2/2.5, Mistra Small, InternVL आदि models में multimodal फीचर तुरंत इस्तेमाल किए जा सकते हैं
    • Pre-quantized models उपलब्ध हैं (ज़्यादातर में डिफ़ॉल्ट रूप से QK_K_M quantization शामिल है)
  • डिफ़ॉल्ट रूप से multimodal projector को GPU पर offload किया जाता है, और ज़रूरत पड़ने पर इसे disable करने की setting भी उपलब्ध है
  • कुछ models में बड़ी context window (उदाहरण: -c 8192) की ज़रूरत होती है

अवलोकन

  • Llama.cpp ने libmtmd का उपयोग करके multimodal input फीचर के लिए नया सपोर्ट जोड़ा है
  • अब उपयोगकर्ता image जैसे text के अलावा अन्य input भी प्रोसेस कर सकते हैं, जिससे vision models की उपयोगिता बढ़ती है
  • यह फीचर पहले से ही Gemma 3, SmolVLM, Pixtral, Qwen 2 VL, Qwen 2.5 VL, Mistral Small, InternVL जैसे प्रमुख models के साथ compatible है

multimodal input को सक्रिय करने का तरीका

  • दो मुख्य execution methods बताए गए हैं: पहला -hf option का उपयोग (supported model आवश्यक), और दूसरा -m तथा --mmproj options को मिलाकर text model और multimodal projector model को अलग-अलग specify करना
  • -hf option का उपयोग करते समय, अगर multimodal फीचर बंद करना हो तो --no-mmproj जोड़ें, और custom mmproj file का उपयोग करना हो तो --mmproj local_file.gguf option इस्तेमाल करें
  • GPU offloading डिफ़ॉल्ट है; यदि यह नहीं चाहिए तो --no-mmproj-offload option से इसे disable किया जा सकता है

उदाहरण commands

  • command line में llama-mtmd-cli और server में llama-server का उपयोग किया जाता है
  • local file का उपयोग करने पर --mmproj से file को सीधे specify किया जाता है
  • GPU offloading को disable करने के लिए --no-mmproj-offload option जोड़ा जाता है

तुरंत उपलब्ध multimodal models की सूची

  • Q4_K_M quantization पर आधारित कई ready-made models बताए गए हैं
  • supported models के उदाहरण:
    • Gemma 3: 4b, 12b, 27b versions
    • SmolVLM series: 256M, 500M, 2.2B आदि
    • Pixtral 12B
    • Qwen 2 VL: 2B, 7B और Qwen 2.5 VL: 3B, 7B, 32B, 72B
    • Mistral Small 3.1 24B (IQ2_M quantization)
    • InternVL 2.5 और 3 generations: विभिन्न parameter sizes का support

संदर्भ

  • उपयोग के समय (tool_name) की जगह इच्छित executable binary का नाम डालें (उदाहरण: llama-mtmd-cli या llama-server)
  • कुछ multimodal models के उपयोग में बड़ी context window size निर्दिष्ट करनी पड़ सकती है (उदाहरण: -c 8192 जैसे option का उपयोग)

1 टिप्पणियां

 
GN⁺ 2025-05-11
Hacker News राय
  • MBP M1 64GB पर ggml-org/gemma-3-4b-it-GGUF का उपयोग करके लगभग 25t/s की prompt processing speed और 63t/s की token generation speed मिली
    कुल image processing time, image size से स्वतंत्र होकर, लगभग 15 सेकंड है
    छोटा 4B मॉडल भी पहले से काफ़ी अच्छा output दिखाता है और विभिन्न images को अच्छी तरह वर्णित करता है
    पुनरुत्पादन का तरीका है: llama.cpp को clone करके build करें, model और mmproj फ़ाइल डाउनलोड करें, फिर server चलाएँ और web interface खोलें
    -hf option के बिना इस्तेमाल करने पर multimodal support error से बचने के लिए --mmproj switch ज़रूर देना होगा
    फ़िलहाल आधिकारिक ggml-org/gemma-3-4b-it-GGUF quant का उपयोग कर रहा हूँ
    danielhanchen द्वारा दिया गया unsloth quant शायद और तेज़ होगा, ऐसी उम्मीद है

    • हर image पर बिल्कुल एक जैसा जवाब आ रहा है
      "इस image में विभिन्न pose में कई लोग दिखाई दे रहे हैं…"
      जबकि असली image में ऐसा कुछ भी नहीं है, इसलिए समझ नहीं आ रहा debugging कहाँ से शुरू करूँ

    • मुझे भी लगातार वही परिणाम मिल रहा है
      मैंने पढ़ा था कि M1 पर 7b मॉडल इस्तेमाल करने पर prompt processing लगभग 10 गुना तेज़ होनी चाहिए
      सोच रहा हूँ शायद encoder optimize नहीं हुआ है

    • अगर आपके पास ऐसे example images हैं जो prompt से सीधे generate की गई हों, तो क्या दिखा सकते हैं?
      ख़ुद आज़माने से पहले एक बार देखना चाहूँगा

    • ये numbers 4/8-bit quant के लिए हैं या पूरे fp16 के लिए, यह जानना चाहता हूँ

  • llama.cpp को source से सीधे compile करना होगा
    इससे llama-mtmd-cli प्रोग्राम मिल जाता है
    मैंने vision support वाले quant बना रखे हैं
    इन्हें unsloth/gemma-3-4b-it-GGUF:Q4_K_XL जैसे command से चलाया जा सकता है
    chat के दौरान /image image.png से image upload करके बातचीत की जा सकती है
    अब Metal backend में -ngl -1 की ज़रूरत नहीं है
    CUDA में अभी भी इसकी ज़रूरत है
    -1 का मतलब है सभी GPU layers को GPU पर offload करना

    • अगर मदद मिले, तो मैंने docs वाले unsloth.ai page को अपडेट कर दिया है, वहाँ से सीधे llama-mtmd-cli का उपयोग देख सकते हैं
      यह Mistral Small के साथ भी काम करता है

    • Homebrew से llama.cpp install करने पर llama-mtmd-cli भी शामिल होता है
      बस command दें और तुरंत चला सकते हैं

    • दरअसल -ngl 99 ज़्यादा stable है, -ngl -1 चलेगा या नहीं, यह अलग-अलग हो सकता है

    • सिर्फ़ ngl शब्द देखते ही ग़ुस्सा आने लगता है

  • अभी तक मिला सबसे उपयोगी दस्तावेज़ यही है
    यह समझने में बहुत मदद करता है कि यह कैसे काम करता है
    https://github.com/ggml-org/llama.cpp/…

    • architecture के हिसाब से image-embedding preprocessing को अलग library में बाँटना दिलचस्प है
      यह कुछ वैसा ही है जैसे huggingface/tokenizers की तरह text transformer tools अलग किए जाते हैं
  • SmolVLM series भी supported है
    अपने छोटे size की वजह से यह बहुत तेज़ response देता है
    real-time home video surveillance system के लिए यह एकदम उपयुक्त है
    इसे hobby project के रूप में आज़माने का सोच रहा हूँ
    तेज़ command examples भी विस्तार से छोड़े गए हैं

    • server में mtmd feature जोड़ने के लिए धन्यवाद
      मैं भी commit का इंतज़ार करते हुए लगातार नज़र रखे हुए था

    • git commit notes देखते समय हर बार आपका contribution दिखता है, हमेशा प्रभावित होता हूँ
      पूरे llama.cpp पर भी आपने काफ़ी मेहनत की है

    • लेकिन इतनी high-speed response की quality कैसी है, यह जानना चाहता हूँ
      क्या 2.2B से छोटे models भी ठीक-ठाक context वाली sentences बना सकते हैं?

  • Gemma3 4b का उपयोग करके हाल की कई travel photos पर keywords और descriptions generate किए
    यह basic OCR भी कर लेता है, इसलिए text वाली photos का सार बता देता है, और context clues के आधार पर यह भी काफ़ी सही अंदाज़ा लगा लेता है कि फोटो कहाँ ली गई थी
    self-host किया जा सकने वाला मॉडल होने के हिसाब से यह शानदार है

    • सुनने में मज़ेदार लग रहा है
      क्या आप इसे इस तरह इस्तेमाल करते हैं कि images की list पर loop चलाकर हर एक पर prompt चलाते हैं, और फिर result को metadata या sqlite जैसी किसी जगह store करते हैं?

    • जानना चाहता हूँ कि gemma 4b इस तरह के काम के लिए वाकई काफ़ी है या नहीं
      मैंने सिर्फ़ बड़े versions इस्तेमाल किए हैं, इसलिए लगा था कि 4b कमज़ोर पड़ेगा

  • एक सामान्य user के नज़रिए से क्या बदला है, यह जानना चाहता हूँ
    कुछ महीने पहले भी llama.cpp से image description वगैरह किया जा सकता था, तो बदलाव क्या है?

  • llama.cpp विभिन्न platforms के लिए compiled releases देता है
    इस बार इसमें vision feature नया जोड़ा गया है
    macOS पर llama-b5332-bin-macos-arm64.zip डाउनलोड करके unzip करें, फिर sudo xattr command से execution allow करें
    इसके बाद llama-mtmd-cli से terminal interface इस्तेमाल किया जा सकता है
    या localhost:8080 पर web server भी चलाया जा सकता है, जिसमें UI और API दोनों शामिल हैं
    विस्तृत उपयोग अनुभव मैंने अपने व्यक्तिगत blog में संकलित किया है

    • brew से install करने पर --HEAD option के साथ हमेशा latest state से build किया जा सकता है
      कुछ घंटों में brew package version भी अपडेट हो जाएगा, इसलिए आसानी से upgrade किया जा सकेगा

    • convert_hf_to_gguf.py --mmproj की वजह से किसी भी vision model का quant बनाना काफ़ी आसान हो गया है
      llama-server में vision support आना बहुत शानदार है
      यह लंबे समय से प्रतीक्षित feature था

    • अब -ngl अपने-आप maximum value पर set हो जाता है
      -ngl 99 को manually देने की ज़रूरत नहीं है
      हालांकि यह सिर्फ़ Metal environment पर लागू है; CUDA आदि में अभी भी इसे explicitly देना होगा

  • gemma3 multimodal model को ollama के ज़रिए इस्तेमाल करने की तुलना में llama.cpp का अनुभव कैसा है, यह जानना चाहता हूँ
    खासकर Apple Silicon Mac पर इसके फ़ायदे या practical उपयोग अनुभव के बारे में जानना चाहता हूँ

    • दो फ़र्क हैं
      पहला, llama.cpp support, ggml ecosystem के भीतर horizontal integration के रूप में है, इसलिए इसे ollama की तुलना में ज़्यादा तेज़ चलने के लिए optimize किया जा सकता है
      उदाहरण के लिए, pixtral/mistral small 3.1 के लिए यह Ollama की तुलना में कम memory इस्तेमाल करने वाला 2D-RoPE trick देता है
      जल्द ही flash attention feature भी जोड़ा जाएगा, जिससे vision encoder और तेज़ तथा कम memory में चलेगा
      दूसरा, llama.cpp, ollama की तुलना में अधिक models को support करता है
      ollama, pixtral या smolvlm — दोनों में से किसी को भी support नहीं करता
  • जानना चाहता हूँ कि क्या UI development में vision को जोड़ने वाले कोई tools हैं
    उदाहरण के लिए, एक frontend TS/React hobby project में local/cloud LLM को VSCode से जोड़कर इस्तेमाल करता हूँ, लेकिन vision-enabled models में भी हर बार screenshot लेकर paste करना पड़ता है
    अगर इस हिस्से को पूरी तरह automate करने वाला, या कम से कम keyboard shortcut से screenshot लेकर अपने-आप chat में paste कर देने वाला कोई simple extension हो, तो बहुत समय बचेगा

  • ngl का संक्षेप बहुत उलझाऊ लगता है
    Mac पर जितना संभव हो उतना तेज़ चलाने के लिए इतने सारे tips और tuning सामने आना दिलचस्प है
    सोचता हूँ कि क्या ऐसी speed improvements से और ज़्यादा लोग घर पर vision features के साथ experiment करेंगे

    • बिल्कुल
      llama.cpp मेरे 10 साल पुराने PC और m1 Mac — दोनों पर बहुत अच्छी तरह चलता है