3 पॉइंट द्वारा GN⁺ 2026-03-02 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • शुद्ध Python की एक single file में 200 lines के भीतर GPT मॉडल की training और inference की पूरी प्रक्रिया लागू करने वाला न्यूनतम language model structure
  • dataset, tokenizer, autograd engine, GPT-2 जैसा neural network, Adam optimizer, और training व inference loop — सब कुछ शामिल
  • names dataset को train करके नए नाम generate करता है, और self-implemented autograd व Transformer structure के जरिए GPT के core principles दिखाता है
  • बड़े LLMs के विपरीत, बिना किसी dependency के शुद्ध Python पर चलता है, जहाँ सिर्फ algorithmic essence बची है
  • microgpt को समझने पर ChatGPT जैसे बड़े models की बुनियादी algorithmic structure समझी जा सकती है

microgpt अवलोकन

  • microgpt 200 lines के Python code में लिखा गया एक न्यूनतम GPT implementation है, जिसमें किसी external library की dependency नहीं है
    • इसमें dataset, tokenizer, autograd, GPT-2 जैसी structure, Adam optimizer, training और inference loop सब शामिल हैं
  • यह Karpathy का एक कलात्मक project है, जिसे LLM को उसके मूल स्तर तक सरल बनाने के लिए बनाया गया है, और यह micrograd·makemore·nanogpt जैसी श्रृंखला का विस्तार है
  • पूरा code GitHub Gist, webpage, और Google Colab पर उपलब्ध है

dataset

  • लगभग 32,000 नामों वाली एक text file इस्तेमाल की जाती है, जिसमें हर line पर एक नाम है
  • हर नाम को एक document माना जाता है, और model इस pattern को सीखकर नए नाम generate करता है
  • training के बाद generated examples: kamon, ann, karai, jaire, vialan आदि

tokenizer

  • हर unique character को integer ID देने वाला एक साधारण character-based tokenizer
  • alphabet a–z और BOS(beginning of sequence) token सहित कुल 27 tokens
  • हर document को [BOS, e, m, m, a, BOS] के रूप में wrap करके train किया जाता है

automatic differentiation (Autograd)

  • Value class scalar values और gradients को track करती है और computation graph बनाती है
  • addition, multiplication, power, log, exponent, ReLU जैसी basic operations के local gradients store करती है
  • backward() method chain rule लागू करके backpropagation करता है
  • PyTorch के .backward() जैसा ही algorithm scalar स्तर पर सीधे implement किया गया है

parameter initialization

  • model में लगभग 4,192 parameters हैं
  • embedding table, attention weights, MLP weights, output projection आदि से बना है
  • हर parameter को Gaussian distribution के random values से initialize किया जाता है

model architecture

  • GPT-2 structure का सरल रूप, जिसमें RMSNorm, ReLU, और residual connection का उपयोग है
  • मुख्य components:
    • embedding stage: token और positional embedding को जोड़ा जाता है
    • multi-head attention: Q, K, V vectors की गणना के बाद KV cache के माध्यम से पिछले tokens की जानकारी का उपयोग
    • MLP block: 2-layer feedforward network जो local computation करता है
    • output stage: vocabulary size (27) के लिए logits बनाता है
  • KV cache training के दौरान भी active रहता है, और backpropagation cache के माध्यम से flow करता है

training loop

  • हर step में एक document चुनकर उसे [BOS, ... , BOS] में tokenize किया जाता है
  • model अगले token की probability predict करता है और cross-entropy loss की गणना करता है
  • loss.backward() से gradient निकालने के बाद Adam optimizer से parameters update होते हैं
  • learning rate linear decay तरीके से घटती है
  • 1,000 steps में loss लगभग 3.3 → 2.37 तक घटता है

inference

  • training पूरी होने के बाद, BOS token से शुरू करके नया नाम generate किया जाता है
  • हर step पर softmax probability के आधार पर अगला token sample किया जाता है
  • temperature value से creativity नियंत्रित होती है (कम होने पर अधिक conservative, अधिक होने पर अधिक diverse)
  • example output: kamon, ann, karai, jaire, vialan, karia, yeran, anna आदि

चलाने का तरीका

  • सिर्फ Python होने पर चलाया जा सकता है (python train.py)
  • लगभग 1 minute में training पूरी हो जाती है, और हर step पर loss value print होती है
  • Colab notebook में भी बिल्कुल उसी तरह चलाया जा सकता है

code development stages

  • train0.py से train5.py तक step-by-step विस्तार
    • Bigram → MLP → Autograd → Attention → Multi-head → Adam
  • हर stage को Gist की build_microgpt.py revision में देखा जा सकता है

