3 पॉइंट द्वारा GN⁺ 2024-07-11 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • MobileLLM repository ICML 2024 paper “MobileLLM: Optimizing Sub-billion Parameter Language Models for On-Device Use Cases” का training code उपलब्ध कराती है, और 1 billion से कम parameters वाले language models की quality बढ़ाने वाले design पर चर्चा करती है
  • Model design SwiGLU, गहरी और पतली structure, embedding sharing, grouped-query attention को integrate करके MobileLLM बनाता है
  • MobileLLM-125M/350M ने zero-shot commonsense reasoning tasks में मौजूदा 125M/350M SoTA models की तुलना में क्रमशः 2.7%/4.3% accuracy improvement हासिल किया, और updated versions 600M/1B/1.5B में भी SoTA results दिखाते हैं
  • Training code के लिए Python 3.9 और PyTorch 2.0 या उससे ऊपर की जरूरत है; pretrain.sh 1x8 GPU node पर torchrun से शुरू होता है, और nodes की संख्या या batch size बढ़ाने पर learning rate को linear रूप से बढ़ाना होगा
  • 1T tokens के आधार पर training cost 32 NVIDIA A100 80G GPUs पर 125M के लिए करीब 3 दिन, 350M के लिए करीब 6 दिन, 600M के लिए करीब 8 दिन, 1B के लिए करीब 12 दिन, और 1.5B के लिए करीब 18 दिन है

MobileLLM का उद्देश्य और public scope

  • MobileLLM एक repository है जिसमें ऑन-डिवाइस use cases के लिए sub-billion parameter language models को optimize करने वाला training code है
  • इसका आधार paper MobileLLM: Optimizing Sub-billion Parameter Language Models for On-Device Use Cases है, जो ICML 2024 में प्रकाशित हुआ
  • मुख्य लक्ष्य 1 billion से कम parameters में भी high-quality LLM बनाने के लिए कई design elements को समग्र रूप से consider करना है

Model design elements

  • MobileLLM निम्न design elements को integrate करता है
    • SwiGLU activation function
    • गहरी और पतली architecture
    • Embedding sharing

      • grouped-query attention
      • updated version में बताया गया है कि यह design philosophy बड़े models तक भी expand होती है, और MobileLLM-600M/1B/1.5B में SoTA results दिखाती है

Release और follow-up model news

  • 30 अक्टूबर 2024 को MobileLLM model HuggingFace पर release हुआ
  • सितंबर 2025 में follow-up work MobileLLM-R1 release हुआ
    • लगभग 2T pretraining tokens और कुल 5T से कम tokens के साथ, MATH, GSM8K, MMLU, LiveCodeBench पर Qwen3-0.6B के 36T-token results की बराबरी करता है या उनसे बेहतर है
    • Code, model, data, training recipe public हैं
    • HuggingFace collection उपलब्ध है
  • नवंबर 2025 में MobileLLM-R1.5 release हुआ
    • MobileLLM-R1.5-950M ने evaluate किए गए सभी math और coding benchmarks में DeepSeek-R1-Distill-Qwen-1.5B को पीछे छोड़ा
    • Parameter count 0.95B बनाम 1.5B है, यानी कम है
  • जनवरी 2026 में MobileLLM-R1 ICLR 2026 में accept हुआ

