Train Your Own LLM From Scratch - शुरुआत से खुद अपना LLM ट्रेन करने की हैंड्स-ऑन वर्कशॉप
(github.com/angelos-p)- GPT training pipeline के हर हिस्से को खुद लिखते हुए यह समझने वाली हैंड्स-ऑन वर्कशॉप कि हर component क्या करता है और उसकी ज़रूरत क्यों है
- लक्ष्य है कि notebook में शुरुआत से train किए गए GPT model से Shakespeare-शैली का text generate किया जाए, और इसे एक workshop session के भीतर पूरा किया जा सके इसलिए इसे लगभग 10M parameters वाले model तक छोटा किया गया है
- जहाँ nanoGPT का लक्ष्य GPT-2 124M parameters को reproduce करना है, वहीं यह project सिर्फ core हिस्सों को रखकर notebook पर 1 घंटे के भीतर train होने लायक बनाया गया है
- जिन components को आप खुद लिखेंगे, उनमें Tokenizer, Transformer-आधारित model architecture, training loop, और text generation शामिल हैं, और अंत में आप
model.py,train.py,generate.pyको खुद पूरा करेंगे - पूर्वज्ञान के रूप में Python code पढ़ने की सहजता पर्याप्त है, machine learning का अनुभव आवश्यक नहीं है, और Python 3.12+ चाहिए
- runtime 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 पर files upload करके!python train.pyसे चलाया जा सकता है - वर्कशॉप में character-level tokenizer, embeddings, self-attention, LayerNorm, MLP blocks, loss function, AdamW, gradient clipping, learning rate scheduling, और temperature तथा top-k sampling को क्रम से कवर किया जाता है
- base architecture input text को character-level token IDs में बदलती है, फिर token embeddings और positional embeddings से गुजरते हुए कई Transformer blocks पार कराती है, और अंत में अगले token की probability के लिए logits output करती है
- दिए गए 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 के लिए tuned हैं - BPE tokenization में GPT-2 के 50,257 vocab की तरह vocabulary बड़ी होने से छोटे dataset में ज़्यादातर token bigrams बहुत कम मिलते हैं, इसलिए pattern learning कठिन हो जाती है; और बड़े dataset में BPE पर switch करने की बात भी शामिल है
- मुख्य reference materials के रूप में nanoGPT, build-nanogpt video lecture, Karpathy's microgpt, nanochat, Attention Is All You Need (2017), GPT-2 paper (2019), TinyStories paper दिए गए हैं
1 टिप्पणियां
Hacker News की टिप्पणियाँ
अगर यह सामग्री दिलचस्प लग रही है, तो Stanford की CS336 क्लास भी ज़ोरदार सिफारिश के लायक है। यह उसी curriculum को कहीं ज़्यादा गहराई से कवर करती है, और scaling laws जैसी सैद्धांतिक समझ के साथ kernel optimization/profiling जैसे systems दृष्टिकोण भी परिचित कराती है
बेशक, assignments खुद करने होंगे: https://cs336.stanford.edu/
थोड़ा प्रचार करूँ तो, एक 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...
मैं तो जन्म के दिन से ही यह कर रहा हूँ। शुरुआत कठिन थी, लेकिन धीरे-धीरे बेहतर हो रहा हूँ
जब 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 का लक्ष्य GPT-2 (124M parameters) को reproduce करना है और यह बहुत-सी चीज़ों को कवर करता है। यह project उसे घटाकर सिर्फ मुख्य बातों तक लाता है, और लगभग 10M parameters वाले मॉडल तक सीमित करता है जो notebook पर 1 घंटे से कम में train हो जाए…”
संदर्भ जोड़ूँ तो, वह MLX developer में से एक है और एक सक्षम machine learning researcher भी है
इसमें लिखा है, “एक 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” जैसा महसूस नहीं होता
शायद “scratch से LM train करना” ज़्यादा सही होगा। मुझे शक है कि उनके पास ऐसा hardware होगा जो इसे “Large” कहने लायक मॉडल बना सके
यह नहीं कह रहा कि वह करना चाहिए, लेकिन सीखने के लिए आपको खुद GPU खरीदने की ज़रूरत नहीं है
और 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 में मिल सकता है