1 पॉइंट द्वारा GN⁺ 1 시간 전 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Train Your Own LLM From Scratch एक प्रैक्टिकल वर्कशॉप है, जिसमें GPT training pipeline के हर हिस्से को खुद लिखते हुए यह समझा जाता है कि हर component क्या करता है और उसकी जरूरत क्यों है
  • लक्ष्य यह है कि नोटबुक पर शुरुआत से train किए गए GPT model से Shakespeare-शैली का टेक्स्ट generate किया जाए, और इसे वर्कशॉप के एक session के भीतर पूरा किया जा सके इसलिए इसे लगभग 10M parameters वाले model तक छोटा किया गया है
  • जहाँ nanoGPT का लक्ष्य GPT-2 124M parameters को reproduce करना है, वहीं यह प्रोजेक्ट केवल core हिस्सों को रखकर इस तरह डिज़ाइन किया गया है कि नोटबुक पर 1 घंटे के भीतर train किया जा सके
  • जिन components को सीधे लिखा जाता है उनमें Tokenizer, Transformer-आधारित model architecture, training loop, और text generation शामिल हैं, और अंत में model.py, train.py, generate.py को खुद पूरा किया जाता है
  • पूर्वज्ञान के लिए Python code पढ़ने में सहज होना काफी है, machine learning का अनुभव जरूरी नहीं है, और Python 3.12+ चाहिए
  • execution environment के रूप में Mac, Linux, Windows पर notebook या desktop समर्थित हैं, और training अपने-आप Apple Silicon GPU के MPS, NVIDIA GPU के CUDA, या CPU का उपयोग करती है
  • local install के लिए uv के साथ uv sync चलाने वाला flow सुझाया गया है, और अगर local environment न हो तो फाइलों को Google Colab पर अपलोड करके !python train.py से चलाया जा सकता है
  • वर्कशॉप में character-level tokenizer, embedding, self-attention, LayerNorm, MLP block, loss function, AdamW, gradient clipping, learning rate scheduling, तथा temperature और top-k sampling को क्रम से कवर किया जाता है
  • बुनियादी architecture input text को character-level token ID में बदलती है, फिर token embedding और positional embedding से होकर कई Transformer blocks से गुजरती है, और उसके बाद अगले token probability के लिए logits आउटपुट करती है
  • दिए गए model settings में Tiny लगभग 0.5M parameters और M3 Pro पर लगभग 5 मिनट, Small लगभग 4M और लगभग 20 मिनट, तथा default Medium लगभग 10M और लगभग 45 मिनट training time के रूप में बताए गए हैं
  • सभी settings में vocab_size=65 वाली character-level tokenization और block_size=256 का उपयोग होता है, और यह Shakespeare जैसे लगभग 1MB के छोटे dataset के लिए उपयुक्त है
  • BPE tokenization में GPT-2 के 50,257 vocab जैसी बड़ी vocabulary होने के कारण छोटे dataset में अधिकतर token bigram बहुत दुर्लभ हो जाते हैं, जिससे pattern learning कठिन हो जाती है; और बड़े dataset पर BPE में स्विच करने की बात भी शामिल है
  • मुख्य संदर्भ सामग्री के रूप में nanoGPT, build-nanogpt video lecture, Karpathy's microgpt, nanochat, Attention Is All You Need (2017), GPT-2 paper (2019), TinyStories paper दिए गए हैं