वास्तविक LLMs से अंतर

  • data: microgpt में 32K names, जबकि वास्तविक LLMs में खरबों tokens
  • tokenizer: character level vs. BPE-based subword
  • Autograd: scalar-based Python vs. GPU tensor operations
  • architecture: 4K parameters vs. सैकड़ों अरब parameters
  • training: single document repetition vs. large-scale batch और mixed-precision training
  • optimization: simple Adam vs. carefully tuned hyperparameters और scheduling
  • post-processing: SFT और RL stages से गुजरकर ChatGPT जैसी form में विकसित
  • inference infrastructure: GPU distribution, KV cache management, quantization, speculative decoding आदि

FAQ सारांश

  • model एक mathematical function है, जो input tokens को अगले token की probability में बदलता है
  • इसमें कोई “समझ” नहीं होती; यह statistical pattern learning के जरिए prediction करता है
  • ChatGPT के समान token prediction loop को छोटे रूप में implement किया गया है
  • “hallucination” probabilistic sampling का स्वाभाविक परिणाम है
  • गति धीमी है, लेकिन LLM के core algorithm को पूरी तरह reproduce करता है
  • बेहतर results के लिए training steps, model size, और dataset को adjust किया जा सकता है
  • dataset बदलने पर शहरों के नाम, Pokémon नाम, कविताएँ आदि जैसे अलग-अलग patterns सीखे जा सकते हैं

microgpt LLM के सभी core algorithms को न्यूनतम रूप में लागू करने वाला एक शैक्षणिक और प्रयोगात्मक model है, जो बड़े language models की कार्यप्रणाली को पूरी स्पष्टता से दिखाता है।

