GPT क्या है? Transformer का एक विज़ुअल परिचय [वीडियो]
(youtube.com)- GPT बड़े पैमाने के डेटा पर pretrain किए गए Transformer होते हैं, जो अगले text fragment के probability distribution का अनुमान लगाते हैं और repeated sampling के ज़रिए वाक्य बनाते हैं
- यही संरचना सिर्फ text generation ही नहीं, बल्कि speech recognition, synthetic speech, image generation और translation में भी इस्तेमाल होती है, लेकिन यहां focus ChatGPT जैसे tools की बुनियाद, यानी next-token prediction पर है
- इनपुट text को tokens में तोड़ा जाता है और वह embedding vectors बनता है, जो attention blocks और multi-layer perceptron blocks से गुजरते हुए आसपास के context को absorb करता है
- GPT-3 में 175 अरब parameters लगभग 28,000 matrices में रखे गए हैं, और embedding व unembedding अकेले ही लगभग 61.7 करोड़ weights लेते हैं
- अंतिम vector, unembedding matrix और softmax से गुजरकर अगले token का probability distribution बनता है, और temperature predictability व diversity के बीच संतुलन नियंत्रित करता है
GPT और Transformer की बुनियादी भूमिका
- GPT के तीन शब्द क्रमशः Generative, Pretrained, Transformer का मतलब रखते हैं
- Generative का मतलब है नया text बनाना
- Pretrained का मतलब है कि इसे बहुत बड़े डेटा पर train किया गया है, और बाद में अतिरिक्त training से किसी खास काम के लिए adjust किया जा सकता है
- Transformer वह neural network architecture है जिसे मौजूदा AI boom की मुख्य खोजों में गिना जाता है
- Transformer कई तरह के models में इस्तेमाल होते हैं
- ऐसे models जो audio input लेकर transcription बनाते हैं
- ऐसे models जो text से synthetic speech बनाते हैं
- DALL-E, Midjourney जैसे tools जो text description से image बनाते हैं
- machine translation, जो 2017 में Google द्वारा पहली बार पेश किए गए मूल Transformer का शुरुआती उपयोग था
- यहां जिस variant की बात हो रही है, वह ChatGPT जैसे tools की बुनियाद, यानी next text prediction model है
- यह text, और कुछ मामलों में आसपास की image या sound भी input के रूप में लेता है, और आगे आने वाली सामग्री का अनुमान लगाता है
- आउटपुट, आगे आ सकने वाले कई text fragments के लिए probability distribution होता है
next-token prediction किस तरह generation में बदलता है
- अगले शब्द का अनुमान लगाना और text generation ऊपर से देखने पर अलग लक्ष्य लग सकते हैं, लेकिन prediction model को बार-बार चलाने से लंबा text बनाया जा सकता है
- शुरुआती text input किया जाता है
- model अगले fragment का probability distribution बनाता है
- उस distribution से random sample लेकर उसे text में जोड़ दिया जाता है
- फिर पूरे नए text को दोबारा input देकर यही प्रक्रिया दोहराई जाती है
- जब GPT-2 को laptop पर इसी तरह चलाया जाता है, तो ऐसे उदाहरण दिखते हैं जहां कहानी अच्छी तरह आगे नहीं बढ़ती
- उसी मूल संरचना के बड़े version, GPT-3 API, पर बदलने से ज़्यादा विश्वसनीय कहानी बनाई जा सकती है
- ChatGPT और दूसरे large language models भी जवाब मूल रूप से बार-बार prediction और sampling के ज़रिए, एक-एक शब्द बनाकर तैयार करते हैं
- chatbot बनाने का एक आसान शुरुआती तरीका है बातचीत की स्थिति को text के रूप में व्यवस्थित करना
- एक system prompt रखा जाता है जिसमें यह सेटिंग होती है कि एक उपयोगी AI assistant और user आपस में interact कर रहे हैं
- user का सवाल पहली conversation fragment के रूप में डाला जाता है
- model से अनुमान लगवाया जाता है कि ऐसा assistant आगे क्या कहेगा
- इस तरीके के अच्छे से काम करने के लिए अतिरिक्त training stage की ज़रूरत होती है
Transformer के अंदर data flow
- input को छोटे हिस्सों, यानी tokens, में बांटा जाता है
- text में token कोई शब्द, शब्द का हिस्सा, या अक्षरों का आम संयोजन हो सकता है
- अगर image या sound भी शामिल हो, तो image patches या sound fragments भी token हो सकते हैं
- हर token एक vector, यानी संख्याओं की सूची, से जुड़ा होता है
- यह vector किसी न किसी रूप में उस fragment का अर्थ encode करता है
- अगर इसे high-dimensional space के coordinates की तरह देखें, तो अर्थ में समान शब्दों के vectors एक-दूसरे के करीब होने की प्रवृत्ति रखते हैं
- vectors की sequence पहले attention block से गुजरती है
- attention block vectors को एक-दूसरे से जानकारी लेने-देने देता है और उनकी values update करता है
- यह “a machine learning model” वाले model और “a fashion model” वाले model जैसी context के हिसाब से बदलने वाली meanings को संभालता है
- कौन-सा शब्द दूसरे शब्द के meaning update में कितना relevant है, और update कैसे होगा, यह इसी में तय होता है
- इसके बाद vectors multi-layer perceptron या feed-forward layer कहे जाने वाले block से गुजरते हैं
- इस stage में vectors आपस में बात नहीं करते, बल्कि समान computation parallel रूप से झेलते हैं
- इसे इस तरह समझाया गया है जैसे हर vector से लंबे सवालों की सूची पूछी जाए और जवाब के अनुसार उसे update किया जाए
- पूरा network attention blocks और multi-layer perceptron blocks को बार-बार दोहराता है
- बीच में normalization stages भी होती हैं, लेकिन high-level overview में उन्हें छोड़ा गया है
- अंत में उम्मीद होती है कि पूरे वाक्य का मुख्य अर्थ sequence के आखिरी vector में समा जाए
- उसी आखिरी vector से संभावित अगले token के लिए पूरा probability distribution बनाया जाता है
deep learning का रूप और GPT-3 के parameter scale
- deep learning, machine learning का वह approach है जिसमें model का behavior data के ज़रिए तय किया जाता है
- इसका उपयोग image से label बनाना या text के बाद अगला शब्द predict करना जैसे उन कामों में होता है, जहां intuition और pattern recognition की ज़रूरत होती है
- शुरुआती AI की तरह procedure को code में साफ़-साफ़ लिखने के बजाय, इसमें adjustable parameters वाली flexible structure बनाई जाती है और example data से उनकी values adjust की जाती हैं
- linear regression machine learning का सबसे सरल उदाहरण है
- यह उन मामलों से जुड़ा है जहां input और output दोनों एक-एक संख्या होते हैं, जैसे घर का area और price
- slope और y-intercept नाम के दो continuous parameters से सबसे उपयुक्त सीधी रेखा खोजी जाती है
- GPT-3 में दो नहीं बल्कि 175 अरब parameters हैं
- इतने बड़े models training data पर overfit हो सकते हैं या training ही असंभव हो सकती है
- deep learning models को ऐसे model family के रूप में देखा जाता है, जो पिछले कई दशकों में अच्छी तरह scale होने वाले साबित हुए हैं
- इस family को जोड़ने वाला common learning algorithm backpropagation है
- backpropagation को बड़े scale पर अच्छे से काम करने के लिए model को एक खास form का पालन करना पड़ता है
- input को real numbers की array के रूप में व्यक्त किया जाना चाहिए
- array कई layers से गुजरते हुए लगातार दूसरी real-number arrays में बदलती रहती है
- text model की अंतिम layer, संभावित अगले tokens की पूरी probability distribution दिखाने वाली संख्याओं की सूची होती है
- deep learning में parameters को आम तौर पर weights कहा जाता है
- data के साथ weights की interaction का मूल तरीका weighted sum है
- बीच में nonlinear functions भी आती हैं, लेकिन वे parameters पर निर्भर नहीं होतीं
- वास्तविक representation में अक्सर weighted sums को सीधे दिखाने के बजाय matrix-vector multiplication के रूप में बांधा जाता है
- GPT-3 के 175 अरब weights लगभग 28,000 matrices में व्यवस्थित हैं
- ये matrices 8 categories में बंटी हुई हैं
- model के weights, training के दौरान हासिल हुआ उसका “brain” हैं, जबकि एक बार run होने पर process होने वाला data, input text जैसे किसी खास उदाहरण को encode करता है
embedding, context size, और output probability distribution
- पहला चरण input text को tokens में बांटना और हर token को vector में बदलना है
- असली token शब्द का हिस्सा या punctuation भी हो सकता है, लेकिन समझाने के लिए यहां उन्हें शब्दों की तरह लिया गया है
- model के पास संभावित tokens की एक तय सूची पहले से होती है, जिसे vocabulary कहा जाता है
- embedding matrix तय करती है कि हर token किस vector में बदलेगा
- इसे W_E से दिखाया जाता है
- इसकी values शुरुआत में random होती हैं, लेकिन data-driven training से तय होती हैं
- GPT-3 की vocabulary size 50,257 है और embedding dimension 12,288 है
- दोनों को गुणा करने पर embedding matrix में लगभग 61.7 करोड़ weights होते हैं
- word embeddings को high-dimensional space के points की तरह समझा जा सकता है
- अर्थ में मिलते-जुलते शब्द पास-पास स्थित होने की प्रवृत्ति रखते हैं
- training आगे बढ़ने पर embeddings ऐसी स्थिति लेने लगते हैं जहां space की दिशाओं का भी अर्थ बनता है
- woman - man और king - queen के संबंध, और Italy - Germany + Hitler के Mussolini के करीब पहुंचने जैसे उदाहरण सामने आते हैं
- queen वाले उदाहरण में यह सावधानी भी बताई गई है कि असली queen embedding, सिर्फ feminine king की तुलना में उससे कहीं ज्यादा दूर हो सकती है
- dot product यह मापने का तरीका है कि दो vectors कितने aligned हैं
- अगर दिशा एक ही हो तो यह positive होता है, लंबवत हो तो 0, और उलटी दिशा हो तो negative
- cats - cat बहुवचन को दर्शाने वाली दिशा हो सकती है, इस परिकल्पना को dot product से परखा जाता है
- बहुवचन संज्ञाओं के values, एकवचन संज्ञाओं से अधिक आने की प्रवृत्ति दिखती है
- one, two, three जैसे शब्दों के साथ dot product में बढ़ती values आने के उदाहरण भी मिलते हैं
- Transformer के vectors सिर्फ एक शब्द को दिखाने तक सीमित नहीं रह सकते, उन्हें context absorb करना होता है
- शुरुआत में बना vector, embedding matrix से आए सिर्फ एक token का अर्थ रखता है
- network से गुजरते हुए लक्ष्य यह है कि उसमें आसपास के शब्दों और दूर के context तक को शामिल करती हुई अधिक विशिष्ट meaning भर जाए
- GPT-3 का context size 2048 है, यानी इसे एक बार में 2048 vectors process करने के लिए train किया गया है
- यही context size, अगले शब्द का अनुमान लगाते समय model कितनी लंबाई तक के text को ध्यान में रख सकता है, इसकी सीमा तय करता है
- यह उस अनुभव से जुड़ता है जहां शुरुआती ChatGPT जैसे chatbots लंबी बातचीत में context खोते हुए लगते थे
- अंतिम चरण अगले token का probability distribution बनाना है
- अंतिम context के आखिरी vector को unembedding matrix W_U से गुणा करके vocabulary size जितनी संख्याओं की सूची बनाई जाती है
- इस raw output के हर घटक को अगले शब्द के अनुमान का logit कहा जाता है
- W_U में vocabulary के हर token के अनुरूप एक row होती है, और हर row की लंबाई embedding dimension के बराबर होती है
- GPT-3 के हिसाब से W_U भी लगभग 61.7 करोड़ अतिरिक्त parameters जोड़ता है
- embedding और unembedding को मिलाकर कुल parameters 1 अरब से थोड़ा ऊपर पहुंच जाते हैं
- softmax किसी भी मनमानी संख्या-सूची को एक वैध probability distribution में बदल देता है
- हर value 0 और 1 के बीच होनी चाहिए और कुल योग 1 होना चाहिए
- हर input number पर e की power लेकर उसे positive बनाया जाता है, फिर कुल योग से भाग देकर normalize किया जाता है
- बड़े input values को 1 के करीब बड़ी probability मिलती है और छोटे values 0 के करीब पहुंच जाते हैं
- यह सिर्फ maximum value चुनने से अधिक smooth है, इसलिए आपस में करीब बड़ी values को भी अर्थपूर्ण probability मिल सकती है
- temperature, softmax distribution की sharpness को नियंत्रित करता है
- T बड़ा होने पर छोटी values को भी अधिक weight मिलता है और distribution अधिक uniform हो जाता है
- T छोटा होने पर बड़ी values और अधिक हावी हो जाती हैं
- T=0 वह extreme है जहां सारा weight maximum value पर सिमट जाता है
- temperature 0 पर हमेशा सबसे predictable शब्द चुना जाता है, और उदाहरण में Goldilocks जैसी घिसी-पिटी कहानी बनती है
- ज्यादा temperature कम संभावित शब्दों को चुने जाने का मौका देता है, लेकिन उदाहरण में कहानी ज्यादा original तरीके से शुरू होकर जल्दी बेतुकी हो जाती है
- API में temperature को 2 से बड़ा सेट नहीं किया जा सकता; यह गणितीय वजह से नहीं, बल्कि tool के बहुत बेतुके नतीजे देने से रोकने के लिए लगाया गया एक मनमाना प्रतिबंध है
1 टिप्पणियां
Hacker News की राय
अगर किसी को पता है कि GPT कैसे काम करता है, तो मेरा एक सवाल है। मुझे लगा था कि ये मॉडल सबसे संभावित अगला शब्द चुनते हैं, लेकिन अगर वे “संभावित शब्दों में से एक” चुनते हैं, तो क्या इससे ऐसी स्थिति नहीं बन सकती जहाँ उसके बाद अगले शब्दों की prediction list बहुत कम संभावित हो जाए?
अगर गणना करना संभव हो, तो “दो शब्दों को साथ में” candidate के रूप में चलाना, और आगे 3, 4, n शब्दों तक बढ़ाना ज़्यादा फायदेमंद लगता है। जानना चाहता हूँ कि क्या ऐसा कोई तरीका है
वीडियो देखने और comments पढ़ने के बाद समझ आया कि यह beam search है, और इसे temperature के साथ इस्तेमाल किया जाता है जो इस behavior को control करता है
temperature और
top_kआपस में काफ़ी मिलते-जुलते parameters हैं, जिन्हें यह reflect करने के लिए लाया गया कि इंसान जो हर वाक्य बोल सकता है वह probabilistically predictable नहीं होता। 2018/2019 के Hugging Face docs के पुराने graph को 2021 में मिलते-जुलते ढंग से reproduce करने का एक उदाहरण यहाँ है: https://lilianweng.github.io/posts/2021-01-02-controllable-t...हो सकता है बहुत लंबी length का beam search बेहतर हो, या कई techniques को मिलाने वाला तरीका अच्छा चले, लेकिन मुझे ऐसा नहीं लगता। Transformer के query-key-value हिस्से कई मायनों में पूरे context के साथ संबंध में एक aggregate पर focus करते हैं। architecture खुद इस तरह की लंबी units के लिए tuned नहीं है, और कोई basic “दो-token” system भी नहीं है
अगर ज़्यादातर GPT models में 50 हज़ार–1 लाख tokens हैं, तो आप 50 हज़ार*50 हज़ार जैसे कहीं ज़्यादा parameters देखेंगे, और data sparsity की समस्या भी आएगी। training complexity को छोड़े भी दें, तो GPT model के कई elements single token या single token index की richness निकालने पर इतने focused हैं कि उन्हें ऐसे beam search के लिए designed कहना मुश्किल है
beam search जैसी techniques मदद करती हैं, लेकिन वे सिर्फ़ constant-factor जैसी improvement जोड़ सकती हैं। फिर भी large language models इन सीमाओं के बावजूद आज की performance तक पहुँच गए हैं
उदाहरण के लिए beam search: https://www.width.ai/post/what-is-beam-search
मूल रूप से यह predicted tokens की probability window बनाए रखकर final output quality बढ़ाने का तरीका है
बड़े blocks को chunk करने पर यह पूरी process मिलकर concept space में वही काम कर सकती है। जैसे sentence embeddings जैसी कोई baseline method लें, तो वह comparison के लिए working block बन जाती है
attention mechanism को आम लोगों को सिखाने के लिए इससे बेहतर व्यक्ति मेरे दिमाग में नहीं आता। सपना सच होने जैसा है
अगर आपने पिछले chapters अभी तक नहीं देखे हैं, तो मैं सच में बहुत recommend करता हूँ
अगर यह पसंद आया, तो Andrej Karpathy channel पर भी neural networks और उनकी internal working समझाने वाले दिलचस्प videos हैं। content उन लोगों के लिए है जिन्हें programming आती है
मैंने भी अज्ञानता में सीधे jump कर दिया था, और उन्होंने जब previous videos देखने की सलाह दी थी तब भी मैंने गलत सोचा कि देखते-देखते समझ जाऊँगा। उसमें ऐसे terms आते हैं जिन्हें ठीक से समझने के लिए ज़रूर जानना पड़ता है
हार मानकर दूसरी learning से gaps भरे और फिर वापस आया, तो उनके videos की value बहुत ज़्यादा समझ आई। जो भी neural networks सीखना चाहता है, उसे मैं strongly recommend करूँगा कि मेरी गलती से सीखें
April Fool’s content के बीच यह अविश्वसनीय रूप से अच्छा antidote है। बस इसे सीधे नसों में चढ़ा लेने का मन करता है
related, यह interactive visualization भी देखने लायक है: https://bbycroft.net/llm
पिछली चर्चा: https://news.ycombinator.com/item?id=38505211
3B1B YouTube पर सबसे अच्छे STEM educators में से एक है
कहा जाता है कि अगला token unembedding के बाद last column के logits को sample करके लिया जाता है, तो फिर क्या यह बस last token को फिर से ले आना नहीं हुआ? या किसी stage पर matrix size N+1 में बदलता है?
अगली videos का इंतज़ार है। इस बार लगता है कि आखिरकार ये चीज़ें कैसे काम करती हैं, यह मैं अपने भीतर समझकर आत्मसात कर पाऊँगा