1 टिप्पणियां

 
GN⁺ 1 시간 전
Hacker News की टिप्पणियाँ
  • अगर यह सामग्री दिलचस्प लग रही है, तो Stanford की CS336 क्लास भी ज़ोरदार सिफारिश के लायक है। यह उसी curriculum को कहीं ज़्यादा गहराई से कवर करती है, और scaling laws जैसी सैद्धांतिक समझ के साथ kernel optimization/profiling जैसे systems दृष्टिकोण भी परिचित कराती है
    बेशक, assignments खुद करने होंगे: https://cs336.stanford.edu/

    • लेक्चर कहाँ देखे जा सकते हैं, यह पता नहीं। कोई lecture option दिखाई नहीं दे रहा
  • थोड़ा प्रचार करूँ तो, एक Jupyter notebook series है जो machine learning कैसे काम करती है, इसे शुरुआत से समझाती है
    https://github.com/nickyreinert/DeepLearning-with-PyTorch-fr...
    और ज़ाहिर है, इसमें LLM को scratch से बनाना भी शामिल है
    https://github.com/nickyreinert/basic-llm-with-pytorch/blob/...

  • मैंने अभी-अभी Sebastian Raschka का repository/book/course Build a Large Language Model (From Scratch) शुरू किया है। कौन-सी learning material चुनी जाए, यह शायद अच्छी तरह की दुविधा है
    [0] https://github.com/rasbt/LLMs-from-scratch
    [1] https://www.manning.com/books/build-a-large-language-model-f...
    [2] https://magazine.sebastianraschka.com/p/coding-llms-from-the...

    • वह किताब मुझे सच में बहुत मज़ेदार लगी। जो लोग असली internal structure को समझना चाहते हैं और हर calculation के working examples देखना चाहते हैं, उनके लिए बढ़िया है
  • मैं तो जन्म के दिन से ही यह कर रहा हूँ। शुरुआत कठिन थी, लेकिन धीरे-धीरे बेहतर हो रहा हूँ

    • असल में मैं ज़्यादातर physical models को train करता रहा हूँ, और LLM बस उसके साथ जुड़ा हुआ है
  • जब fast.ai अपेक्षाकृत नया था, तब मैंने ULMFiT के साथ यह किया था। शायद वही समय था जब BERT state of the art था, और संरचना ऐसी थी कि base model को train करने के बाद head के ज़रिए specialize किया जा सकता था
    base model के लिए पूरी Wikipedia इस्तेमाल की, और firehose से इकट्ठा किए गए कई GB tweets भी अतिरिक्त रूप से लगाए। मेरे पास 20 gaming-development computers वाली एक lab का access था, और वे शायद लगभग GTX 2080 स्तर के थे। tokenized Wikipedia पर एक training run में लगभग आधा दिन लगता था, इसलिए हर computer पर अलग settings चलाकर hyperparameter tuning करता था, और अगले दिन सबसे अच्छे result को शुरुआती बिंदु बनाता था। अगले दिन सुबह दफ़्तर आकर results देखना हमेशा मज़ेदार होता था
    engineering भयानक और ad hoc थी, लेकिन मैंने बहुत कुछ सीखा। नतीजे ठीक-ठाक थे और मैंने tweet classification किया, लेकिन इससे यह समझ आ गया कि इसे गंभीरता से करने के लिए कितनी GPU power और engineering challenges चाहिए। generation की क्षमता को मैं पूरी तरह नहीं समझ पाया था, लेकिन जिज्ञासा में जो tweets बनवाए थे उन्हें देखकर मैं काफ़ी देर तक हँसता रहा

  • यह Andrej Karpathy के इस वीडियो(https://youtu.be/kCc8FmEb1nY) का लगभग सीधा written version लगता है, या मैं गलत देख रहा हूँ?

    • पेज पर nanoGPT के साथ इसका संबंध समझाया गया है
      बात कुछ ऐसी है: “nanoGPT का लक्ष्य GPT-2 (124M parameters) को reproduce करना है और यह बहुत-सी चीज़ों को कवर करता है। यह project उसे घटाकर सिर्फ मुख्य बातों तक लाता है, और लगभग 10M parameters वाले मॉडल तक सीमित करता है जो notebook पर 1 घंटे से कम में train हो जाए…”
    • हाँ, तुमने गलत देखा
  • संदर्भ जोड़ूँ तो, वह MLX developer में से एक है और एक सक्षम machine learning researcher भी है

    • इसका source क्या है? यह सही नहीं लगता
  • इसमें लिखा है, “एक hands-on workshop जिसमें GPT training pipeline का हर हिस्सा खुद लिखा जाता है ताकि हर component क्या करता है और क्यों ज़रूरी है, यह समझा जा सके,” लेकिन dependencies में torch दिख रहा है, तो लगता है tensors और backpropagation को खुद implement नहीं किया गया, बल्कि given माना गया है। फिर भी क्या इसे “from scratch” कहना ठीक है?
    मैंने Rust में कुछ ऐसा ही किया था, AI की मदद भी ली थी, लेकिन खुद को बिना dependencies, सिर्फ standard library तक सीमित रखा था। नतीजतन tensor design, kernel concepts, एक साधारण gradient-descent optimizer, हाथ से बनाया JSON parser, rayon-जैसी CPU data-parallel abstraction वगैरह बहुत कुछ implement करना पड़ा। जब सब कुछ जोड़कर चल पड़ा, तो काफ़ी मज़ा आया। बहुत धीमा था, लेकिन काम करता था

  • मुझे नहीं पता कि PyTorch इस्तेमाल करने को अब भी “from scratch” कहा जा सकता है या नहीं। मेरा मतलब यह नहीं कि standard library तक भी बचना चाहिए, लेकिन जिस क्षण आप काम के लिए एकदम उपयुक्त library उठा लेते हैं, वह “from scratch” जैसा महसूस नहीं होता

    • बात में दम है, लेकिन machine learning के ज़्यादातर लोगों के लिए PyTorch व्यावहारिक रूप से standard library है
  • शायद “scratch से LM train करना” ज़्यादा सही होगा। मुझे शक है कि उनके पास ऐसा hardware होगा जो इसे “Large” कहने लायक मॉडल बना सके

    • अगर आपके पास सामान्य सीमा वाला credit card है, तो HuggingFace या Mistral Forge जैसे neocloud providers से पर्याप्त resources किराये पर लिए जा सकते हैं
      यह नहीं कह रहा कि वह करना चाहिए, लेकिन सीखने के लिए आपको खुद GPU खरीदने की ज़रूरत नहीं है
    • एक अकेले 3090 पर भी 1.6B parameter मॉडल को शुरू से अंत तक train किया जा सकता है। यह काफ़ी बड़ा मॉडल है
    • मेरे पास भी आधा terabyte RAM है! DDR4 है, लेकिन आख़िर RAM तो है
      और 48 processor cores भी हैं! AVX512 support नहीं है, लेकिन compute तो कर ही सकते हैं
      LLM को काफ़ी हद तक train किया जा सकता है। या कम-से-कम मेरा परिवार तो कर ही सकता है… हो सकता है मेरे बच्चे को यह project विरासत में लेकर आगे बढ़ाना पड़े
      गंभीरता से कहूँ तो, या तो आप मूल बात चूक रहे हैं, या बेवजह nitpick कर रहे हैं, या फिर बस गलत हैं। यह concepts सीखने के बारे में है, बाकी सब अधिकतर गौण है
      और अगर nitpick या गलत वाली दिशा से देखें, तो “large” language model की documented baseline आखिर है क्या? GPT-2 को तब भी और अब भी “large” language model कहा जाता था, और उसके 1.5B parameters थे। आजकल उस स्तर को train कर सकने वाला consumer GPU लगभग $400 में मिल सकता है