7 पॉइंट द्वारा GN⁺ 2024-01-01 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Emacs Copilot लोकल में चलने वाले LLM (Large Language Model) का उपयोग करके Emacs buffer के भीतर code completion तैयार करता है
  • LLM एक sub-command के रूप में चलता है जो फ़ाइल-वार local editing history को याद रखता है, और C-g का उपयोग करके किसी भी समय LLM को रोका जा सकता है
  • कोड हटाते समय LLM के context से उस इतिहास को भी हटाया जा सकता है, और प्रोग्रामिंग भाषा फ़ाइल extension के आधार पर तय होती है, भाषा-विशेष पर निर्भर नहीं

WizardCoder 34b मॉडल

  • WizardCoder 34b एक उत्कृष्ट LLM है जिसने GPT-4 के समान HumanEval स्कोर प्राप्त किया है.
  • इस मॉडल का उपयोग करने के लिए Mac Studio M2 Ultra जैसे शक्तिशाली कंप्यूटर की आवश्यकता होती है, जबकि Macbook Pro उपयोगकर्ता Q3 वर्ज़न पर विचार कर सकते हैं, और सामान्य PC उपयोगकर्ता WizardCoder-Python-13b मॉडल चुन सकते हैं.
  • Raspberry Pi जैसी कम computing power वाली मशीनों के उपयोगकर्ता Phi-2 मॉडल का उपयोग कर सकते हैं.

शुरू करने का तरीका

  • फ़ंक्शन की पहली पंक्ति लिखने के बाद, C-c C-k दबाकर नियंत्रण LLM को सौंपें, फिर वह बाकी फ़ंक्शन implementation तैयार कर देगा.
  • LLM को इस तरह समायोजित किया गया है कि फ़ंक्शन पूरा होने पर वह रुक जाए, और यह explanation या ELI5 (आसान भाषा में समझाने वाली) टिप्पणियों से बचता है.

संदर्भ implementation

  • LLM डाउनलोड करने के बाद, नीचे दिया गया कोड Emacs buffer में कॉपी करें और M-x eval-buffer चलाएँ.
  • आप अपनी व्यक्तिगत पसंद के अनुसार कोड को समायोजित कर सकते हैं.

Emacs डाउनलोड लिंक

  • यदि Emacs इंस्टॉल नहीं है, या आप Windows जैसे ऐसे प्लेटफ़ॉर्म का उपयोग कर रहे हैं जहाँ इसे पाना कठिन है, तो इंस्टॉल किए बिना चलने वाली single-file build के लिए Emacs लिंक दिया गया है.

LLM डाउनलोड लिंक

  • कुछ ऐसे LLM के मुफ्त डाउनलोड लिंक दिए गए हैं जो Emacs Copilot के साथ अच्छी तरह काम करने के लिए जाने जाते हैं.
  • मॉडल का आकार अपने hardware के अनुसार चुना जा सकता है.

cache फ़ाइलें

  • यदि आप मॉडल बदलने का निर्णय लेते हैं, तो local file system में बनी सभी FILE.cache फ़ाइलों को हटाना होगा.

सावधानियाँ

  • macOS पर Apple Silicon का उपयोग करने की स्थिति में Xcode इंस्टॉल होना चाहिए.
  • zsh उपयोग करने पर इसे sh -c ./llamafile के साथ चलाना पड़ सकता है.
  • कुछ Linux सिस्टम पर binfmt_misc registration से संबंधित त्रुटियाँ आ सकती हैं.

समर्थित OS और CPU

  • llamafile कई operating systems को न्यूनतम installation requirements के साथ support करता है.
  • llamafile कुछ विशिष्ट CPU को support करता है, और इसके लिए SSSE3 या उससे ऊपर के instruction set वाले AMD64 microprocessor, या ARMv8a+ वाले ARM64 microprocessor की आवश्यकता है.

