LLM कैसे काम करते हैं

पहले, नाम। LLM का मतलब है बड़ा भाषा मॉडल: ChatGPT जैसे उपकरणों के पीछे की AI का प्रकार, वह चीज जिसे आप एक प्रॉम्प्ट भेजते हैं और टेक्स्ट वापस पाते हैं। यह अध्याय यह दिखाता है कि वास्तव में एक क्या है।
आप एक सवाल टाइप करते हैं, और कुछ सेकंड बाद एक प्रवाहपूर्ण, आत्मविश्वासी जवाब दिखाई देता है। यह ऐसा लगता है कि मॉडल ने आपको समझा और जवाब देख लिया। वह प्रभाव उपयोगी है, और यह गलत तरीकों से भी गलत है जो महत्वपूर्ण हैं, और दोनों के बीच का अंतर वह है जहां से अधिकांश शुरुआती गलतियां आती हैं।
यह वह अध्याय है जो इन उपकरणों के साथ आपके पूरे करियर के लिए भुगतान करता है। आपको मॉडल के प्रशिक्षण के पीछे का गणित जानने की जरूरत नहीं है। आपको यह जानने की जरूरत है कि यह वास्तव में क्या कर रहा है जब यह जवाब देता है, क्योंकि वह चित्र बाकी सब कुछ समझाता है: प्रॉम्प्टिंग क्यों काम करती है, एक ही सवाल अलग जवाब क्यों देते हैं, मॉडल तथ्य क्यों बनाते हैं, वे क्यों खर्च करते हैं जो वे करते हैं, और कुछ सुविधाएं क्यों कठिन होती हैं जो तुच्छ दिखती हैं। इस हैंडबुक में बाद में सब कुछ यहां के विचारों का परिणाम है।
एक मॉडल वास्तव में क्या है
चैट इंटरफेस को हटाएं और एक बड़ा भाषा मॉडल एक चीज है: एक विशाल गणितीय फंक्शन, पैरामीटर नामक अरबों संख्याओं का एक निश्चित सेट (आप उन्हें वजन भी कहते हुए सुनेंगे)। वह पूरा मॉडल है। एक डेटाबेस नहीं, एक सर्च इंजन नहीं, एक बॉक्स में एक छोटा व्यक्ति नहीं। यह संख्याओं का एक बहुत बड़ा ढेर है जो टेक्स्ट में लेता है और टेक्स्ट बाहर निकालता है।
वे संख्याएं किसी प्रोग्रामर के टाइप करने से नहीं आईं। वे प्रशिक्षण के दौरान सेट किए गए थे। प्रदाता ने मॉडल को पाठ की एक अविश्वसनीय मात्रा दी, किताबें, कोड, लेख, वेब पेज, और एक साधारण ड्रिल बिलियन बार चलाए: अगले शब्द को छुपाएं, मॉडल को इसे भविष्य दिखाने के लिए कहें, और जब भी यह गलत होता है तो इसकी संख्याओं को हल्के से धकेलें। इसे विशाल पैमाने पर दोहराएं और संख्याएं धीरे-धीरे उन मानों में बसते हैं जो पाठ की भविष्यवाणी करने में अच्छे हैं। यह प्रशिक्षण है: अरबों डायल को ट्यून करना जब तक भविष्यवाणी अच्छी न हो।
दो चीजें इससे अनुसरण करती हैं, और वे बहुत सारे व्यवहार की व्याख्या करती हैं जो आप बाद में पूरा करेंगे। पहला, प्रशिक्षण एक बार होता है, आगे की ओर, और यह बहुत महंगा है। जब आप मॉडल को कॉल करते हैं तब तक, संख्याएं फ्रोजन होती हैं। मॉडल आपकी बातचीत से सीखता नहीं है। कुछ भी आप कहते हैं इसके पैरामीटर को नहीं बदलता। यह लगता है कि यह याद रखता है और अनुकूल होता है, लेकिन वह सॉफ्टवेयर के चारों ओर है, मॉडल ही नहीं, एक बिंदु जो संदर्भ विंडो अनुभाग में कठोर वापसी आता है।
दूसरा, इसके अंदर तथ्यों की कोई तालिका नहीं है। "ज्ञान" उन संख्याओं में बेक्ड पैटर्न के रूप में रहता है, जिस तरह एक बेकर जिसने दस हजार रोटियां बनाई हैं उसके हाथों में नुस्खा पढ़े बिना तकनीक है। मॉडल को सही, समझदारी वाले पाठ का आकार सीखा। यही कारण है कि यह एक ही वाक्य में प्रवाहपूर्ण और गलत हो सकता है: यह एक अच्छे जवाब का आकार पुनरुत्पादन कर रहा है, एक शेल्फ से एक संग्रहीत तथ्य नहीं पढ़ रहा है।
अगले टोकन की भविष्यवाणी करना
संख्याओं का वह ढेर स्थान पर होने के साथ, मॉडल ठीक एक काम करता है: यह बार-बार अगले टेक्स्ट के हिस्से की भविष्यवाणी करता है।
यहां धीमी गति में लूप है। आप इसे कुछ टेक्स्ट देते हैं। यह उन सभी पैरामीटर के माध्यम से टेक्स्ट चलाता है और हर संभावित अगले हिस्से के लिए संभावना उत्पादन करता है जो यह जानता है, एक बार में दसियों हजार विकल्प। "फ्रांस की राजधानी है" के बाद, हिस्सा "दिल्ली" को 97% स्कोर मिल सकता है, "एक" को 1% स्कोर, और बाकी सब कुछ लगभग कुछ नहीं।
मॉडल फिर एक हिस्सा चुनता है, इसे टेक्स्ट में जोड़ता है, और अगले को चुनने के लिए पूरी चीज फिर से चलाता है। यह दोहराता है जब तक जवाब नहीं दिया जाता।
वह पूरा इंजन है। एक उत्तर जिसे आप एक एकल विचार के रूप में पढ़ते हैं एक बार एक हिस्से के समय का निर्माण किया गया था, प्रत्येक हिस्सा संभावनाओं की ताजा रैंकिंग से चुना गया था, जहां वाक्य जाता है इससे परे कोई योजना नहीं है "अगला क्या संभावित है"। हर क्षमता जिसका आप उपयोग करेंगे, चैट, कोड, अनुवाद, उपकरण उपयोग, तर्क, यह समान लूप है चलाना।
फोन कीबोर्ड जो आपके अगले शब्द का सुझाव देता है वही विचार लघु में है। अंतर भवष्यवाणी के पीछे अरबों पैरामीटर हैं। पर्याप्त पाठ पर प्रशिक्षित, "सबसे संभावित अगला हिस्सा क्या है" काम करने वाला कोड और स्पष्ट व्याख्या लिखने के लिए पर्याप्त अच्छा बदल जाता है। लेकिन अंतर्निहित कदम कभी नहीं बदलता है: यह भविष्यवाणी है, न कि समझ, और एक संग्रहीत उत्तर देख नहीं रहे हैं।
यादृच्छिकता डायल
यदि मॉडल हमेशा एकल सबसे अच्छे स्कोरिंग हिस्से को पकड़ता है, तो यह आपको समान प्रश्न के लिए समान उत्तर सौंप देगा, और वह उत्तर अक्सर सपाट और दोहराव होगा। तो अधिकांश समय पिक में थोड़ी यादृच्छिकता है: यह आमतौर पर उच्च संभावना हिस्सा लेता है, लेकिन हमेशा बिल्कुल शीर्ष एक नहीं। यही कारण है कि आप एक ही सवाल को दो बार पूछ सकते हैं और दो अलग जवाब पा सकते हैं। वह सिस्टम काम कर रहा है जैसा डिज़ाइन किया गया है, एक दोष नहीं।
आप कितनी यादृच्छिकता को तापमान नामक एक सेटिंग के माध्यम से नियंत्रित करते हैं, जिसे आप calling models from code पर अध्याय में मॉडल को कॉल करते समय सेट करते हैं। अंतर्ज्ञान अभी होने के लायक है। कम तापमान पर, मॉडल अपने शीर्ष पिक के करीब रहता है: केंद्रित, सुसंगत, पूर्वानुमेय, जो आप एक चालान से संख्या खींचने या टेक्स्ट को श्रेणियों में सॉर्ट करने के लिए चाहते हैं। उच्च तापमान पर, कम संभावना वाले हिस्से अक्सर चुने जाते हैं: अधिक विविध और रचनात्मक, और कहीं गलत भटकने की अधिक संभावना। बिचार और रचनात्मक लेखन उच्च अंत चाहते हैं; कुछ भी सही उत्तर के साथ कम अंत चाहता है।
तो एक एकल डायल मॉडल को "सावधान और दोहराना" और "आश्चर्यजनक और आविष्कारशील" के बीच स्लाइड करता है। यह तापमान के दोनों तरफ समान भविष्यवाणी लूप है; तापमान केवल यह बदलता है कि मॉडल अपने सबसे सुरक्षित अनुमान से परे कितनी साहसी होकर पहुंचता है।
टोकन
एक मॉडल की भविष्य का "हिस्सा" एक नाम है: टोकन। एक टोकन टेक्स्ट का एक टुकड़ा है, अक्सर एक पूरा शब्द, कभी-कभी केवल एक का हिस्सा। आम शब्द आमतौर पर एक एकल टोकन हैं, जबकि लंबे या दुर्लभ शब्द कई में विभाजित हो जाते हैं।
"tokenization" -> "token" + "ization"
"unbelievable" -> "un" + "believ" + "able"
"cat" -> "cat"पूरे शब्दों या एकल अक्षरों का उपयोग करने के बजाय पाठ को इन विचित्र टुकड़ों में क्यों काटें? यह एक trade-off है। एकल अक्षर हर अनुक्रम को अविश्वसनीय रूप से लंबा बनाते, और लंबाई मॉडल को गणना करनी होती है। पूरे शब्दों को शब्दावली में लाखों प्रविष्टियों की आवश्यकता होती और पहली बार किसी को एक शब्द आविष्कार करने या एक typo बनाने के लिए भी टूट जाती। टोकन मध्य पथ हैं: कुछ दस हजार सामान्य टुकड़ों की निश्चित शब्दावली जिसे कुछ भी spell करने के लिए एक साथ स्नैप किया जा सकता है, उन शब्दों सहित जो मॉडल ने कभी नहीं देखे हैं।
यहां अंतर्निहित परिणाम है जो लोगों को आश्चर्य में डालता है। मॉडल कभी अक्षर नहीं देखता है। यह टोकन देखता है, जो उसके लिए वास्तव में उन हिस्सों के लिए ID नंबर हैं। तो कार्य जो हमें सहज दिखते हैं उसके लिए कठिन हो सकते हैं: एक शब्द में अक्षरों को गिनना, एक स्ट्रिंग को उलट देना, यह देखना कि "स्ट्रॉबेरी" में तीन र हैं।
यह dim नहीं हो रहा है। यह व्यक्तिगत वर्णों को बिल्कुल भी कथित नहीं करता है, जिस तरह आप तैयार रोटी में आटे के अलग-अलग अनाज का स्वाद नहीं ले सकते। जब मॉडल एक spelling या character-counting कार्य को fumbles करता है, यह क्यों है, और fix आमतौर पर सामान्य कोड में उस भाग को करना है।
टोकन भी दो चीजों की इकाई हैं जिनकी आप लगातार देखभाल करेंगे:
- पैसा: प्रदाता प्रति टोकन बिल करते हैं, आप जो भेजते हैं और मॉडल लिखता है दोनों टोकन, इसलिए एक लंबा दस्तावेज़ इनपुट और एक लंबा जवाब आउटपुट दोनों अधिक खर्च करते हैं। अंग्रेजी के लिए एक rough gauge लगभग चार अक्षर प्रति टोकन है, या हर 75 शब्दों के लिए 100 टोकन; कोड और अन्य भाषा अक्सर अधिक टोकन में विभाजित होते हैं, जो आंशिक रूप से यह है कि वे अधिक खर्च कर सकते हैं। आप सीधे इसे पूरा करेंगे जब आप calling models from code शुरू करते हैं।
- सीमाएं: मॉडल कितने टोकन को एक बार में संभाल सकता है इसकी एक सीलिंग है, जो अगला अनुभाग है।
संदर्भ विंडो
संदर्भ विंडो यह है कि मॉडल एक समय में कितना टेक्स्ट ले सकता है, tokens में मापा जाता है। इसे मॉडल के डेस्क के आकार के रूप में चित्रित करें। एक एकल अनुरोध में शामिल सब कुछ उस डेस्क पर एक बार फिट होना होगा: आपके निर्देश, अब तक की बातचीत, कोई भी दस्तावेज़ जिसे आप पेस्ट करते हैं, और उत्तर मॉडल लिख रहा है।
सभी शुरुआत में एक सीमा क्यों है? यह भविष्य से कैसे काम करता है। अगले टोकन को चुनने के लिए, मॉडल यह वजन करता है कि इनपुट में हर टोकन हर दूसरे टोकन से कैसे संबंधित है, तो यह बता सकता है कि "यह" तीन वाक्य पहले बिल्ली को संदर्भित करता है। यह सभी-से-सभी तुलना वह है जो मॉडल को एक पारित भर में अर्थ को track करने देता है, और यह वह भी है जो लंबे इनपुट को प्रक्रिया करने के लिए महंगा बनाता है। प्रदाता एक ceiling, संदर्भ विंडो को सेट करता है, प्रत्येक अनुरोध को manageable रखने के लिए।
जब डेस्क भरा है, कुछ को बाहर आना होगा। यदि एक बातचीत लंबे समय तक चलती है विंडो को overflow करने के लिए, सबसे पहली parts दूर हो जाती हैं और मॉडल उन्हें अब नहीं देख सकता। यही कारण है कि एक लंबी चैट शुरुआत में आप ने जो कहा यह "forget" करती है। यह मानव sense में forgot नहीं किया; वे tokens डेस्क से बाहर हैं। यह भी मदद करने के लिए जानने के लिए कि मॉडल आमतौर पर डेस्क पर क्या है की शुरुआत और अंत में closest ध्यान देते हैं और बीच में दफन चीजों का track खो सकते हैं, तो जहां आप महत्वपूर्ण टेक्स्ट रखते हैं तब मायने रखता है जब आप विंडो को भरते हैं।
अब बिंदु जो लगभग हर शुरुआती को catches, और यह बाकी सभी से अधिक मायने रखता है। मॉडल के पास अलग अनुरोधों के बीच कोई memory नहीं है। याद रखें कि इसकी संख्याएं frozen हैं। प्रत्येक कॉल एक खाली डेस्क के साथ शुरू होता है। मॉडल आपके आखिरी सवाल, आपके नाम, या एक मिनट पहले कुछ भी नहीं याद रखता है।
एक चैट ऐप एक flowing conversation की तरह केवल महसूस करता है क्योंकि ऐप quietly हर नए संदेश के साथ पूरा history को resend करता है। continuity कुछ है सॉफ्टवेयर मॉडल के चारों ओर builds, मॉडल ही नहीं।
वह एक बिंदु आकार देता है कि आप यहां से कैसे सब कुछ build करते हैं। यदि आप चाहते हैं मॉडल कुछ जानने के लिए, आपको उस request में डेस्क पर रखना होगा: अब तक की बातचीत, users विवरण, प्रासंगिक documents, यह सब, हर बार। इस handbook का एक बड़ा हिस्सा वास्तव में वह एक चीज अच्छी तरह करने के बारे में है, right टेक्स्ट को डेस्क पर प्राप्त करना।
मॉडल क्या नहीं जानता है
सभी मॉडल के ज्ञान को bake किया गया जबकि यह प्रशिक्षण दे रहा था, तो यह केवल जानता है जो उस प्रशिक्षण data में था, और वह data को gather किया गया था some cutoff point में past। दो सीमाएं सीधे इससे बाहर आती हैं।
पहला, यह कुछ नहीं जानता जो उसके cutoff के बाद हुआ। पूछो last week की news या library के बारे में जो this month बाहर आई और इसके पास कोई real idea नहीं है, हालांकि यह happily एक plausible-sounding answer produce कर सकता है। दूसरा, यह कभी कुछ private नहीं जानता। आपकी company की internal docs, एक user की order history, आपके database की contents: कोई भी यह उसके trained public text में नहीं था, तो यह नहीं जान सकता, no matter कितने nicely आप ask करते हैं।
एक quieter सीमा भी है। मॉडल आपको आमतौर पर नहीं बता सकते कि कहां से कुछ "जानता है" आता है, क्योंकि ज्ञान अंदर blend किया जाता है बजाय अलग, sourced तथ्यों के रूप में filed किए जाने के। यह आपको एक citation लिख सकता है, लेकिन यह एक real को look up नहीं करते हुए citation देख रहा है।
यह एक technique के लिए कारण है जिसे आप बाद में मिलेंगे retrieval कहा जाता है, या RAG। यदि आप चाहते हैं एक मॉडल recent events के बारे में या आपने अपने private data के बारे में answer करने के लिए, आप इसे retrain नहीं करते। आप relevant text को खुद fetch करते हैं और request time पर डेस्क पर सेट करते हैं, तो मॉडल के पास guessing के बजाय सामने तथ्य हैं। एक मॉडल आपको देते हैं बहुत अधिक होता है एक reasoner over text से specific तथ्यों के एक reliable well की तुलना में।
मॉडल चीजें क्यों बनाते हैं
कभी-कभी एक मॉडल कुछ false state करता है कुल आत्मविश्वास के साथ: एक quote कोई नहीं कहा, एक function जो मौजूद नहीं है, एक citation एक study को जो कभी नहीं लिखा गया। यह hallucination कहा जाता है, और last few sections के बाद यह feel करना चाहिए लगभग inevitable रहस्यमय के बजाय।
कारण है मॉडल के पास "सच" vs "गलत" की कोई internal sense नहीं है। यह केवल है "likely text" vs "unlikely text"। अधिकांश समय वह line up, क्योंकि text में यह trained, true statements far हैं अधिक common false वाले से, तो probable continuation आमतौर पर सही है।
लेकिन जब मॉडल gap hits, कुछ यह कभी trained नहीं था, या आपकी private data यह कभी नहीं देख सकता, यह नहीं stop और flag gap। यह reliably नहीं बता सकता जो यह नहीं जानता। यह करता है केवल चीज यह कभी करता है: produce most probable-sounding continuation।
एक confident, well-formed, wrong उत्तर अक्सर ठीक है क्या sounds most probable है। यही machinery जो इसे fluent बनाता है इसे fluent बनाता है जब यह गलत है।
यह हिस्सा है sit करने के लिए: hallucination एक glitch नहीं है आप पूरी तरह prompt दूर कर सकते हैं। आप reduce कर सकते हैं, और बाद के chapters show करते हैं कैसे। मॉडल को बताना इसके allowed है say "I do not know" एक little मदद करता है। asking जब इसे answer करना केवल text से आप provide करते हैं मदद करता है much अधिक, क्योंकि अब कोई gap नहीं है fill करने के लिए frozen training से। लेकिन tendency आता है कहां से मॉडल fundamentally है, एक probability machine कोई fact-checker के साथ अंदर नहीं, तो durable fixes structural हैं: इसे तथ्य दें work करने के लिए बजाय hoping वह trained में थे, और answers को verify करें जो matter बजाय trusting उन्हें।
Carry out एक rule अन्य सभी के ऊपर यह chapter से: एक मॉडल की confidence आपको बताता है कुछ भी नहीं क्या यह सही है। Fluency और correctness produced हैं same process से और come apart सभी समय। Build जैसे कोई भी single answer गलत हो सकता है, क्योंकि कोई भी single answer हो सकता है।
इसे एक साथ रखना
इस chapter में सब कुछ एक idea एक विचार अलग angles से। एक मॉडल एक frozen ढेर है numbers जो token का अगला predict, और लगभग हर behaviour आप deal करेंगे falls एक से:
- यह predict एक token at एक समय probability की ranking से, तो यह improvises बजाय recalls, और randomness (temperature) का touch मतलब answers vary।
- Tokens chunks हैं यह काम करता है: आपके bill की unit, आपके size limit की unit, और कारण यह नहीं कर सकता reliably letters count करना।
- Context window एक single request का desk है, shared हर चीज से, और मॉडल requests के बीच कुछ भी नहीं याद रखता, तो continuity आपका काम है।
- Its knowledge है frozen एक training cutoff पर और कभी नहीं included आपकी private data, जो यह है क्यों आप fetch तथ्य और put उन्हें prompt में।
- Hallucination price है एक system का जो predict करता है likely text no sense के साथ truth का, reduced by grounding और checking, कभी नहीं clever wording अकेले से।
Hold ये together और surprising amount की AI engineering turns out एक task है different costumes में: get right text onto desk, एक right shape में, एक right moment पर, और कभी नहीं trust output blindly। अगला chapter, Open और closed models, looks कि क्या kinds models हैं और आप एक कैसे get, और फिर prompting है जहां आप शुरू करते हैं steering सभी यह prediction कि आप actually चाहते हैं।

