23 पॉइंट द्वारा GN⁺ 2025-09-16 | 7 टिप्पणियां | WhatsApp पर शेयर करें
  • RustGPT एक Transformer-आधारित language model है, जिसे किसी बाहरी machine learning framework के बिना, केवल शुद्ध Rust और ndarray से इम्प्लीमेंट किया गया है
  • इसे pre-training और instruction tuning के ज़रिए तथ्य-आधारित ज्ञान और संवादात्मक पैटर्न सीखने के लिए डिज़ाइन किया गया है
  • इसकी संरचना tokenizer → embedding → transformer block → output projection जैसी सामान्य LLM architecture का पालन करती है
  • यह modular source structure और test code प्रदान करता है, जिससे training, inference और optimization प्रक्रियाओं को विस्तार से समझा जा सकता है
  • Rust ecosystem में framework dependency के बिना LLM को शुरू से इम्प्लीमेंट करना चाहने वाले developers और learners के लिए यह एक महत्वपूर्ण reference है

प्रोजेक्ट अवलोकन

  • RustGPT एक open source project है, जो किसी बाहरी machine learning framework या जटिल dependency के बिना, केवल शुद्ध Rust भाषा और linear algebra operations library (ndarray) से LLM इम्प्लीमेंट करता है
  • इसका मुख्य लक्ष्य आधुनिक LLM के core components जैसे transformer, attention, embedding और optimization को सीधे इम्प्लीमेंट करना और training process को समझना है
  • दूसरे mainstream LLMs से अलग, इसमें transformer structure, backpropagation, tokenizer और optimizer आदि सब कुछ सीधे Rust code में डिज़ाइन किया गया है, जिससे Rust developers और researchers deep learning के सिद्धांतों को शुरू से समझ और आगे बढ़ा सकते हैं
  • इसकी एक प्रमुख विशेषता यह है कि matrix operations के लिए ndarray का उपयोग किया गया है, और यह PyTorch या TensorFlow जैसे बाहरी machine learning packages पर निर्भर नहीं है
  • इसकी modularity और test coverage मजबूत है, इसलिए यह विभिन्न experiments और improvements के लिए उपयुक्त है, और "From Scratch" शैली के शैक्षिक LLM प्रोजेक्ट के रूप में भी उपयोगी है

प्रमुख विशेषताएँ और इम्प्लीमेंटेशन तरीका

  • Transformer architecture: input text → tokenize → embedding → transformer block → final prediction
    • input text को tokenization प्रक्रिया से गुज़रकर embedding vectors में बदला जाता है
    • embeddings को Transformer Block (multi-head attention + feedforward network) से गुज़ारा जाता है
    • अंत में Output Projection Layer vocabulary probability distribution बनाकर prediction करता है

इम्प्लीमेंटेशन संरचना

  • main.rs: training pipeline, data preparation, interactive mode execution
  • llm.rs: पूरे LLM का forward pass, backward pass और training logic
  • transformer.rs, self_attention.rs, feed_forward.rs: core transformer blocks
  • embeddings.rs, output_projection.rs: embedding और final output layer
  • adam.rs: Adam optimizer implementation
  • हर module में संबंधित test code (tests/) शामिल है, जिससे functionality verification संभव है

training, testing तरीका और data flow

  • training process
    • vocabulary creation → pre-training (100 epoch, factual sentence data) → instruction tuning (100 epoch, conversation data)
    • pre-training उदाहरण: "The sun rises in the east and sets in the west"
    • instruction tuning उदाहरण: "User: How do mountains form? Assistant: ..."
  • interactive mode support
    • training पूरी होने के बाद prompt-response आधारित conversation testing संभव है
    • उदाहरण: "How do mountains form?" → "Mountains are formed through tectonic forces or volcanism..."

तकनीकी विवरण

  • vocabulary size: training data के आधार पर dynamically सेट
  • embedding dimension: 128, hidden layer: 256
  • maximum sequence length: 80 tokens
  • architecture: 3 transformer blocks + embedding + output layer
  • training algorithm: Adam optimizer, gradient clipping (L2 norm 5.0 limit)
  • learning rate: pre-training 0.0005, instruction tuning 0.0001
  • loss function: cross-entropy loss

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

  • custom tokenizer (punctuation handling)
  • greedy decoding आधारित text generation
  • modular layer structure और स्पष्ट interfaces
  • test coverage: हर layer और feature के लिए unit test code शामिल
  • dependencies: केवल ndarray (matrix operations), rand / rand_distr (random initialization) का उपयोग (PyTorch/TensorFlow जैसे बाहरी ML का उपयोग नहीं)
  • शैक्षिक मूल्य: आधुनिक LLM की प्रतिनिधि internal structure और training principles सीखने के लिए उपयुक्त

