1 पॉइंट द्वारा GN⁺ 2024-10-12 | 1 टिप्पणियां | WhatsApp पर शेयर करें

lm.rs: Rust के साथ CPU पर लोकल language model inference चलाना

  • परिचय

    • lm.rs एक प्रोजेक्ट है जो Rust का उपयोग करके CPU पर language model inference चला सकता है.
    • यह Karpathy के llama2.c और llm.c से प्रेरित है, और ML लाइब्रेरी के बिना न्यूनतम कोड के साथ language model चलाने के लिए डिज़ाइन किया गया है.
    • पहले यह केवल Google के Gemma 2 मॉडल को सपोर्ट करता था, लेकिन अब Llama 3.2 मॉडल और PHI-3.5 image model को भी सपोर्ट करता है.
  • तैयार मॉडल

    • विभिन्न मॉडल और tokenizer के benchmark तथा download links उपलब्ध कराए गए हैं.
    • Q8_0, Q4_0 quantized models के उपयोग की सिफारिश की गई है.
    • गति 16-core AMD Epyc पर मापी गई है.
  • मॉडल रूपांतरण

    • Google/Meta के मॉडलों को lmrs फ़ॉर्मेट में बदला जा सकता है.
    • Python dependencies इंस्टॉल करने के बाद, export.py और tokenizer.py स्क्रिप्ट का उपयोग करके मॉडल और tokenizer बदले जा सकते हैं.
  • बिल्ड

    • Rust कोड को cargo से compile करके चलाया जा सकता है.
    • multimodal फीचर को सक्रिय करने के लिए multimodal फीचर शामिल करना होगा.
  • TODOs

    • sampling methods जोड़ना.
    • 9B और 27B मॉडल का परीक्षण.
    • multi-head attention loop का parallelization.
    • performance metrics जोड़ना.
    • system prompt उपलब्ध कराने की सुविधा जोड़ना.
    • quantization सपोर्ट (int8, int4).

# GN⁺ का सार

  • lm.rs, Rust में CPU पर language model चलाने का एक कुशल तरीका प्रदान करता है. यह ML लाइब्रेरी के बिना भी संभव है, इसलिए हल्के वातावरण में उपयोगी है.
  • यह Rust पहली बार उपयोग करने वाले डेवलपर्स के लिए भी उपयुक्त है, और कई मॉडलों को सपोर्ट करने के कारण इसकी extensibility अच्छी है.
  • PHI-3.5 जैसे multimodal मॉडल के सपोर्ट से image processing क्षमता भी शामिल है.
  • समान कार्यक्षमता वाले प्रोजेक्ट्स में Hugging Face की Transformers लाइब्रेरी शामिल है.

1 टिप्पणियां

 
GN⁺ 2024-10-12
Hacker News टिप्पणियाँ
  • M2 64GB MacBook पर 1.2G llama3.2-1b-it-q80.lmrs चलाने पर यह तेज़ी से चला, और CPU उपयोग 13 threads पर 1000% था
  • लगता है कि यह code examples के ज़रिए Transformer के काम करने का तरीका समझाने में उपयोगी होगा
    • library को stdout पर output न करने के लिए बेहतर बनाने की ज़रूरत है
    • यह सवाल है कि क्या इसे unsafe के बिना implement किया जा सकता है
  • विभिन्न Rust tools का उपयोग करके model loading और दूसरे LLM tasks किए जा सकते हैं
    • यह Python dependencies कम करने में मदद कर सकता है
    • सोच रहा हूँ कि क्या grammar support की कोई योजना है
  • शीर्षक स्पष्ट नहीं है
    • no dependency जैसी अभिव्यक्ति गलतफ़हमी पैदा कर सकती है
  • पहले भी ऐसा ही काम किया था, लेकिन performance संतोषजनक नहीं थी
    • Rust implementation के benchmarks की ज़रूरत है
    • LLM inference implementation प्रोग्रामरों के लिए नया hello world! बन सकता है
  • Metal/Cuda support ज़रूरी है
  • Rust community के उत्साह की सराहना करता हूँ
  • सोच रहा हूँ कि क्या ये implementations सब CPU पर ही निर्भर हैं
  • दूसरे projects के साथ तुलना की ज़रूरत है
    • अगर Vision models को support करे, तो इसे आज़माने की इच्छा है