- llamafile एक Mozilla Builders प्रोजेक्ट है, जो LLM की डिप्लॉयमेंट और रनिंग को एक ही executable फ़ाइल तक सीमित कर देता है, ताकि बिना इंस्टॉलेशन के अधिकांश operating systems और CPU architectures पर इसे लोकल रूप से चलाया जा सके
- इसका implementation llama.cpp और Cosmopolitan Libc को जोड़कर LLM चलाने की जटिलता को एक “llamafile” executable में समेटता है, और Mozilla.ai ने इस प्रोजेक्ट को नया रूप दिया है
- साथ में शामिल whisperfile, whisper.cpp जैसी Cosmopolitan packaging पर आधारित एक single-file speech-to-text टूल है, जो audio files की transcription और translation को सपोर्ट करता है
- v0.10.0 के बाद से यह नया build system इस्तेमाल करता है ताकि llama.cpp के नवीनतम versions के साथ तालमेल रखना आसान हो, जिससे नए models और features सपोर्ट होते हैं, हालांकि पहले से परिचित कुछ features हटे हो सकते हैं
- Windows में रन करने से पहले
.exe extension जोड़ना ज़रूरी है, और 4GB से बड़े executable Windows पर नहीं चल सकते, इसलिए अलग llamafile binary और external GGUF weights/model का इस्तेमाल करना पड़ता है
एकल फ़ाइल में LLM चलाना
- llamafile एक ऐसा प्रोजेक्ट है जो LLM को एक ही फ़ाइल में distribute और run करने की सुविधा देता है
- इसका लक्ष्य developers और end users, दोनों के लिए open LLM accessibility बढ़ाना है
- यह llama.cpp और Cosmopolitan Libc को एक framework में जोड़ता है
- इसका परिणाम “llamafile” नाम का एक single-file executable है, जो बिना इंस्टॉलेशन के लोकल रूप से चलता है
- इसका support अधिकांश operating systems और CPU architectures तक फैला है
Mozilla.ai का पुनर्गठन और संबंधित प्रोजेक्ट
- llamafile, Mozilla Builders का एक प्रोजेक्ट है, और फिलहाल Mozilla.ai ने इसका पुनर्गठन किया है
- प्रोजेक्ट का परिचय announcement blog post से जुड़ा है
- टीम इस बारे में राय ले रही है कि users को इसमें क्या मूल्यवान लगता है और इसे और उपयोगी कैसे बनाया जा सकता है
whisperfile शामिल है
- whisperfile llamafile में शामिल एक single-file speech-to-text टूल है
- यह whisper.cpp जैसी Cosmopolitan packaging पर आधारित है
- यह audio files की transcription और translation को सपोर्ट करता है
- इसे llamafile की तरह ही, उसी platform range में बिना इंस्टॉलेशन के इस्तेमाल किया जा सकता है
- इसका documentation Whisperfile में उपलब्ध है
v0.10.x में build system बदलाव
- 0.10.0 से llamafile नया build system इस्तेमाल कर रहा है
- नए build system का उद्देश्य यह है कि codebase को नवीनतम llama.cpp versions के साथ अधिक आसानी से sync में रखा जा सके
- इस बदलाव से नए models और features का support मिलता है
- साथ ही, पहले से परिचित कुछ features users को गायब लग सकते हैं
- इस बदलाव का high-level विवरण README_0.10.0.md में है
- जो users “classic experience” पसंद करते हैं, वे releases पेज से पुराने versions देख सकते हैं
- pre-built llamafile यह भी दिखाते हैं कि वे किस server version के साथ bundle किए गए हैं
Quickstart और Windows सीमाएँ
- उदाहरण model Qwen3.5 0.8B है, और README कुछ ही मिनटों में download और run करने का flow दिखाता है
curl -LO https://huggingface.co/mozilla-ai/llamafile_0.10/…
chmod +x Qwen3.5-0.8B-Q8_0.llamafile
./Qwen3.5-0.8B-Q8_0.llamafile
- यह model उन models में सबसे छोटा है जिन्हें प्रोजेक्ट ने llamafile के रूप में build किया है, इसलिए इसे इस उम्मीद में चुना गया है कि यह तुरंत काम करेगा
- अगर आपके पास अधिक शक्तिशाली hardware या GPU है, तो आप बड़े और अधिक expressive models चुन सकते हैं, जो अधिक सटीक responses दे सकते हैं
- Windows users को रन करने से पहले फ़ाइल नाम में
.exe extension जोड़ना होगा
- Windows पर केवल 4GB से छोटे executable ही चल सकते हैं
दस्तावेज़ और लाइसेंस
- पूरा documentation docs.mozilla.ai/llamafile पर उपलब्ध है
- मुख्य documentation अनुभाग:
- llamafile प्रोजेक्ट Apache 2.0 लाइसेंस के तहत है
- llama.cpp और whisper.cpp पर किए गए बदलाव मूल प्रोजेक्ट की तरह ही MIT लाइसेंस के तहत हैं, ताकि भविष्य में चाहें तो उन्हें upstream किया जा सके
1 टिप्पणियां
Hacker News की राय
LLaVA जैसे text+image मॉडल के साथ इसे आज़माना सबसे अच्छा लगता है। प्रक्रिया macOS के लिए है, लेकिन दूसरे platforms पर भी लगभग इसी तरह काम करेगी
llamafile-server-0.1-llava-v1.5-7b-q4डाउनलोड करेंwget https://huggingface.co/jartine/llava-v1.5-7B-GGUF/…chmod 755 llamafile-server-0.1-llava-v1.5-7b-q4चलाकर इसे executable बनाएं./llamafile-server-0.1-llava-v1.5-7b-q4चलाने पर port 8080 पर web server शुरू हो जाता हैscreenshot https://simonwillison.net/2023/Nov/29/llamafile/ पर है
अगर आपने chatgpt-web इस्तेमाल नहीं किया है, तो इसे आज़माने की सलाह है। नए GPT-4 मॉडल के साथ आप ChatGPT Plus की तुलना में बहुत कम खर्च में चैट कर सकते हैं, और चाहें तो पुराने, कम restricted GPT-4 मॉडल पर भी स्विच कर सकते हैं जो अब भी coding में वास्तव में अच्छा है
[0]: https://github.com/Niek/chatgpt-web
llamafile-server-0.1-llava-v1.5-7b-q4को मैंने अपने प्रोजेक्ट के लिए ज़रूरी tests पर चलाया, और vision queries समेत सब पास हो गया। रणनीतिक रूप से यह काफ़ी लोगों के लिए बड़ा बदलाव ला सकता हैUser: What is the third planet from the sun?Llama: The third planet from the sun is called Mars.Justine Tunney / jart का portability पर किया गया काम कमाल का है और सच में बहुत शानदार है, लेकिन इस टूल का use case अभी भी मुझे साफ़ नहीं है
मैं
llama.cppके लिए SwiftUI frontend वाला एक छोटा macOS app बना रहा हूँ, https://www.freechat.run। पहले version में मेरा ज़ोर इस बात पर था कि एक ही download के बाद तुरंत chat हो जाए और network connection शून्य रहे। मॉडल को app में bundle कर दिया, तो download, open, और तुरंत use करना आसान हो गया। लेकिन जब TestFlight beta users को UI updates भेजने की कोशिश की, तो उन्हें फिर से 3GB डाउनलोड करना पड़ा, और तीनों ने शिकायत कीउसके बाद मैंने default model download और UI को अलग कर दिया, ताकि app updates सिर्फ़ लगभग 5MB के हों। लगता है इस टूल के साथ भी जैसे ही आप नया
llama.cppupdate लेना चाहेंगे, वही समस्या बहुत जल्दी सामने आ जाएगी। हो सकता है कुछ मामलों में फ़र्क न पड़े, लेकिन यह कहाँ उपयोगी होगा, यह जानने की उत्सुकता हैhttps://justine.lol/cosmopolitan/, https://github.com/ggerganov/llama.cpp
मॉडल पहले से डाउनलोड करके व्यवस्थित रखे जा सकते हैं और तुरंत इस्तेमाल भी किए जा सकते हैं, लेकिन apps पूछे बिना उन्हें फिर से डाउनलोड कर देते हैं, जैसे user को कुछ पता ही नहीं
Makeayo अब कम से कम मॉडल का location पूछता है, इसलिए कुछ बेहतर है, लेकिन comfy/automatic में symbolic links का सहारा लेना बुरा लगता है। पहली run पर सिर्फ़ file location पूछ लें और settings में उसे बदलने दें, यह कोई मुश्किल काम नहीं है
cosmopolitan libcसच में एक शानदार करतब जैसा है, तारीफ़ के लायक है, और इसके वास्तविक use cases भी हैं, लेकिन ज़्यादातर उद्देश्यों के लिए यह व्यावहारिक नहीं लगताअगर हमारे पास ऐसा कोई बहुत भारी ELF-जैसा format होता जो मनचाहे जितने architectures और operating systems को support करता, तो क्या हम उसे इस्तेमाल करते? शायद नहीं
फिर भी,
zig ccको कुछ समय इस्तेमाल करने के बाद लगता है कि एक बार build करके एक विशाल universal binary बनाना कुछ हद तक उचित हो सकता है। microarchitecture-specific dispatch भी एक अच्छा पहलू है, इसलिए इसे लिखते-लिखते मैं खुद ही इसके विकल्प के पक्ष में सोचने लगा हूँलगता है यह किसी भी image को सही से देख नहीं पाता। फिर भी यह जवाब मज़ेदार था
User: Describe the image in the most detailed way possibleLlama: The image is a close-up of an empty, dark room with no visible objects or people...User: is it just a black square?Llama: Yes, it is just a black square.जब पूछा कि क्या यह सिर्फ़ सफ़ेद square है, तो इसने कहा कि नहीं, यह सिर्फ़ साधारण सफ़ेद square नहीं है, बल्कि gray और tan रंगों वाली किसी abstract image जैसा लगता है
Simon Willison की संबंधित पोस्ट अच्छी है: https://simonwillison.net/2023/Nov/29/llamafile/
यह मॉडल hallucination जिस तरह करता है, वह दिलचस्प है। Albert Bierstadt की “In the Mountains” (https://www.wikiart.org/en/albert-bierstadt/in-the-mountains...) दिखाने पर यह बार-बार ज़ोर देता रहा कि दृश्य में जगह-जगह गायें बिखरी हुई हैं
गायें नहीं हैं और शायद उसने चट्टानों को गाय समझ लिया है, यह कहने पर भी उसने इनकार किया, और जब फिर से कहा गया कि “गायें नहीं हैं”, तब जाकर उसने इसे पहाड़, झील, पेड़, पक्षी और नाव वाले एक शांत दृश्य के रूप में वर्णित किया
संबंधित सामग्री: https://hacks.mozilla.org/2023/11/introducing-llamafile/ तथा https://twitter.com/justinetunney/status/1729940628098969799
यह धारा https://news.ycombinator.com/item?id=38463456 और https://news.ycombinator.com/item?id=38464759 से आई है, लेकिन टिप्पणियाँ यहाँ मर्ज कर दी गई हैं
llama.cppके GGUF format मॉडलों को इस तरह कई बार चलाकर देख रहा हूँgit clone https://github.com/ggerganov/llama.cppcd llama.cppmake# M2 Max - 16 GB RAMwget -P ./models https://huggingface.co/TheBloke/OpenHermes-2.5-Mistral-7B-16k-GGUF/…./server -m models/openhermes-2.5-mistral-7b-16k.Q8_0.gguf -c 16000 -ngl 32# M1 - 8 GB RAMwget -P ./models https://huggingface.co/TheBloke/OpenHermes-2.5-Mistral-7B-16k-GGUF/…./server -m models/openhermes-2.5-mistral-7b.Q4_K_M.gguf -c 2000 -ngl 32ऐसी चीज़ के लिए Llaminate नाम भी ठीक लग सकता है। इसे एक सामान्य क्रिया की तरह भी इस्तेमाल किया जा सकता है, यानी llama-compatible मॉडल को सीधे उपयोग योग्य पैकेज में लपेट देना
Cosmopolitan से build किया गया होने के बावजूद CUDA support होना बढ़िया है। लगता है कि इस महीने Cosmopolitan ने GPU को संभव बनाने के लिए dynamic linking support का कुछ हिस्सा जोड़ा है: https://github.com/jart/cosmopolitan/commit/5e8c928f1a37349a...
अफ़सोस कि CUDA developer toolkit इंस्टॉल करना ज़रूरी है। अगर सिर्फ Nvidia driver होने पर बिना अलग dependency के चलने वाले CUDA app deployment तक यह पहुँच जाए, तो यह सचमुच game changer होगा
“फ़ाइल को USB stick में डालकर दराज़ में रख दो, तो यह भविष्य के प्रलय के लिए बीमा बन जाती है। फिर कभी language model के बिना रहना नहीं पड़ेगा” — यह पंक्ति पसंद आई