Execution और training configuration

  • Requirements हैं Python 3.9, PyTorch 2.0 या उससे ऊपर, pip install -r requirement.txt
  • Data preprocessing tokenized dataset को divide करने या अपने dataset को tokenize करने के बाद, उसे कुल training nodes की संख्या के अनुसार distribute करने का तरीका है
    • हर node 1x8 GPU से configured है
    • Data structure basepath/1, basepath/2, ..., basepath/#nodes के नीचे xxx.jsonl files रखने के रूप में है
    • हर jsonl line {"token_ids": [1,2,3,4,...]} format का tokenized data key-value pair है
    • Training code LLM360/amber-data-prep की data preprocessing method के compatible है
  • pretrain.sh 1x8 node setting में torchrun से training शुरू करने वाली script है
    • --nnodes और अन्य settings को बदलकर Slurm या TorchX जैसी multi-node configurations के अनुसार adapt किया जा सकता है
    • Script का learning rate 1x8 node, batch size 32 के आधार पर है
    • Nodes की संख्या या batch size बढ़ाने पर learning rate को linearly increase करना होगा
  • Execution procedure में pretrain.sh में --train_data_local_path को preprocessed data पर set करना, --input_model_filename को ./configs/{model_size}/ पर set करना, और फिर bash pretrain.sh चलाना शामिल है
  • Wiki evaluation model download करने, eval.sh का checkpoint path update करने, और फिर bash eval.sh चलाने से होती है

Training cost

  • 1T tokens के साथ MobileLLM train करते समय 32 NVIDIA A100 80G GPUs के आधार पर लगने वाला समय इस प्रकार है
    • 125M: करीब 3 दिन
    • 350M: करीब 6 दिन
    • 600M: करीब 8 दिन
    • 1B: करीब 12 दिन
    • 1.5B: करीब 18 दिन

Zero-shot commonsense reasoning results

  • MobileLLM-125M ने arc_easy, arc_challenge, boolq, piqa, siqa, hellaswag, obqa, winogrande average में 46.3 score किया
    • OPT-125M 42.6, GPT-neo-125M 42.9, Pythia-160M 42.5 हैं
    • MobileLLM-LS-125M का average 47.0 है
  • MobileLLM-350M ने average 51.3 score किया
    • OPT-350M 43.9, Pythia-410M 46.6 हैं
    • MobileLLM-LS-350M का average 52.1 है
  • MobileLLM-600M ने average 54.3 score किया
    • Qwen1.5-500M 48.8, BLOOM-560M 44.2, MobiLlama-800M 50.7 हैं
  • MobileLLM-1B ने average 57.3 score किया
    • Pythia-1B 48.7, MobiLlama-1B 55.2, Falcon-1B 56.3, BLOOM-1.1B 46.9, TinyLlama-1.1B 54.2 हैं
  • MobileLLM-1.5B ने average 59.4 score किया
    • GPT-neo-1.3B 50.6, OPT-1.3B 52.3, BLOOM-1.7B 49.6, Qwen1.5-1.8B 56.5 हैं
    • GPT-neo-2.7B 52.8, OPT-2.7B 55.1, Pythia-2.8B 55.8, BLOOM-3B 52.3 हैं

Related projects और license

  • Code आंशिक रूप से HuggingFace Transformers repository पर आधारित है, और वह repository Apache License का उपयोग करती है
  • Related projects के रूप में ये दिए गए हैं
    • SpinQuant: LLM Quantization with Learned Rotations, ICLR 2025 — Paper, Code
    • LLM-QAT: Data-Free Quantization Aware Training for Large Language Models — Paper, Code
  • Next steps के रूप में MobileLLM-R1 और MobileLLM-R1.5 models दिए गए हैं
  • MobileLLM फिलहाल FAIR NC license का उपयोग करता है