मॉडल के बारे में नोट

  • ऊपर दिए गए llamafile उदाहरणों को किसी विशेष मॉडल, license, या dataset के लिए Mozilla के समर्थन या सिफारिश के रूप में नहीं समझा जाना चाहिए.

GN⁺ की राय

  • नवोन्मेषी editing अनुभव: Emacs Copilot डेवलपर्स को coding assistance का एक नया स्तर देता है, जिससे efficiency और productivity में बड़ा सुधार आने की संभावना है.
  • accessibility और customization: उपयोगकर्ता अपनी ज़रूरत और पसंद के अनुसार LLM चुन सकते हैं और Emacs environment को समायोजित कर सकते हैं, जिससे personalized development environment बनाना संभव होता है.
  • तकनीकी compatibility: विभिन्न operating systems और CPU के support के कारण, Emacs Copilot का उपयोग व्यापक उपयोगकर्ता समूह कर सकता है, जिससे developer community में inclusiveness और accessibility बढ़ती है.

1 टिप्पणियां

 
GN⁺ 2024-01-01
Hacker News की राय
  • LLM/IDE इंटीग्रेशन की उपयोगिता पर सवाल

    यह निश्चित नहीं है कि LLM/IDE इंटीग्रेशन सामान्य coding काम में वास्तव में बड़ी productivity बढ़ोतरी देता है। किसी programmer की औसत productivity लगभग 100 LOC प्रति दिन हो सकती है, लेकिन prototype बनाते समय एक दिन में 1000 LOC से अधिक लिखना आसान होता है। production-quality code और hacking/prototyping की productivity में अंतर quality के कारण होता है, और अधिकांश सक्षम programmer खुद coding करके LLM या किसी अन्य source से copy किए गए code की तुलना में बेहतर quality का code बना सकते हैं। code का analysis करने, यह जाँचने कि उसमें vulnerabilities नहीं हैं, और भविष्य के maintenance के लिए design उचित है या नहीं, इसमें लगने वाला समय संभवतः code खुद न लिखने से मिलने वाले समय लाभ को खत्म कर देगा। सीखने के लिए या ऐसा one-off code लिखने में जहाँ quality महत्वपूर्ण नहीं है, LLM उपयोगी हो सकता है, लेकिन production code के लिए अभी उस स्तर तक पहुँचने में काफी समय है जहाँ LLM का output developer-स्तर का हो और उसे बारीकी से review/modify करने की आवश्यकता न पड़े।

  • self-hosted LLM tool development के लिए आभार

    self-hosted LLM tool development आगे बढ़ाने के लिए Justine का आभार व्यक्त किया गया। Llamafiles को standard होना चाहिए। पूछा गया कि क्या उसी LAN पर hosted किसी remote LLM से connect करने का कोई तरीका है; Apple device उपयोग नहीं करते, लेकिन network पर एक शक्तिशाली machine है और उसका उपयोग करना चाहते हैं। क्या Llamafile API दे सकता है, यह LSP क्षेत्र में जाता है, और Llamafiles का लाभ उठाना अच्छा होगा।

  • Emacs के साथ LLM इंटीग्रेशन का अनुभव साझा

    coding और technical documentation के अधिकांश काम के लिए Emacs का उपयोग करते हैं। phind-v2-codellama, openhermes, ollama, gptel, और GitHub Copilot चला रहे हैं। मनचाहे किसी region को LLM के पास भेजकर prompt करने की क्षमता पसंद है। UX अभी शुरुआती चरण में है, लेकिन कल्पना करें कि अगर base model सारे context (जैसे orgmode files और खुले file buffers) ले सके और LSP जैसे tools का उपयोग कर सके।

  • MacBook Pro M1 Max पर LLM चलाने का अनुभव

    MacBook Pro M1 Max, 64GB RAM का उपयोग कर रहे हैं, और 34B Q55 model (बड़ा model) डाउनलोड करके देखा कि यह ठीक से काम करता है। गति धीमी है, लेकिन उपयोग योग्य है। Asahi Fedora Linux partition पर चला रहे हैं, और GPU का उपयोग कैसे हो रहा है यह पता नहीं। environment को ZSH 5.9 से configure किया है, और SUDO के जरिए सीधे LLM को call करने पर यह जल्दी web server के रूप में load हो जाता है, जिससे localhost:8080 के जरिए web browser में interact किया जा सकता है। लेकिन Emacs से LLM चलाने की कोशिश करने पर "Doing vfork: Exec format error." त्रुटि आती है। Readme के demo के अनुसार isPrime function की शुरुआत टाइप करने के बाद C-c C-k दबाने पर यह error आती है। पूछा गया कि क्या गलत हो रहा हो सकता है।

  • video demonstration के is_prime function की आलोचना

    video demonstration में दिखाया गया is_prime function बहुत खराब है। input 2 से divide न भी हो, तब भी यह 4, 6, 8 आदि से modulo check करता रहता है, जो पूरी तरह निरर्थक है। code में सिर्फ एक line और जोड़ने से (odd check) loop को केवल odd संख्याओं तक सीमित किया जा सकता है और गति 2 गुना तेज हो सकती है। आशा है कि ऐसे LLM का उपयोग करने वाले लोग code को prod में push करने से पहले review करेंगे।

  • NixOS पर न चलने वाले llamafile build के बारे में प्रश्न

    पूछा गया कि क्या cosmopolitan/वास्तव में portable executable के बिना अपना llamafile build किया जा सकता है। यह NixOS पर नहीं चलता।

  • अधिक सामान्य LLM इंटीग्रेशन की मांग

    अभी जो दिया गया है उससे संतुष्ट हैं, लेकिन ऐसा अधिक सामान्य LLM इंटीग्रेशन चाहते हैं जो यह और LLM की बाकी सारी चीजें कर सके। उदाहरण के लिए, एक keypress से "इस code को पूरा करो" हो सकता है, लेकिन किसी दूसरे keypress से current buffer को जैसे का तैसा LLM को भेजा जा सके, या किसी region को LLM को भेजा जा सके, या region भेजकर उसे result से replace किया जा सके। input को LLM तक पहुँचाने के कुछ orthogonal functions (region, buffer, file, inline prompt) और result को अलग-अलग तरीकों से output करने वाले functions (point पर append करना, region overwrite करना, नए buffer में डालना आदि) हों, और इनके ऊपर code completion, prose आदि के लिए अलग-अलग automatic system prompts बनाए जा सकें।

  • Vim उपयोगकर्ता का LLM इंटीग्रेशन custom command साझा

    वर्तमान में चुने गए code को लेकर browser window खोलने और विभिन्न AI engines से उसमें सुधार माँगने वाला एक custom command उपयोग करते हैं। vimrc में इस्तेमाल किया जाने वाला command साझा किया।

  • Llamafile upgrade path पर सवाल

    Llamafile के upgrade path के बारे में पूछा गया। समझ यह है कि यह llama.cpp (बार-बार update होने वाली छोटी file) और model weights (कम update होने वाली बड़ी file) को एक में जोड़ता है। जिज्ञासा है कि जब भी llama.cpp में modification की ज़रूरत पड़े, क्या बदले बिना मौजूद model के कई gigabytes फिर से download करने पड़ेंगे।

  • LLM इंटीग्रेशन को लेकर रुचि और आज़माने की इच्छा

    यह बहुत दिलचस्प है और निश्चित रूप से इसे आज़माएँगे। लेकिन यह GitHub Copilot के काम करने के तरीके से काफी अलग है, इसलिए संभव है कि नाम अच्छी तरह नहीं चुना गया हो। Emacs की architecture आदि को देखते हुए यह आश्चर्यजनक है कि LLM के साथ इंटीग्रेशन पर अधिक development नहीं हुआ, लेकिन अधिकांश projects पर कई महीनों से काम नहीं हुआ है। फिर भी, संभव है कि Emacs उपयोग करने वालों में से अधिकांश लोग LLM का उपयोग करने के विरोधी हों।