• लगभग 9 million parameters वाला एक बेहद छोटा language model, जिसे एक Colab notebook में 5 मिनट के भीतर train किया जा सकता है
  • data generation से tokenizer, model training और inference तक पूरी प्रक्रिया एक ही environment में चलती है, और browser·Colab·local सभी को support करती है
  • पानी के भीतर के माहौल की कल्पना करने वाले ‘Guppy’ नामक character के रूप में डिज़ाइन किया गया, जो छोटे और सरल वाक्यों में बात करता है और शैक्षिक पारदर्शिता पर केंद्रित है
  • बेसिक Transformer architecture का उपयोग करता है, ताकि जटिल तकनीकों के बिना भी language model की मूल संरचना को साफ़ तौर पर दिखाया जा सके
  • HuggingFace public dataset और MIT license के साथ यह एक open source project है, जिस पर कोई भी experiment और learning कर सकता है

GuppyLM का परिचय

  • GuppyLM लगभग 9 million parameters वाला एक बेहद छोटा language model है, जो मछली character ‘Guppy’ की तरह बातचीत करता है
  • इसे एक Colab notebook में 5 मिनट के भीतर सीधे train किए जा सकने वाले LLM के लक्ष्य के साथ डिज़ाइन किया गया है, ताकि data generation से tokenizer, model structure, training loop और inference तक पूरी प्रक्रिया एक ही environment में पूरी हो सके
  • इसे इस तरह बनाया गया है कि बड़े GPU cluster या विशेष expertise के बिना भी language model के अंदरूनी काम करने के तरीके को सीधे अनुभव किया जा सके
  • यह बड़े models की तरह लंबा text generate नहीं करता, लेकिन input·weight learning·output generation की पूरी प्रक्रिया को पारदर्शी रूप से दिखाने वाला educational model है
  • इसे browser, Colab और local environment सभी में चलाया जा सकता है, और dataset व model HuggingFace के माध्यम से public हैं

मॉडल की विशेषताएँ

  • GuppyLM एक ऐसा character है जो पानी, तापमान, रोशनी, कंपन, भोजन जैसे पानी के भीतर के वातावरण को केंद्र में रखकर सोचता है
  • यह छोटे और lowercase वाक्य इस्तेमाल करता है, और इंसानी abstract concepts (जैसे पैसा, राजनीति) को नहीं समझता
  • इसका स्वभाव दोस्ताना, जिज्ञासु और सरल है
  • training data में 60 topics और 60,000 synthetic conversation samples शामिल हैं, और इसे एक single GPU पर लगभग 5 मिनट में train किया जा सकता है
  • model का आकार छोटा होने की वजह से browser के अंदर WebAssembly आधारित inference भी संभव है

आर्किटेक्चर

  • parameters की संख्या: 8.7M
  • layers की संख्या: 6
  • hidden dimension: 384
  • attention heads: 6
  • FFN dimension: 768 (ReLU)
  • vocabulary size: 4,096 (BPE)
  • maximum sequence length: 128 tokens
  • normalization: LayerNorm
  • position embedding: learned
  • LM head: embedding के साथ weight sharing
  • GQA, RoPE, SwiGLU, early exit जैसी जटिल तकनीकों का उपयोग नहीं किया गया; यह एक बेसिक Transformer structure है

स्वभाव और बातचीत के विषय

  • Guppy छोटे वाक्यों, lowercase expression और संवेदी-केंद्रित सोच के साथ बात करता है
  • यह भोजन, पानी, रोशनी, टैंक, बुलबुले, प्रतिबिंब, पानी की सतह, बाहरी दुनिया जैसे कई विषयों पर प्रतिक्रिया देता है
  • इसके 60 मुख्य topics में greeting, emotions, temperature, food, light, water, tank, noise, loneliness, dreams, seasons, jokes, love, health, TV आदि शामिल हैं

चलाने और उपयोग करने का तरीका

  • browser में चलाना

    • WebAssembly आधारित local inference किया जाता है
    • लगभग 10MB के quantized ONNX model को download करके बिना server या API key के चलाया जा सकता है
  • Colab में chat

    • HuggingFace से pre-trained model download करके interactive interface में उपयोग किया जा सकता है
    • सभी cells चलाते ही तुरंत chat शुरू की जा सकती है
  • Colab में training

    • runtime को T4 GPU पर सेट करने के बाद सभी cells चलाएँ
    • dataset download, tokenizer training, model training और testing तक सब कुछ अपने आप होता है
    • तैयार model को HuggingFace पर upload किया जा सकता है या local में save किया जा सकता है
  • local environment में chat

    • pip install torch tokenizers install करने के बाद python -m guppylm chat command से चलाएँ
    • बातचीत लंबी होने पर 128 token limit के कारण quality गिर सकती है
    • ऐसा mode भी है जिसमें एक single prompt दिया जाता है, केवल response लिया जाता है और फिर program बंद हो जाता है

डेटासेट

  • HuggingFace का arman-bd/guppylm-60k-generic dataset उपयोग किया गया है
  • samples की संख्या: 60,000 (train 57K / test 3K)
  • format: {"input": "...", "output": "...", "category": "..."}
  • categories की संख्या: 60
  • generation method: template आधारित synthetic data
    • लगभग 60 templates, 30 tank objects, 17 food types और 25 activity combinations के साथ लगभग 16,000 unique outputs तैयार किए गए

प्रोजेक्ट संरचना

  • guppylm/

    • config.py: model और training hyperparameters
    • model.py: बेसिक Transformer model
    • dataset.py: data loading और batch processing
    • train.py: training loop (cosine LR, AMP)
    • generate_data.py: 60 topics के conversation data generation
    • eval_cases.py: test cases
    • prepare_data.py: data preparation और tokenizer training
    • inference.py: chat interface
  • tools/

    • make_colab.py: Colab notebook generation
    • export_onnx.py: ONNX model export (uint8 quantization)
    • export_dataset.py: dataset को HuggingFace पर upload करना
    • dataset_card.md: HuggingFace के लिए dataset description
  • docs/

    • index.html: browser demo (ONNX + WASM)
    • download.sh: model और tokenizer download
    • model.onnx: quantized model (~10MB)
    • tokenizer.json: BPE tokenizer
    • guppy.png: logo image

डिज़ाइन निर्णय

  • system prompt हटाना:9M model के लिए conditional instructions का पालन करना कठिन है, इसलिए सभी samples में एक जैसा prompt इस्तेमाल करने के बजाय character personality को सीधे weights में embed किया गया

    • इससे inference के समय लगभग 60 tokens की बचत होती है
    • single-turn conversation: 128 token limit की वजह से 3~4 turns के बाद quality गिर जाती है
    • यह Guppy की ‘goldfish memory’ concept से मेल खाता है, लेकिन single turn सबसे स्थिर है
    • बेसिक Transformer को बनाए रखना: GQA, SwiGLU, RoPE, early exit जैसी तकनीकों से 9M scale पर quality में खास सुधार नहीं मिला, उल्टा complexity बढ़ी
    • standard attention + ReLU FFN + LayerNorm का संयोजन पर्याप्त performance देता है
    • synthetic data का उपयोग: एक सुसंगत character personality बनाए रखने के लिए template-based data generation अपनाया गया

लाइसेंस

  • MIT license

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.