आगे की संभावनाएँ

  • advanced architectures का समावेश: multi-head attention, RoPE, positional encoding आदि
  • performance optimization: SIMD, parallel training, memory efficiency improvements
  • model save/load support
  • बेहतर sampling (beam search, Top-k/Top-p) और evaluation metrics जोड़ना

महत्व

  • यह एक learning और experimental project है, जो दिखाता है कि Python-आधारित PyTorch या TensorFlow framework पर निर्भर हुए बिना भी केवल Rust से LLM को सीधे इम्प्लीमेंट किया जा सकता है
  • LLM के internal working principles को समझने और Rust environment में ML systems बनाना चाहने वाले developers के लिए यह एक उपयोगी reference है

7 टिप्पणियां

 
t7vonn 2025-09-18

काफ़ी साफ़-सुथरा है।

 
ahwjdekf 2025-09-16

अरे, क्यों? क्या यह ऐसा है कि मैं भी थोड़ा कर सकता हूँ?

 
cosine20 2025-09-22

karma -47 की शान lol

 
skrrgang 2025-09-16

rust का सिर्फ r देखते ही क्या आपको बेचैनी और गुस्सा आने लगता है? हाहाहाहाहाहाहा

 
aer0700 2025-09-16

बनाते हुए सीखने के लिए कुछ न कुछ तो होगा।

 
devjeonghwan 2025-09-16

