हैकर की भाषा मॉडल गाइड [वीडियो]
(youtube.com)- Jeremy Howard भाषा मॉडल को थ्योरी से ज़्यादा code-first approach के साथ समझाते हैं, और OpenAI API से लेकर लोकल open source मॉडल तक वास्तविक उपयोग का पूरा फ़्लो देखते हैं
- भाषा मॉडल शब्द नहीं बल्कि token की भविष्यवाणी करते हैं, और pretraining, instruction tuning, तथा RLHF से गुज़रकर सवाल-जवाब और task execution के लिए अधिक उपयुक्त बनते हैं
- GPT-4, सितंबर 2023 के मानक पर, एक शक्तिशाली विकल्प है, लेकिन अपने बारे में, URL, और knowledge cutoff के बाद की जानकारी में कमजोर है, और custom instructions जवाब की गुणवत्ता पर बड़ा असर डालते हैं
- OpenAI API बातचीत की state सेव नहीं करता, इसलिए हर बार पूरा conversation history भेजना पड़ता है, और function calling से Python execution जैसे tools जोड़े जा सकते हैं
- लोकल रनिंग Hugging Face Transformers, Llama 2, GPTQ quantization, RAG, Axolotl fine-tuning, MLC·llama.cpp आदि से संभव है, लेकिन GPU, prompt format, और evaluation limitations भी साथ आती हैं
भाषा मॉडल token की भविष्यवाणी करने वाली compression system हैं
- भाषा मॉडल वाक्य के अगले शब्द का अनुमान लगाकर या छूटे हुए शब्द को भरकर काम करते हैं
- उदाहरण के तौर पर OpenAI के
text-davinci-003में “panda breeding facility” और “live frogs” वाले वाक्य देकर आगे का वाक्य generate कराया जाता है nat.devमें कई भाषा मॉडल आज़माए जा सकते हैं, और अगले token candidates की probability देखी जा सकती है
- उदाहरण के तौर पर OpenAI के
- वास्तविक prediction unit शब्द नहीं बल्कि token है
- token पूरे शब्द, शब्द के हिस्से, punctuation, संख्या आदि हो सकते हैं
tiktokenका उपयोग करके GPT-सीरीज़ मॉडल जैसे tokenizer से string को token ID array में encode और फिर decode किया जा सकता है- उदाहरण में “they are splashing” को space सहित subword units में बाँटा जाता है
- pretraining वह प्रक्रिया है जिसमें इंटरनेट दस्तावेज़ों या Wikipedia वाक्यों से अगले शब्द का अनुमान लगाना neural network को सिखाया जाता है
- “The Birds” Wikipedia वाक्य में Alfred के बाद Hitchcock का अनुमान लगाना उदाहरण के रूप में दिया गया है
- अच्छे next-word prediction के लिए मॉडल को वस्तुओं, समय, फ़िल्मों, निर्देशकों, लोगों के नाम जैसी दुनिया की जानकारी भीतर ही सीखनी पड़ती है
- Howard next-word prediction को compression का एक रूप मानते हैं
- अगले शब्द का अच्छा अनुमान लगाने के लिए बहुत-सी जानकारी को neural network parameters में compress करना पड़ता है
- compression और intelligence के संबंध पर काफ़ी पहले से चर्चा होती रही है
pretraining से instruction tuning और RLHF तक का प्रवाह
- Howard, ULMFiT को भाषा मॉडल उपयोग की बुनियादी अवधारणा के रूप में देखते हैं
- ULMFiT, Howard द्वारा 2017 में बनाया गया algorithm है, जिसे Sebastian Ruder के साथ 2018 की शुरुआत में paper के रूप में व्यवस्थित किया गया
- मूल उदाहरण Wikipedia से भाषा मॉडल को pretrain करने का था
- training flow तीन चरणों में बँटा है
- language model pretraining: next-word prediction के ज़रिए सामान्य ज्ञान सीखा जाता है
- language model fine-tuning: अंतिम task के अधिक निकट दस्तावेज़ों पर फिर से next-word prediction सीखा जाता है
- classifier fine-tuning: अंतिम task के हिसाब से मॉडल को समायोजित किया जाता है
- आधुनिक भाषा मॉडलों में दूसरा चरण मुख्यतः instruction tuning के रूप में उपयोग होता है
- सवाल, निर्देश, अनुरोध और उनके जवाब वाले डेटा से मॉडल को समायोजित किया जाता है
- उदाहरण datasets के रूप में
OpenOrcaऔरFLAN collectionका उल्लेख है - OpenOrca में लगभग 4GB का प्रश्न, context और response डेटा शामिल है
- तीसरे चरण में अक्सर RLHF का उपयोग होता है
- इंसान या बेहतर मॉडल कई जवाबों में से बेहतर जवाब चुनता है
- उदाहरण के तौर पर “करियर के प्रति फिर से जुनून पाने के 5 विचार” जैसे प्रश्न पर दो जवाबों की तुलना दिखाई जाती है
- “language model” शब्द संदर्भ के अनुसार केवल pretraining किए हुए मॉडल, instruction-tuned मॉडल, या RLHF से गुज़रे मॉडल—सभी को दर्शा सकता है
- केवल pretraining किया हुआ मॉडल अपने आप में आम तौर पर कम उपयोगी होता है, और fine-tuning से उसकी उपयोगिता बढ़ती है
- Howard कहते हैं कि आजकल यह चर्चा भी है कि क्या सिर्फ instruction tuning ही काफ़ी हो सकता है
GPT-4 का बेहतर उपयोग और उसकी सीमाएँ
- Howard, सितंबर 2023 के मानक पर GPT-4 को सबसे अच्छा भाषा मॉडल मानकर ज़ोरदार सिफारिश करते हैं
- ChatGPT में $20 प्रति माह देकर GPT-4 का काफ़ी उपयोग किया जा सकता है
- OpenAI API का अलग token-based pricing structure है
- GPT-4 तर्क नहीं कर सकता, इस दावे पर Howard का कहना है कि paper या इंटरनेट के कुछ उदाहरण सीधे डालकर देखने पर वह अक्सर सही जवाब देता था
- Mabel की मृत्यु-समय समस्या, Sally और siblings समस्या, तथा cup·thimble·diamond position समस्या उदाहरण के रूप में आती हैं
- Howard कहते हैं कि इंटरनेट पर GPT-4 के असफल बताए गए उदाहरणों को जाँचने पर अक्सर वह कर लेता था
- मॉडल को हमेशा सही उत्तर देने वाली प्रणाली के रूप में train नहीं किया गया है
- pretraining सबसे plausibile अगले शब्द का अनुमान लगाने की प्रक्रिया है, और इंटरनेट पर fiction, joke, तथा गलत बातें भी बहुत हैं
- RLHF में अधिक confident जवाबों को प्राथमिकता मिली हो सकती है, और evaluators शायद गलत जवाब को पर्याप्त रूप से अलग न कर पाए हों
- custom instructions जवाब की गुणवत्ता बढ़ाने में मदद करती हैं
- “तुम reasoning में अच्छे हो”, “अगर सही उत्तर न हो तो बता दो”, “पहले कुछ वाक्यों में background context समझाओ” जैसे निर्देश हर query के आगे जोड़े जा सकते हैं
- मॉडल एक-एक शब्द बनाता है, और अपने बनाए हुए पाठ को फिर input में शामिल करता है, इसलिए अधिक शब्द generate करने पर अधिक computation कर सकता है
VVसे शुरू होने पर संक्षेप में जवाब देने जैसा व्यक्तिगत नियम भी उदाहरण में आता है
- GPT-4 की स्पष्ट सीमाएँ भी हैं
- मॉडल को यह जानने का मौका training stage में नहीं मिला कि उसे कैसे train किया गया, या context length कितनी है
- उसे URL की सामग्री ठीक से नहीं पता होती, और पूछने पर वह गढ़ सकता है
- GPT-4 का pretraining knowledge सितंबर 2021 तक है
- परिचित क्लासिक puzzles को थोड़ा बदल देने पर वह पुराने pattern की ओर खिंचकर गलत जवाब दे सकता है
- cabbage·goat·wolf river crossing puzzle में constraints बदलने वाला उदाहरण दिया गया है
- गलत जवाब देने के बाद बातचीत से सुधारने की कोशिश करें तो वह बार-बार गलत हो सकता है, इसलिए chat के edit feature से पिछला prompt सुधारना बेहतर है
OpenAI API और function calling से tools जोड़ना
- OpenAI API, Python आदि से programmatically भाषा मॉडल call करने देता है
pip install openaiके बादChatCompletion.createसेgpt-3.5-turboजैसे मॉडल को call करने वाला उदाहरण दिया गया हैsystemmessage, ChatGPT के custom instructions जैसा ही काम करता है- उदाहरण में “Aussie slang और metaphor इस्तेमाल करने वाला Aussie LLM” system prompt डालकर “What is money?” पूछा जाता है
- API conversation में server पर कोई persistent state सेव नहीं होती
- follow-up सवाल के समय पूरा conversation history फिर से भेजना पड़ता है
- उपयोगकर्ता अगर पिछला assistant जवाब मनमाने ढंग से बदलकर भेज दे, तब भी मॉडल उसी conversation history के आधार पर आगे जवाब देगा
- उदाहरण में assistant ने “money is like kangaroos” कहा था, ऐसा मानकर उस metaphor को आगे समझाने को कहा जाता है
- लागत मॉडल और token संख्या पर निर्भर करती है
- token औसतन शब्दों से थोड़ा अधिक होते हैं, लगभग 1⅓ token एक शब्द के बराबर माना जा सकता है
- उदाहरण में GPT-3.5 के लिए
0.0015डॉलर और GPT-4 के लिए0.03डॉलर स्तर का price difference बताया गया है - लगभग 150-token response की लागत GPT-3.5 में करीब
0.0003डॉलर बताई गई है - OpenAI usage page पर उपयोग देखा जा सकता है
- शुरुआती API account में rate limit कम हो सकती है
- पहले 48 घंटे के free users या paid users के लिए प्रति मिनट 3 requests जैसी कम सीमा उदाहरण में दी गई है
- rate limit error आने पर
retry-aftervalue पढ़कर इंतज़ार करने और फिर retry करने वाला Python code चाहिए
- function calling से मॉडल को उपलब्ध tools के बारे में बताया जा सकता है
- Python function स्वयं नहीं भेजा जाता, बल्कि JSON schema के रूप में function name, description, और parameters बताए जाते हैं
- function description यानी docstring, tool के उपयोग का निर्णय लेने में मॉडल के लिए मुख्य जानकारी होती है
sumsfunction उदाहरण में मॉडल सीधे 6+3 का जवाब नहीं देता, बल्कि function call name और arguments लौटाता हैpythonfunction को tool की तरह देने पर 12 factorial निकालने के लिए code generate किया जा सकता है, जिसे उपयोगकर्ता की पुष्टि के बाद चलाकर उसका परिणाम फिर बातचीत में डाला जा सकता है- इस तरीके से Jupyter के भीतर एक सरल code interpreter खुद बनाया जा सकता है
लोकल मॉडल, RAG, और fine-tuning के विकल्प
- लोकल में भाषा मॉडल चलाने के लिए आम तौर पर GPU चाहिए
- Kaggle पुराने GPU के 2 वाले notebook दे सकता है
- Colab बेहतर GPU और अधिक RAM दे सकता है, और मासिक subscription पर विकल्प बढ़ते हैं
- RunPod, Lambda Labs, Vast.ai जैसे GPU rental विकल्पों का उल्लेख है
- संवेदनशील काम “किसी और के कंप्यूटर” पर चलाना उपयुक्त नहीं है
- GPU चुनते समय compute performance से ज़्यादा memory speed और capacity महत्वपूर्ण होती है
- used GTX 3090 को eBay पर लगभग $700 के स्तर पर बताया गया है
- RTX 4090 नया GPU है, लेकिन भाषा मॉडल के लिए 3090 से स्पष्ट रूप से बेहतर नहीं है
- 24GB कई कामों के लिए पर्याप्त नहीं हो सकता, इसलिए दो 3090 का लगभग $1,500 वाला विकल्प दिया गया है
- 48GB RAM वाला A6000 लगभग $5,000 स्तर पर बताया गया है
- अधिक RAM वाले Mac, खासकर M2 Ultra, मौजूदा मॉडल चलाने में बुरे नहीं हैं, लेकिन Nvidia कार्ड से धीमे हैं
- Hugging Face ecosystem लोकल मॉडल प्रयोग का मुख्य toolset है
Transformersसे Hugging Face पर उपलब्ध pretraining और fine-tuning मॉडल लोड किए जा सकते हैं- leaderboard संदर्भ के लिए उपयोगी हैं, लेकिन वास्तविक usability से मेल न भी खाएँ, और benchmark डेटा training set में घुल जाने की leakage समस्या हो सकती है
- सामान्य personal GPU environment में 70B की बजाय 13B या 7B मॉडल अधिक व्यावहारिक हैं
- Llama 2 family और quantization मुख्य उदाहरण हैं
- Meta का
Llama 2 7Bकेवल pretraining किया हुआ मॉडल है, इसमें instruction tuning या RLHF नहीं है, इसलिए यह सीधे question answering के लिए उपयुक्त नहीं है - 7B मॉडल को 16-bit में लोड करने पर सिर्फ weights के लिए ही लगभग 14GB चाहिए
- 8-bit में cast करने से memory कम हो सकती है, लेकिन यह धीमा हो सकता है
bfloat16तेज़ है, लेकिन अधिक RAM चाहिएGPTQquantized मॉडल कम precision के लिए optimize होते हैं, जिससे memory movement घटती है, और उदाहरण में 7B से भी 13B GPTQ मॉडल तेज़ चलाTheBlokeका उल्लेख ऐसे व्यक्ति के रूप में है जो लोकप्रिय मॉडल को GPTQ के लिए optimize करके Hugging Face पर डालते हैं
- Meta का
- instruction-tuned मॉडल में prompt format सही होना ज़रूरी है
Stable Belugaजैसे Llama 2-आधारित instruction-tuned मॉडल के लिए model page का prompt format जैसा है वैसा ही उपयोग करना चाहिएOpenOrca Platypus 13B GPTQके लिए भी अलग prompt format देखकर function के रूप में बनाया जाता है- format सही होने पर “Who is Jeremy Howard?” जैसे सवालों के बेहतर जवाब मिल सकते हैं, लेकिन hallucination फिर भी बनी रह सकती है
- RAG, ताज़ा जानकारी या निजी दस्तावेज़ों का उपयोग करने का तरीका है
- सवाल से संबंधित दस्तावेज़ खोजकर उन्हें context के रूप में जोड़कर मॉडल से जवाब दिलाया जाता है
- Jeremy Howard के Wikipedia page के 613 शब्द context में देने पर अधिक सटीक, 100-शब्दीय जीवनी के करीब जवाब मिला
sentence-transformersदस्तावेज़ और प्रश्न को embedding vectors में बदलकर similarity के आधार पर संबंधित दस्तावेज़ चुनने में मदद करता है- अगर दस्तावेज़ हज़ारों या लाखों में हों, तो vector database का उपयोग करके embeddings पहले से तैयार रखी जाती हैं
H2O GPTलोकल में PDF upload करके RAG करने का एक open source उदाहरण है- follow-up प्रश्नों में, अगर retrieval model को पिछला context न पता हो तो वह गलत दस्तावेज़ खोज सकता है, इसलिए सावधानी ज़रूरी है
- fine-tuning, मॉडल के अपने behavior को बदलने का तरीका है
- उदाहरण dataset में database schema, natural language प्रश्न, और सही SQL शामिल है
- Hugging Face की
datasetslibrary से dataset लोड किया जाता है Axolotlका उपयोग करके Llama 2 example कॉपी किया जाता है और SQL के लिए YAML config बनाकर training की जाती हैaccelerate launch axolotlcommand से लगभग 1 घंटे की training के बादq_lora_outdirectory बनती हैQका मतलब quantize है, औरLoRAछोटे मॉडल और छोटे GPU पर training में मदद करने वाली तकनीक है- training के बाद schema और question देने पर
SELECT count(hosts), theme ... GROUP BY themeजैसे सही SQL बनते हैं
- Mac और दूसरे runtime विकल्प भी हैं
MLCऐसा project है जो iPhone, Android, web browser आदि पर भाषा मॉडल चला सकता है- Mac पर quantized 7B मॉडल चलाकर “What is the meaning of life?” का जवाब लिया गया, और लगभग 9.6 tokens/s की गति मिली
llama.cppggufformat का उपयोग करता है और Python wrapper से भी call किया जा सकता है- अगर आप Nvidia GPU और Python से परिचित हैं, तो PyTorch और Hugging Face ecosystem का उपयोग बेहतर है
- भाषा मॉडल development environment तेज़ी से बदल रहा है और अभी शुरुआती चरण में है, इसलिए installation और edge cases मुश्किल हो सकते हैं, लेकिन Python programmers के लिए यह बेहद रोचक समय है
- fast.ai Discord के
generativechannel में सवाल पूछे जा सकते हैं या अनुभव साझा किए जा सकते हैं
- fast.ai Discord के
1 टिप्पणियां
Hacker News की राय
अभी-अभी पोस्ट किया था और यह पहले ही HN पर आ गया, देखकर हैरानी हुई
इस वीडियो से मुझे काफी उम्मीद है। 90 मिनट की presentation में जितनी core जानकारी याद आ सकी, उतनी भरने की कोशिश की, और लक्ष्य यह था कि जब developers पूछें, “LLM के बारे में जो कुछ जानना चाहिए, सब बता दो”, तो उन्हें दिखाने के लिए एक ही जगह हो
फिर भी कुछ चीजें छूट गई होंगी या कुछ हिस्से अस्पष्ट रहे होंगे। यह मेरी पहली कोशिश है, और किसी दिन इसे पूरी course में expand करने का plan है, इसलिए वीडियो देखने के बाद जो सवाल बचें या जिन concepts को आपको लगता है कि cover करना चाहिए था, वे बताएं तो अच्छा होगा
मुझे जल्द ही सोने जाना है, और Australia में देर हो चुकी है, इसलिए सुबह तक सवालों के ज्यादा जवाब देना मुश्किल हो सकता है। फिर भी उठने पर मैं यह page जरूर देखूंगा, और कल YouTube description में संबंधित papers के links भी जोड़ दूंगा
Ethics या policy issues cover नहीं किए। इसलिए नहीं कि वे important नहीं हैं, बल्कि इसलिए कि इस presentation में मैंने पूरी तरह technical issues पर focus करने का फैसला किया था
शानदार था। वीडियो के साथ देखने वाला notebook यहां है: https://github.com/fastai/lm-hackers/blob/main/lm-hackers.ip...
Project structure भी अच्छा था। इसमें OpenAI API hacking, OpenAI functions से बनाया गया Code Interpreter जैसा clone, Hugging Face model से local LLM चलाना, और आखिरी 10 मिनट में text-to-SQL model बनाने का fine-tuning example भी शामिल है
वीडियो के लिए धन्यवाद। अब तक देखे गए LLM usage tutorials में यह सबसे अच्छा था
https://youtu.be/jkrNMKz9pWU?si=Dvz-Hs4InJXNozhi&t=3278 पर local models और GPT-4 के सही use cases बताते हुए वे कहते हैं, “fine-tuning से मैं जिस type की problem solve करनी है, उसमें खास तौर पर मजबूत model बना सकता हूं, और ऐसे cases में GPT-4 से बेहतर performance भी पूरी तरह संभव है”
इससे जुड़ा एक idea मैं कुछ समय से सोच रहा हूं। कई “छोटे” models, जैसे 7B parameter models, पीछे रखे हुए एक chatbot की कल्पना की जा सकती है। हर model किसी specific task के लिए fine-tuned हो, तो क्या ऐसा system GPT-4 को पछाड़ सकता है?
मोटा-मोटी विचार ऐसा है। context/prompt को “router model” के पास भेजा जाए, और यह model तय करे कि कौन सा expert model सबसे अच्छे से जवाब दे या complete कर सकता है। फिर system context/prompt को उस expert model को भेजे और उसका जवाब return करे। अगर कोई suitable expert model न हो, तो general instruction-tuned general-purpose LLM का उपयोग करे
अगर किसी specific task के लिए fine-tuned छोटा model theoretically GPT-4 से बेहतर हो सकता है, तो ऐसे छोटे models का cluster कुल मिलाकर GPT-4 से आगे निकल सकता है, ऐसा लगता है
यहां वीडियो है [1] https://sambanova.ai/launch2023
थोड़ा नीचे जाने पर HuggingFace के GPU पर चलने वाले 180B parameter Falcon model से comparison है। MoE results न सिर्फ quality में similar हैं, बल्कि बेहद तेज और लगभग instant हैं। Expert models को swap करना या नए data पर retrain करना भी एक बड़ा advantage है, जो ज्यादा monolithic 180B model में जाहिर है आसान नहीं होगा
यह भी impressive है कि यह वीडियो उस व्यक्ति का है जिसने वह paper लिखा जिसने यह पूरी wave शुरू की
शानदार वीडियो है, इसलिए office में भी share किया। practical viewpoint से, मेरी जानकारी में यह इस topic पर सबसे comprehensive intro material हो सकता है
खास तौर पर “GPT X नहीं कर सकता कहने वाली viral posts reproduce नहीं होतीं” वाला section अच्छा लगा। उम्मीद है कि आसपास के लोगों को इस technology को देखते समय critical thinking सीखने में मदद मिलेगी
शानदार वीडियो है। आगे इस्तेमाल करने लायक कुछ नए tips सीखे
सिर्फ कुछ try करके देखने से भी नए uses मिल जाते हैं
कुछ समय पहले एक अच्छा example था। addresses वाली spreadsheet को map layer के रूप में use करने के लिए GeoJSON में बदलना था, लेकिन बहुत आलस आ रहा था, इसलिए देखना चाहा कि ChatGPT इसे कितना अच्छे से handle करता है
पहले step में latitude/longitude की एक pair देकर degrees/minutes format को decimal में बदलने को कहा, तो उसने बिना दिक्कत calculation process दिखाया। फिर पूरी latitude/longitude column दी और calculation process न दिखाने को कहा, तो output भी ठीक आया
इसके बाद placeholders वाला sample JSON structure बनाया, और कहा कि data दूंगा तो column names से placeholders भर देना। data paste करते ही उसने JSON perfect generate कर दिया
दिलचस्प बात यह थी कि अलग से instruction दिए बिना उसने latitude/longitude conversion फिर से किया, और जिस id property का मैंने mention नहीं किया था उसे भी increment कर दिया। काफी impressive था
Jeremy ऐसे व्यक्ति हैं जिनका मैं सम्मान करता हूं, और Queensland में जन्मे और रहने वाले के तौर पर यह याद दिलाते हैं कि world-class talent सचमुच हमारे आसपास हर जगह मौजूद है
बेशक हर field में ऐसे कई लोग होंगे, लेकिन Jeremy उन लोगों में से हैं जिन्हें मैं जानता हूं और जिनका गहरा सम्मान करता हूं