1 टिप्पणियां

 
GN⁺ 2024-07-11
Hacker News की राय
  • छोटे मॉडल में थोड़ी बेहतरी आई है, लेकिन ऑनलाइन मॉडल जैसे उपयोगों के लिए ये अभी भी कम पड़ते लगते हैं। फिर भी क्रमिक प्रगति अपने आप में ठीक है
    1.5 बिलियन पैरामीटर वाला मॉडल काफ़ी बड़ी छलांग जैसा दिखता है, और बड़े मॉडलों को भी बड़े अंतर से हरा देता है। पता नहीं इसे और बड़ा क्यों नहीं बनाया गया। Raspberry Pi जैसे हार्डवेयर में फिट हो सकने वाला ज़्यादा efficient मॉडल खेल बदल सकता है। याद से, TinyLlama 7B भी बस किसी तरह चल पाता है

    • और छोटे language models भी speech recognition सिस्टम के हिस्से के रूप में उपयोगी हो सकते हैं। अस्पष्ट या शोर वाली स्थितियों में कौन-सा शब्द बोला गया था, इसे सीमित करने में language model मदद कर सकता है
    • कल्पना कीजिए कि ऐसा मॉडल Instagram ऐप में embedded हो, और यूज़र के डिवाइस पर computation करके ad targeting के लिए इस्तेमाल हो। तब Facebook बहुत ज़्यादा data को कम लागत और बहुत कम मुक़दमेबाज़ी जोखिम के साथ देख सकेगा
      इस use case में छोटे मॉडल की cloud model से तुलना करना fair नहीं है। छोटे मॉडल की precision में थोड़ी-सी बढ़ोतरी भी मायने रखती है, और सीधे revenue में बदल सकती है
    • मुझे यकीन नहीं कि अगले स्तर के local LLM के लिए Raspberry Pi सही target है; WebLLM जैसे engine के ज़रिए web deployment पर भी विचार किया जा सकता है https://github.com/mlc-ai/web-llm
      भले ही 7B model Raspberry Pi पर “ठीक चलता” हो, निजी तौर पर web-based interface से download और run करने के लिए 7B model थोड़ा बड़ा लगता है। वहीं एक अच्छा 125M model webpage में चल सकता है, और local browser में download करने का समय व bandwidth cost भी ज़्यादा नहीं होती
    • Llama-3-8b Raspberry Pi पर अच्छी तरह चलता है
  • क्या इसे ज़रूरी तौर पर mobile devices पर ही होना चाहिए? niche use case तो है, लेकिन अगर यह ज़्यादा resources नहीं खाता, तो games में NPC dialogue को ज़्यादा दिलचस्प बनाने के लिए इस्तेमाल हो सकता है
    और बेहतर यह होगा कि इसे किसी तरह tune करके dialogue को NPC के व्यवहार या actions पर असर डालने लायक बनाया जा सके

    • क्या वह dialogue सच में दिलचस्प होगा? dialogue की मात्रा बढ़ाई जा सकती है, लेकिन क्या उसमें player के लिए रुचि पैदा करने वाला आधार होगा, यह सवाल है। उदाहरण के लिए, गांव वाले local scenery या दूसरे NPCs से अपने रिश्तों के बारे में बात कर सकते हैं, लेकिन जिन चीज़ों का वे वर्णन करते हैं वे असल game में मौजूद न हों। निजी तौर पर, अगर NPC ऐसी चीज़ें गढ़ना शुरू कर दे जो मौजूद नहीं हैं, तो मुझे अजीब लगेगा
      game data पर LLM को train करके NPC से असली game world का वर्णन करवाना कल्पना में संभव है। लेकिन यह इंसानों से dialogue लिखवाने की तुलना में सस्ता बनने के लिए किस scale की ज़रूरत होगी, पता नहीं। Ubisoft के scale पर शायद संभव हो। जहाँ तक मुझे पता है, Ubisoft भी AI से writing की जांच करता रहा है, लेकिन मुख्य रूप से combat के दौरान चिल्लाए जाने वाले lines जैसे बहुत repetitive और लगभग noise जैसे use cases के लिए
    • NPCs के पास ज़्यादा backstory और ज़्यादा complex behavior हो तो दिलचस्प होगा। हालांकि कोई भी चीज़ behavior पर असर डाल सकती है, इसलिए testing लगभग असंभव जैसी होगी
  • अभी iPhone पर ऐसे models चलाने वाले कौन-से apps हैं? मुझे सिर्फ़ MLC पता है, और उसमें केवल 3 पुराने models हैं

    • MLC का Android APK recent models के साथ अक्सर update होता रहता है। Samsung S24+ पर 7~8B models भी reasonable speed, करीब 10 tokens per second पर आराम से चल जाते हैं
      https://llm.mlc.ai/docs/deploy/android.html
    • App Store पर mlc-llm आधारित app डाल रखा है, और recent models सहित 20 से ज़्यादा models support करता है
    • cnvrs iOS पर GGUF चलाता है: https://testflight.apple.com/join/ERFxInZg
    • MLC models यहाँ भी हैं: https://huggingface.co/mlc-ai
  • सोच रहा हूँ कि और गहरा और और पतला बनाने के तरीके को कितनी दूर तक धकेला जा सकता है। किसी बिंदु पर अगर पूरा FFN L2 cache में आ जाए, तो performance में काफ़ी jump वाला zone आ सकता है

    • Meta FAIR की एक दूसरी research संकेत देती है कि accuracy बनाए रखते हुए performance बढ़ाने के लिए उल्टा गहरी layers की pruning करनी चाहिए https://arxiv.org/html/2403.17887v1
      तो इस approach के काम करने वाले छोटे networks की कोई limit point होनी चाहिए। नहीं तो results एक-दूसरे से विरोधाभासी हैं। या फिर इसका मतलब यह भी हो सकता है कि इन नए models को बहुत ज़्यादा improve किया जा सकता है
    • Google के EfficientT5 paper के results याद आते हैं https://arxiv.org/abs/2109.10686. वहाँ इसे “DeepNarrow” कहा गया है
  • पता नहीं मैं कुछ miss कर रहा हूँ या नहीं, लेकिन knowledge distillation जैसी चीज़ यहाँ मददगार नहीं होगी?

    • paper में कहा गया है कि उन्होंने इसे आज़माया: https://arxiv.org/abs/2402.14905
      relevant section का HTML deeplink: https://ar5iv.labs.arxiv.org/html/2402.14905#S3.SS5
      “अब तक हमने next token को hard label के रूप में इस्तेमाल करके छोटे models को scratch से train किया। Knowledge distillation (KD) भी explore किया... दुर्भाग्य से, KD training time बढ़ाता है (2.6~3.2 गुना धीमा), और label-based training जैसी या उससे कम accuracy दिखाता है (details के लिए appendix देखें)।”
  • अभी वास्तव में on-device wake-word जैसी speech recognition की ज़रूरत है। Raspberry Pi 4B पर चल सकने वाला और सबसे कम WER वाला model कौन-सा है? DIY inventory system के लिए openWakeWord देख रहा हूँ

  • छोटे models में linear head और token embedding के बीच embedding sharing/weight tying से आकार सबसे ज़्यादा घटता दिखता है। जिज्ञासा है कि क्या इसे और घटाने पर research चल रही है

    • अगर मतलब यह है कि LM-head बस उलटा embedding matrix है, तो यह तो GPT-2 में पहले ही किया गया था
      अफसोस, इस बारे में मुझे बस इतना मिला कि बड़े models को अलग layer से फायदा मिलता है। हालांकि यह बात मैंने Discord पर कहीं देखी थी, इसलिए पढ़ने के लिए कोई paper नहीं है, और मेरी निजी intuition कहती है कि यह बड़े models पर भी काम करना चाहिए। आखिर GPT-3 भी GPT-2 का ही scale-up था
      मेरे निजी experiments में, model को ज़्यादा कठिन task देने पर उसने बेहतर सीखा। tied weights उन चीज़ों में से एक हो सकते हैं, multi-token prediction भी ऐसा हो सकता है, और bitnet को भी ऐसे देखा जा सकता है। dropout भी वैसा ही है
  • desktop पर generative AI नहीं, बस desktop AI हो तो कैसा रहेगा। अच्छा होगा अगर यह मेरी सारी files, emails, notes को organize करे और मेरे data से information search करने दे

  • अच्छा है। क्या इसे Windows PC के लिए model train करने में भी इस्तेमाल किया जा सकता है? RAM ज़्यादा नहीं है

    • model training operating system पर निर्भर नहीं होती। RAM size पर निर्भर करेगी, और मुझे लगता है कि इस size पर कम GPU RAM में fine-tuning करना काफी आसान होगा
      फिर भी अंतिम लक्ष्य शायद ऐसे model को download करना, या fine-tuning का खर्च देकर उसे पाना, और फिर optimized neural network chip के जरिए इस्तेमाल करना होगा
      अभी सवाल ज़्यादा यह है कि ऐसा कब होगा। नए Windows certification में भी पहले से किसी तरह की neural network chip की requirement है, और मेरा Google Pixel 8 Pro भी छोटा model host कर सकता है। Pixel सस्ता phone नहीं है, लेकिन co-processor बड़े GPU से काफी सस्ता होगा
  • दिलचस्प तो है, लेकिन बेहतर autocomplete के अलावा इसका इस्तेमाल कहाँ होगा, यह सोच रहा हूँ

    • tiny-agent जैसे narrow-domain tasks के लिए fine-tuning की जा सकती है https://bair.berkeley.edu/blog/2024/05/29/tiny-agent/
      Apple जिस direction में जाता दिख रहा है, वह approach मुझे पसंद है। रोज़मर्रा के tasks fine-tuned छोटे models संभालें, और जिन्हें वे confidence से नहीं संभाल पाते उन्हें device के बाहर बड़े model को भेज दें। ऐसे examples वाला training set बनाया जा सकता है जिनमें low-confidence answer देना हो, और output में असल में “help request” के बराबर एक option जोड़कर model को वह विकल्प चुनना सिखाया जा सकता है। छोटा model हो तो कई models parallel में चलाए जा सकते हैं, और एक और model request को सही expert तक route कर सकता है
    • email पढ़ना, email reply करना, schedule बनाना, service API इस्तेमाल करना जैसी चीज़ें
      मूल रूप से हर task जिसमें knowledge नहीं बल्कि action चाहिए। जैसे “पत्नी को बता दो कि मैं late हो रहा हूँ” कहने पर, configured magical तरीके से किसी service से बात करके काम कर दे
      Siri बिना internet के भी home automation काफी अच्छी तरह कर लेती है, लेकिन पुराने Google Assistant और Alexa ऐसे बिल्कुल नहीं थे, और शायद कभी offline ऐसा कर भी नहीं पाए। यह local-first अच्छे से काम करने वाला assistant संभव बनाता है
    • Siri जैसा local agent simple tasks संभाल सकता है और ज़्यादा complex requests route कर सकता है
    • इसे device-related tasks के लिए fine-tune किया जा सकता है। दूसरे शब्दों में, device की applications या services में मौजूद लगभग सभी capabilities छोटा model भी practically इस्तेमाल कर सकता है
      user request को natural language में संबंधित application तक पहुँचा सकता है और applications को coordinate कर सकता है। device capabilities से बाहर की requests cloud model को भेजी जा सकती हैं। यह device के साथ interact करने का तरीका बदल सकता है, इसलिए powerful है
    • मैंने phone पर Google AI test किया था; browser खुला था और मैंने page पढ़ने को कहा, तो उसने जवाब दिया कि वह internet access नहीं कर सकता
      मुझे जो AI assistant चाहिए वह 1) English और मेरी native language समझे, 2) यह जाने कि वह Android या KDE/Linux पर चल रहा है और “Android settings का applications section खोलो”, “browser में खुला page पढ़ो”, “अभी खुले popup का text पढ़ो” जैसे commands समझे, और public API के जरिए operating system से integrate हो। बड़ी AI companies खासकर multilingual users को बेहतर assistant बेचकर compete कर सकती हैं
      3) model छोटा होना चाहिए और geography, history, music bands जैसी knowledge जानना ज़रूरी नहीं। user जो tasks पूछता है, उन्हें search engine या online LLM को forward करने का option हो तो काफी है