किए बिना इसे बनाया नहीं जा सकता, है ना।

 
GN⁺ 2025-09-16
Hacker News टिप्पणियाँ
  • कोड में GPT द्वारा ऑटो-जनरेट की गई टिप्पणियाँ या पहले से परिभाषित constants को दोबारा लिखे जाने के निशान दिखते हैं, इसलिए मुझे लगता है कि ऐसे हिस्सों को हटाने की ज़रूरत है। उदाहरण के लिए, const MAX_SEQ_LEN: usize = 80 जैसे constants पहले से ही lib.rs में हैं, इसलिए टिप्पणी में बताए अनुसार उन्हीं constants का सीधे उपयोग करना बेहतर होगा

    • ऐसे हिस्सों का बचे रहना इस बात का संकेत लगता है कि यह डेवलपर द्वारा वास्तव में समझकर बनाया गया परिणाम नहीं है
    • जानना चाहूँगा कि क्या इस बारे में कोई PR भेजा गया है
    • constants के उपयोग के तरीके को लेकर, यह भी हो सकता है कि लेखक को बस तरीका पता न हो। Rust के अपने पहले हफ्ते में मुझे भी naming और code structure को लेकर काफी सोचना पड़ा था
    • क्या vibe-coding शैली का Rust भाषा के समग्र code quality को गिरा सकता है?
    • मुझे लगता है कि यह आलोचना बिल्कुल सही है
  • मैंने Python dependency hell में कई दिन गंवाए हैं, इसलिए Rust का वह तरीका जिसमें सिर्फ cargo run से काम हो जाता है, सचमुच किसी सपने जैसा लगता है। लेकिन framework के बिना काम करते समय सबसे दर्दनाक हिस्सा क्या था, यह जानना चाहूँगा। मेरा दांव है कि वह backpropagation logic की debugging रही होगी

    • uv नाम का tool सुझाऊँगा। मेरे अनुभव में इसने Python projects चलाना 90% आसान बना दिया है uv लिंक
    • मुझे लगता है सबसे कठिन हिस्सा GPU जैसी resources का उपयोग रहा होगा
    • Python dependency समस्याओं का ऐसा वर्णन 2010 के आसपास समझ में आता, लेकिन 2025 में यह बहुत बड़ी अतिशयोक्ति लगता है
    • cargo run को सपने जैसा कहना ठीक है, लेकिन सच कहूँ तो cargo build का पूरे इंटरनेट को फिर से compile करते हुए सर्दियों में CPU गरम कर देने वाला अनुभव मुझे ज़्यादा पसंद है
    • मुझे लगता है कि cargo की तारीफ़ करने वाले लोग अक्सर dependency management के trade-offs को ठीक से नहीं समझते। C की तरह हर library को हर बार नए सिरे से बनाना अक्षम है, लेकिन npm या cargo की तरह dependencies को बहुत आसानी से जोड़ पाने का नतीजा dependency sprawl, build time, और security issues जैसी गंभीर समस्याएँ भी हो सकता है। अच्छा build system होना और dependency जोड़ना आसान होना एक ही बात नहीं है, और centralized package repository में किसी को भी dependencies उलझाने देना भी मुझे स्वस्थ pattern नहीं लगता
  • मैं भी ऐसा ही एक Rust project कर रहा हूँ। इसका एक WebAssembly version है जो browser में चलता है, और browser demo तथा source code भी सार्वजनिक हैं

  • ndarray, rand, rand_distr packages का संयोजन साफ-सुथरा लगता है

    • जिज्ञासा में मैंने cargo tree से dependency tree देखा, और फिलहाल यह काफ़ी साफ दिख रहा है
    • मुझे नहीं लगता कि इस tree का अपने-आप में बहुत बड़ा मतलब है। कोड internally अक्षम तरीके से लिखा हो सकता है, और कई बार external libraries का सही इस्तेमाल करना उल्टा बेहतर होता है
    • समझ नहीं आया कि यह मूल्यांकन व्यंग्य है या इसके लिए कुछ और संदर्भ चाहिए
  • मुझे लगता है कि Rust की memory safety transformer implementation में buffer overflow कम करने में काफी उपयोगी है। CUDA kernels अभी भी performance में आगे हैं। यह भी जानना चाहूँगा कि tokenizer के लिए BPE भी नया बनाया गया है या कोई मौजूदा library इस्तेमाल की गई है

  • मैंने भी Rust में picogpt बनाते समय jaykmody का GPT from scratch ब्लॉग बहुत देखा था। project लिंक

  • बधाई के साथ एक छोटा-सा सुझाव देना चाहूँगा कि LLM में transformer block को reuse न करके हर एक का अलग instance बनाना बेहतर होगा। मैंने भी पहले Zig और MLX के साथ इसी तरह की बुनियादी practice की थी, फिर धीरे-धीरे features जोड़ते हुए अंत में PyTorch/Transformers की ओर चला गया

    • हालांकि, मुझे लगता है कि ऐसे अभ्यास का मतलब तभी है जब आप खुद code लिखें। GPT की मदद के बिना स्वयं बनाना ही असल मायने रखता है
  • project के लेखक की commentary Reddit पर संकलित है

  • मुझे यह पसंद आया कि पूरा project बहुत ही पढ़ने में आसान structure रखता है

    • मैं यह उल्लेख करना चाहूँगा कि यह AI-generated code है
    • इसका procedural/object-oriented style काफ़ी मजबूत है, इसलिए इसे सख्ती से अच्छा Rust style कहना मुश्किल है। iterators और enum का उपयोग करने वाला functional style ज़्यादा संक्षिप्त और आदर्श माना जाता है। फिर भी idea experiment के रूप में यह पूरी तरह ठीक है
    • मुझे पता ही नहीं था कि Rust इतना readable हो सकता है। उल्टा मुझे कभी-कभी ऐसा लगा कि Rust engineers जानबूझकर ऐसे simple code से बचते हैं, मानो किसी तरह की self-torture contest चल रही हो। Rust community और hiring culture के बारे में जो अनुभव हुए थे, वे अब समझ में आते हैं
  • dataset का स्रोत जानना चाहूँगा। मैं खुद ढूँढने वाला हूँ, लेकिन सवाल छोड़ रहा हूँ। मैंने CPU-केंद्रित और बिना backpropagation वाली एक architecture विकसित की है, और यह classification datasets पर अच्छी चलती है। इसमें single-example incremental updates संभव हैं, इसलिए continuous learning के लिए भी उपयोगी हो सकती है। toy demo के तौर पर मैंने सिर्फ tiny.txt पर training की है, बड़े language model (LLM) पर कभी कोशिश नहीं की। मुझे लगता है कि मेरी architecture on-device या on-premise assistants के लिए काफ़ी अच्छी तरह काम कर सकती है, इसलिए मैं प्रयोग जारी रखूँगा। क्या कोई open source LLM training dataset सुझाने लायक है?

    • Hermes-3 Dataset ठीक है
    • Hugging Face पर openai, anthropic शैली की कई user-assistant chains हैं, लेकिन ध्यान रहे कि उनमें hallucination काफ़ी हैं। instruction fine-tuning के लिए वे ठीक-ठाक हैं। अगर आपका लक्ष्य instruction following है, तो kimi k2 distillation सुझाऊँगा
    • इस project में training data सीधे main.rs file के भीतर शामिल है। इसमें सामान्य ज्ञान से जुड़ी लगभग 50 छोटी पंक्तियाँ हैं, और शायद training time कम रखने के लिए ऐसा किया गया है। इसलिए script-आधारित prompts के अलावा performance तेज़ी से गिर जाती है। उदाहरण prompts और परिणाम:
      • "hello" इनपुट पर: "Eclipses occur when one celestial body moves into the shadow of another" आदि, जो काफ़ी सही है
      • "what are facts" इनपुट पर: अर्थहीन शब्दों की दोहराई जाने वाली सूची निकलती है
      • "how are mountains formed?" इनपुट पर: असंगत शब्द और अर्थहीन output आता है