1 टिप्पणियां

 
GN⁺ 2026-03-02
Hacker News की राय
  • किसी ने microgpt को संशोधित करके कोरियाई नाम जनरेट करने वाला एक छोटा GPT बनाया है
    एक वेबपेज भी है जो पूरी प्रक्रिया को विज़ुअलाइज़ करता है — tokenizing से inference तक पूरी pipeline को explore किया जा सकता है
    English GPT lab पर इसे सीधे आज़माया जा सकता है

    • ऐसी चीज़ें काफ़ी हल्के मॉडल से भी आसानी से बनाई जा सकती हैं
      PyTorch char_rnn tutorial देखा जा सकता है
    • मेरा साइट बनाने वाले से कोई संबंध नहीं है, लेकिन LLM की आंतरिक संरचना सीखने के लिए यह बहुत उपयोगी साइट है
      tokenizing, embedding, attention, loss·gradient, training, inference, Real GPT से तुलना तक अच्छी तरह समझाया गया है
    • ‘संशोधित किया’ कहना दरअसल लगभग इतना ही है कि अंग्रेज़ी नामों की सूची को कोरियाई नामों से बदल दिया गया है
      साइट खुद मूल ब्लॉग पोस्ट पर आधारित AI-generated visualization के ज़्यादा क़रीब है
  • मैंने microgpt को C++ में port किया है
    कोड लिंक
    कोड लाइनें 2 गुना हैं लेकिन गति 10 गुना तेज़ है
    सबसे कठिन हिस्सा C++ में Value class को व्यक्त करना था, और अंत में shared_ptr का उपयोग किया

    • मैंने autodiff के बिना explicit backpropagation लागू किया, और यह Python की तुलना में 8 गुना तेज़ था
  • मैं सोच रहा था कि “hallucination” आखिर है क्या
    मॉडल सिर्फ़ probability distribution से token sample करता है, उसमें truth का कोई concept नहीं होता
    तब सवाल उठता है कि क्या LLM के पास अपने उत्तर के लिए confidence score हो सकता है

    • मॉडल output distribution की confidence रिपोर्ट कर सकता है, लेकिन इसका मतलब यह नहीं कि वह वास्तव में सही तरह calibrated है
      pretraining मॉडल calibrated होते हैं, लेकिन instruction following (post-training) के बाद यह टूट जाता है
      संबंधित शोध: paper 1, paper 2
    • training data की sampling method जाने बिना confidence score का कोई मतलब नहीं है
      जैसे statistics में population जाने बिना confidence interval का अर्थ अधूरा होता है, वैसे ही LLM की probability का वास्तविक दुनिया से सीधा संबंध नहीं है
      आख़िरकार LLM उस व्यक्ति जैसा है जिसने दुनिया का अनुभव किए बिना सिर्फ़ किताबें पढ़ी हों
    • वास्तव में LLM probability distribution लौटाता है, और उसी से sample करके token बनाता है
      लेकिन यह probability “सच होने की probability” नहीं बल्कि “इस स्थिति में मेरे इस token को देने की probability” है
    • generation संभव है, लेकिन ‘वास्तविक distribution’ को न जानने के कारण उसका confidence अर्थपूर्ण नहीं होता
    • “पक्का नहीं, लेकिन शायद ऐसा होगा” जैसी बातें output में नहीं दिखतीं, लेकिन आंतरिक reasoning process में मौजूद होती हैं
  • मैंने सीखने के लिए microgpt को Rust में convert किया है
    microgpt-rs
    autograd graph structure को Rust types में व्यक्त करना सबसे पेचीदा था
    अभी इसे WebAssembly के ज़रिए browser में चलाने लायक बनाने के लिए संशोधित कर रहा हूँ, और इसे ब्लॉग पर डालने वाला हूँ
    Karpathy का कोड सच में काव्यात्मक और संक्षिप्त डिज़ाइन रखता है

    • weight structure में derivative value स्टोर करना काफ़ी hacky है, लेकिन ज़्यादातर लोग ऐसा ही करते हैं
    • मैं भी इसे किसी दूसरी language में एक बार implement करना चाहूँगा
  • कोड सुंदर है और पढ़ने में आसान है, लेकिन अच्छा होता अगर backbone.js की तरह हर लाइन पर टिप्पणी के साथ व्याख्या होती
    Backbone docs देखें

    • Backbone का annotated source Docco से generated है
      Docco project भी उसी creator का शानदार tool है
    • यह सचमुच सुंदर literate programming का उदाहरण है
      HTML version code भी है
    • Karpathy का walkthrough blog भी है
      microgpt blog
    • एक सुझाव यह भी है कि बस high-performance LLM से इसकी व्याख्या करवा लो
  • Karpathy के वीडियो और कोड की वजह से मुझे पहली बार लगा कि मैंने gradient descent, backpropagation, chain rule को सच में समझा है
    सिर्फ़ गणित देखने पर मैं उलझ जाता था, लेकिन कोड के साथ देखने पर बात साफ़ हो गई
    व्यक्तिगत रूप से यह जीवन की उपलब्धि जैसा अनुभव था

    • मैं भी इसे intuitively समझाने की कोशिश करना चाहता हूँ
      जैसा Karpathy ने कहा, सच में समझना है तो किसी और को सिखाकर देखो
  • हैरानी है कि यह प्रोजेक्ट अब जाकर HN पर आया
    मैंने PicoGPT नाम का 35-line JS version और Python version बनाया था,
    जो वेब पर सीधे चल सकता है
    यह तो QR code से भी चलने वाला ultra-tiny LLM है

    • मुझे भी हैरानी हुई। इतना शानदार प्रोजेक्ट 2 हफ़्ते बाद HN front page पर पहुँचना अप्रत्याशित है
      संबंधित thread: link 1, link 2
    • दरअसल यह पहले भी पोस्ट हो चुका था — पिछली पोस्ट
  • मैंने microgpt को visualized blog post के रूप में बनाया है
    ब्लॉग लिंक
    यह code flow को follow करते हुए interactive तरीके से दिखाता है

    • कहा गया कि training के बाद यह “kamon”, “karai”, “anna”, “anton” जैसे नाम बनाता है,
      लेकिन असल में ये चारों dataset में पहले से मौजूद हैं
    • यह लेख HN पर अलग से पोस्ट किए जाने लायक है
    • आम तौर पर मैं LLM की मदद से लिखे ब्लॉग्स को लेकर आलोचनात्मक रहता हूँ, लेकिन यह वाकई शानदार उदाहरण है
    • ML beginner होने के बावजूद, यह मेरे लिए Karpathy के मूल लेख जितना ही मददगार संसाधन था
    • सच में शानदार काम
  • आजकल AI में ‘micro’ trend दिलचस्प लग रहा है
    सिर्फ़ मॉडल बड़ा करने के बजाय, छोटे और focused मॉडल में efficiency ज़्यादा दिख रही है
    वास्तव में मैं Gemini Flash को domain analysis के लिए इस्तेमाल करता हूँ, और speed-to-cost ratio काफ़ी बेहतर है
    सिर्फ़ latency का अंतर ही यह बदल देता है कि किस तरह के products बनाए जा सकते हैं

    • लेकिन यह असली application से ज़्यादा educational purpose वाला micro मॉडल है
  • इसे microgpt कहना थोड़ा अजीब लगता है क्योंकि यह nanogpt से भी छोटा है, इसलिए picogpt ज़्यादा उपयुक्त नाम लगता है
    फिर भी यह शानदार प्रोजेक्ट है