इस ब्लॉग पोस्ट में, मैं आपको आपके अपने AWS SageMaker इंस्टेंस पर MosaicML के ChatGPT प्रतियोगी, MPT-7B को चलाने की प्रक्रिया के बारे में चरण-दर-चरण बताने जा रहा हूँ।
क्या आप ChatGPT की क्षमताओं को लेकर उत्साहित हैं, लेकिन अपने संवेदनशील डेटा को OpenAI के सामने उजागर करने को लेकर चिंतित हैं? सौभाग्य से, ऐसे विकल्प मौजूद हैं जिन्हें आप अपने बुनियादी ढांचे पर चला सकते हैं। ऐसा ही एक विकल्प MosaicML का MPT-7b है, जो ChatGPT का प्रतिस्पर्धी है, जिसके बारे में हम इस ब्लॉग पोस्ट में जानेंगे।
मोज़ेकएमएल, जिसे हाल ही में डेटाब्रिक्स द्वारा $1.3 बिलियन में अधिग्रहित किया गया है , अपने एमपीटी-7बी मॉडल के साथ एमएल समुदाय में हलचल मचा रहा है, जो चैटजीपीटी का एक प्रतिस्पर्धी माना जाता है। अपने वादे के बावजूद, कम दस्तावेज़ीकरण और इसकी भारी संसाधन आवश्यकताओं के कारण इस मॉडल को चलाना कठिन हो सकता है। हालाँकि, कोई ज्यूपिटर नोटबुक में AWS सेजमेकर पर MPT-7B चला सकता है, एक ऐसा वातावरण जो शुरुआती-अनुकूल है और तेजी से पुनरावृत्ति के लिए अत्यधिक लचीला है। यह सेटअप आपको उत्पादन में जाने का निर्णय लेने से पहले मॉडल की व्यवहार्यता और हार्डवेयर आवश्यकताओं का परीक्षण करने की अनुमति देता है।
AWS SageMaker पर Jupyter नोटबुक में MPT-7B चलाने से कई लाभ मिलते हैं। न केवल आप जो उपयोग करते हैं उसके लिए भुगतान कर सकते हैं और काम पूरा होने पर इसे बंद कर सकते हैं, बल्कि मॉडल को फिर से लोड किए बिना आपके कोड के कुछ हिस्सों को आसानी से फिर से चलाने की क्षमता पुनरावृत्त विकास के दौरान समय बचाती है। लेकिन सावधान रहें! यदि आप अपने नोटबुक इंस्टेंसेस को बंद करना भूल जाते हैं, तो शुल्क तेजी से बढ़ सकते हैं।
हालाँकि यह विधि अपेक्षाकृत सुविधाजनक है, फिर भी कुछ बातें हैं जिन्हें आपको ध्यान में रखना चाहिए। सबसे पहले, मॉडल को लोड करने में उच्च-प्रदर्शन वाले GPU पर भी 20 मिनट तक का समय लग सकता है, जिससे यह प्रक्रिया कुछ हद तक समय लेने वाली हो जाती है। इसके अलावा, लागत भी विचार करने योग्य एक कारक है, क्योंकि चलाने की लागत कम से कम $4 प्रति घंटा है। आपको कम से कम p3.2xlarge इंस्टेंस पर MPT-7B चलाने की आवश्यकता होगी; इससे छोटा कुछ भी संभव नहीं लगता. यदि आप सेजमेकर के बजाय EC2 चुनते हैं, तो आपको P3.2xlarge इंस्टेंस का उपयोग करने के लिए AWS से अनुमति मांगनी होगी।
अगले अनुभागों में मैं आपको चरण-दर-चरण बताऊंगा कि एमपीटी-7बी मॉडल को आपके अपने सेजमेकर ज्यूपिटर नोटबुक में कैसे चलाया जाए:
AWS कंसोल चालू करें और SageMaker खोजें:
बाईं ओर के मेनू से, नोटबुक->नोटबुक इंस्टेंसेस चुनें:
नोटबुक इंस्टेंस बनाएं बटन पर क्लिक करें:
एक इंस्टेंस नाम निर्दिष्ट करें. इंस्टेंस प्रकार m1.p3.2xlarge चुनें। दुर्भाग्य से, ऐसा लगता है कि m1.p3.2xlarge जितना शक्तिशाली इंस्टेंस की आवश्यकता है, अन्यथा आपके इंस्टेंस की मेमोरी खत्म हो सकती है या सबसे सरल प्रश्नों का उत्तर देने में अत्यधिक समय लग सकता है। हालाँकि, कृपया ध्यान दें कि इस उदाहरण की लागत लगभग $4/घंटा होगी, इसलिए अपने उपयोग की सावधानीपूर्वक निगरानी करना महत्वपूर्ण है।
यदि आपके परीक्षण वातावरण में कोई विशेष रूप से संवेदनशील डेटा नहीं है तो आप किसी भी S3 बकेट तक पहुंच प्रदान कर सकते हैं। अन्यथा, आपको और अधिक स्पष्ट होने की आवश्यकता होगी।
तब नोटबुक लंबित स्थिति में होगी। यह संभवतः लगभग 10 मिनट तक चलेगा:
इस बीच, हम एक नोटबुक डाउनलोड करेंगे ताकि AWS SageMaker इंस्टेंस का प्रावधान समाप्त होने के बाद हम इसे अपलोड कर सकें।
AWS SageMaker.ipynb पर MPT-7B पर नोटबुक पर जाएं और इसे डाउनलोड करें:
इस नोटबुक में आपको दो मुख्य कोड ब्लॉक दिखाई देंगे। पहला ब्लॉक MPT-7B टोकनाइज़र और मॉडल को लोड करता है:
from torch import cuda, bfloat16 from transformers import AutoTokenizer, AutoModelForCausalLM, AutoConfig device = f'cuda:{cuda.current_device()}' if cuda.is_available() else 'cpu' tokenizer = AutoTokenizer.from_pretrained("mosaicml/mpt-7b-chat", trust_remote_code=True) config={"init_device": "meta"} model = AutoModelForCausalLM.from_pretrained("mosaicml/mpt-7b-chat", trust_remote_code=True, config=config, torch_dtype=bfloat16) print(f"device={device}") print('model loaded')
टोकननाइज़र का उपयोग मॉडल पर भेजे गए प्रश्न को एन्कोड करने और मॉडल से प्रतिक्रिया को डीकोड करने के लिए किया जाता है। इसके अतिरिक्त, हम अपने GPU के लिए डिवाइस विनिर्देश प्राप्त करते हैं ताकि हम बाद में इसका उपयोग करने के लिए मॉडल को कॉन्फ़िगर कर सकें:
import time from IPython.display import Markdown import torch from transformers import StoppingCriteria, StoppingCriteriaList # mtp-7b is trained to add "<|endoftext|>" at the end of generations stop_token_ids = [tokenizer.eos_token_id] # Define custom stopping criteria object. # Source: https://github.com/pinecone-io/examples/blob/master/generation/llm-field-guide/mpt-7b/mpt-7b-huggingface-langchain.ipynb class StopOnTokens(StoppingCriteria): def __call__(self, input_ids: torch.LongTensor,scores: torch.FloatTensor, **kwargs) -> bool: for stop_id in stop_token_ids: if input_ids[0][-1] == stop_id: return True return False stopping_criteria = StoppingCriteriaList([StopOnTokens()]) def ask_question(question, max_length=100): start_time = time.time() # Encode the question input_ids = tokenizer.encode(question, return_tensors='pt') # Use the GPU input_ids = input_ids.to(device) # Generate a response output = model.generate( input_ids, max_new_tokens=max_length, temperature=0.9, stopping_criteria=stopping_criteria ) # Decode the response response = tokenizer.decode(output[:, input_ids.shape[-1]:][0], skip_special_tokens=True) end_time = time.time() duration = end_time - start_time display(Markdown(response)) print("Function duration:", duration, "seconds")
stopping_critera
के उपयोग पर ध्यान दें, जिसकी आवश्यकता है अन्यथा मॉडल हमारे प्रश्न का उत्तर देने के बाद भी बड़बड़ाना शुरू कर देगा।
यदि आप विभिन्न विकल्पों का पता लगाना चाहते हैं तो मॉडल जनरेट पैरामीटर देखें।
अब, आइए इस नोटबुक को सेजमेकर पर अपलोड करें।
उम्मीद है कि इस समय तक आपके सेजमेकर नोटबुक इंस्टेंस का प्रावधान पूरा हो चुका होगा। जब यह हो जाए, तो ओपन ज्यूपिटर लिंक पर क्लिक करें:
फिर, अपनी स्क्रीन के ऊपरी दाएं कोने में अपलोड बटन पर क्लिक करें और वह नोटबुक चुनें जिसे आपने अभी डाउनलोड किया है:
कर्नेल को conda_python3 पर सेट करें:
सेल चुनें -> सभी चलाएँ :
फिर ब्राउज़र टैब में एक ऑवरग्लास लोगो दिखाई देगा:
फिर आपको मॉडल डाउनलोड होने के लिए लगभग 10 मिनट तक प्रतीक्षा करनी होगी:
इसके चलने के बाद, आपको प्रश्न का उत्तर दिखाई देगा मुझे परमाणु विखंडन और संलयन के बीच अंतर समझाएं :
चूँकि मॉडल और टोकननाइज़र पहले ही ऊपर लोड हो चुका है, आप बस Ask_question कोड ब्लॉक को संशोधित कर सकते हैं और कोई अन्य प्रश्न पूछने के लिए रन बटन पर क्लिक कर सकते हैं। यह आपको हर बार किसी नए प्रश्न का परीक्षण करने में 10 मिनट खर्च करने से बचाएगा।
जैसे ही आप मॉडल का परीक्षण पूरा कर लेंगे, आप नोटबुक इंस्टेंसेस की अपनी सूची पर वापस जाना चाहेंगे और इसे रोक देंगे। यदि आप नहीं करते हैं, तो $4/घंटा बहुत तेज़ी से बढ़ जाएगा 💸
प्रदर्शन के संदर्भ में, मेरे प्रारंभिक परीक्षणों से पता चलता है कि एमपीटी-7बी के परिणाम चैटजीपीटी जितने अच्छे नहीं हो सकते हैं। यह निम्न जैसे प्रश्नों का उत्तर देकर अच्छा काम करता है:
लेकिन बेलीज़ की राजधानी क्या है? जैसे प्रश्नों के लिए यह बहुत बुरी तरह विफल रहता है:
मैं वर्तमान में अधिक डेटा एकत्र कर रहा हूं और एक अनुवर्ती ब्लॉग पोस्ट में एक व्यापक तुलनात्मक विश्लेषण करूंगा। उस पोस्ट में, मैं वास्तविक वार्तालाप इतिहास का उपयोग करके एमपीटी-7बी, एमपीटी-30बी, फाल्कन-40बी और चैटजीपीटी के प्रश्न और उत्तर प्रदर्शन की तुलना करूंगा।
एक बार जब आप परीक्षण से उत्पादन की ओर संक्रमण के लिए तैयार हो जाते हैं, तो सेजमेकर एक अतिरिक्त लाभ प्रदान करता है - आपके मॉडल के लिए एक समापन बिंदु बनाने की क्षमता। सेजमेकर के साथ, आप अपने संसाधनों को अनुकूलित करते हुए, मांग के आधार पर अंतिम बिंदु तक ऑटो-स्केल कर सकते हैं।
ध्यान रखें कि ज्यूपिटर नोटबुक में चलते समय आपकी प्रक्रिया में आसानी से गड़बड़ी हो जाती है और मेमोरी खत्म हो जाती है। यदि ऐसा होता है, तो बस कर्नेल को बंद करें और सभी कमांड फिर से चलाएँ।
यदि आप इस मॉडल को AWS के अलावा किसी अन्य प्लेटफ़ॉर्म पर चलाने के बारे में उत्सुक हैं, तो Google Colab Pro $9/माह पर एक और व्यवहार्य विकल्प है। हालाँकि, हमारे परीक्षण के आधार पर, हमने पाया कि हमने प्रदान किए गए क्रेडिट कुछ ही घंटों में समाप्त कर दिए। 😳
एक और चुनौती जिसका आपको सामना करना पड़ सकता है वह है CUDA संस्करण असंगतता के कारण सेजमेकर पर ट्राइटन अनुकूलन का उपयोग करने में असमर्थता। दुर्भाग्य से, AWS के वर्तमान P3 उदाहरणों में हालिया CUDA संस्करण शामिल नहीं है। इसलिए, यदि आप ट्राइटन अनुकूलन का उपयोग करना चाहते हैं, तो आपको कमांड लाइन एक्सेस के साथ एक EC2 कंटेनर बनाने की आवश्यकता होगी। हालाँकि, यह ध्यान रखना महत्वपूर्ण है कि आपको 8 VCPUs के साथ एक इंस्टेंस चलाने के लिए AWS समर्थन से विशेष अनुमति की भी आवश्यकता होगी। भविष्य की पोस्ट में, मैं ट्राइटन को एकीकृत करने और लैम्ब्डा लैब्स जैसे अधिक लागत प्रभावी जीपीयू क्लाउड प्रदाता का उपयोग करने के बारे में एक विस्तृत मार्गदर्शिका प्रदान करूंगा।
जबकि MosaicML का MPT-7B OpenAI के ChatGPT का एक व्यवहार्य विकल्प प्रदान करता है, यह चुनौतियों का अपना सेट प्रस्तुत करता है। मॉडल चलाना समय लेने वाला, महंगा हो सकता है, और उपलब्ध दस्तावेज़ीकरण की कमी है। हालाँकि, मॉडल को घर में रखने और आपके डेटा को OpenAI के संपर्क में आने से बचाने की क्षमता कुछ उपयोग के मामलों के लिए आकर्षक हो सकती है।
सेजमेकर मॉडल का त्वरित परीक्षण करने के लिए शानदार सुविधा प्रदान करता है और जब आप तैयार हों तो उत्पादन में परिवर्तन करने की लचीलापन प्रदान करता है। चाहे आप अभी एमपीटी-7बी से शुरुआत कर रहे हों या कुछ समय से इसका उपयोग कर रहे हों, हमें उम्मीद है कि इस गाइड ने बहुमूल्य अंतर्दृष्टि प्रदान की है।
हमारे अगले ब्लॉग पोस्ट के लिए बने रहें, जहां हम MPT-7B, MPT-30B, Falcon-40b और ChatGPT के बीच प्रदर्शन तुलनाओं पर गहराई से चर्चा करेंगे।
यदि आप MPT-7B या इसके बड़े संस्करण, MPT-30B के बारे में अधिक जानने में रुचि रखते हैं, तो निम्नलिखित लिंक देखें।
और याद रखें, चाहे आप ChatGPT या MPT-7B के साथ काम कर रहे हों, कुंजी यह सुनिश्चित करना है कि आपके उपयोग के मामले को डेटा गोपनीयता और लागत-प्रभावशीलता से समझौता किए बिना परोसा जाए। हैप्पी टिंकरिंग!
MindfulDataAI.com पर, हम व्यवसायों के लिए ChatGPT की पेशकश करते हैं। यदि आप अपनी कंपनी के डेटा के साथ चैटजीपीटी, एमपीटी, या अन्य मॉडलों का लाभ उठाने में रुचि रखते हैं, तो कृपया हमसे संपर्क करें।