paint-brush
AWS SageMaker पर MPT-7B कैसे चलाएं: MosaicML का ChatGPT प्रतियोगीद्वारा@redgeoff
444 रीडिंग
444 रीडिंग

AWS SageMaker पर MPT-7B कैसे चलाएं: MosaicML का ChatGPT प्रतियोगी

द्वारा Geoff Cox8m2023/07/19
Read on Terminal Reader

बहुत लंबा; पढ़ने के लिए

ब्लॉग पोस्ट आपके स्वयं के बुनियादी ढांचे पर चैटबॉट मॉडल चलाने के लिए ओपनएआई के चैटजीपीटी के विकल्प के रूप में मोज़ेकएमएल के एमपीटी-7बी को पेश करता है। यह AWS SageMaker पर MPT-7B को चलाने के तरीके के बारे में चरण-दर-चरण मार्गदर्शिका प्रदान करता है, जिसमें लागत नियंत्रण, आसान पुनरावृत्ति और उत्पादन में संक्रमण की क्षमता जैसे लाभों पर प्रकाश डाला गया है। पोस्ट में डेटा गोपनीयता और लागत-प्रभावशीलता के महत्व पर जोर देते हुए मॉडल के साथ प्रदर्शन तुलना और चुनौतियों पर भी चर्चा की गई है।
featured image - AWS SageMaker पर MPT-7B कैसे चलाएं: MosaicML का ChatGPT प्रतियोगी
Geoff Cox HackerNoon profile picture
0-item
1-item
2-item

इस ब्लॉग पोस्ट में, मैं आपको आपके अपने AWS SageMaker इंस्टेंस पर MosaicML के ChatGPT प्रतियोगी, MPT-7B को चलाने की प्रक्रिया के बारे में चरण-दर-चरण बताने जा रहा हूँ।


क्या आप ChatGPT की क्षमताओं को लेकर उत्साहित हैं, लेकिन अपने संवेदनशील डेटा को OpenAI के सामने उजागर करने को लेकर चिंतित हैं? सौभाग्य से, ऐसे विकल्प मौजूद हैं जिन्हें आप अपने बुनियादी ढांचे पर चला सकते हैं। ऐसा ही एक विकल्प MosaicML का MPT-7b है, जो ChatGPT का प्रतिस्पर्धी है, जिसके बारे में हम इस ब्लॉग पोस्ट में जानेंगे।

मोज़ेकएमएल और एमपीटी-7बी का परिचय

मोज़ेकएमएल, जिसे हाल ही में डेटाब्रिक्स द्वारा $1.3 बिलियन में अधिग्रहित किया गया है , अपने एमपीटी-7बी मॉडल के साथ एमएल समुदाय में हलचल मचा रहा है, जो चैटजीपीटी का एक प्रतिस्पर्धी माना जाता है। अपने वादे के बावजूद, कम दस्तावेज़ीकरण और इसकी भारी संसाधन आवश्यकताओं के कारण इस मॉडल को चलाना कठिन हो सकता है। हालाँकि, कोई ज्यूपिटर नोटबुक में AWS सेजमेकर पर MPT-7B चला सकता है, एक ऐसा वातावरण जो शुरुआती-अनुकूल है और तेजी से पुनरावृत्ति के लिए अत्यधिक लचीला है। यह सेटअप आपको उत्पादन में जाने का निर्णय लेने से पहले मॉडल की व्यवहार्यता और हार्डवेयर आवश्यकताओं का परीक्षण करने की अनुमति देता है।

AWS सेजमेकर पर MPT-7B चल रहा है

AWS SageMaker पर Jupyter नोटबुक में MPT-7B चलाने से कई लाभ मिलते हैं। न केवल आप जो उपयोग करते हैं उसके लिए भुगतान कर सकते हैं और काम पूरा होने पर इसे बंद कर सकते हैं, बल्कि मॉडल को फिर से लोड किए बिना आपके कोड के कुछ हिस्सों को आसानी से फिर से चलाने की क्षमता पुनरावृत्त विकास के दौरान समय बचाती है। लेकिन सावधान रहें! यदि आप अपने नोटबुक इंस्टेंसेस को बंद करना भूल जाते हैं, तो शुल्क तेजी से बढ़ सकते हैं।


हालाँकि यह विधि अपेक्षाकृत सुविधाजनक है, फिर भी कुछ बातें हैं जिन्हें आपको ध्यान में रखना चाहिए। सबसे पहले, मॉडल को लोड करने में उच्च-प्रदर्शन वाले GPU पर भी 20 मिनट तक का समय लग सकता है, जिससे यह प्रक्रिया कुछ हद तक समय लेने वाली हो जाती है। इसके अलावा, लागत भी विचार करने योग्य एक कारक है, क्योंकि चलाने की लागत कम से कम $4 प्रति घंटा है। आपको कम से कम p3.2xlarge इंस्टेंस पर MPT-7B चलाने की आवश्यकता होगी; इससे छोटा कुछ भी संभव नहीं लगता. यदि आप सेजमेकर के बजाय EC2 चुनते हैं, तो आपको P3.2xlarge इंस्टेंस का उपयोग करने के लिए AWS से अनुमति मांगनी होगी।


अगले अनुभागों में मैं आपको चरण-दर-चरण बताऊंगा कि एमपीटी-7बी मॉडल को आपके अपने सेजमेकर ज्यूपिटर नोटबुक में कैसे चलाया जाए:

चरण 1 - सेजमेकर कंसोल खोलें

AWS कंसोल चालू करें और SageMaker खोजें:


सेजमेकर खोजें। छवि क्रेडिट: लेखक

चरण 2 - एक नोटबुक इंस्टेंस बनाएं

बाईं ओर के मेनू से, नोटबुक->नोटबुक इंस्टेंसेस चुनें:


नोटबुक उदाहरण. छवि क्रेडिट: लेखक


नोटबुक इंस्टेंस बनाएं बटन पर क्लिक करें:


नोटबुक उदाहरण बनाएँ. छवि क्रेडिट: लेखक


एक इंस्टेंस नाम निर्दिष्ट करें. इंस्टेंस प्रकार m1.p3.2xlarge चुनें। दुर्भाग्य से, ऐसा लगता है कि m1.p3.2xlarge जितना शक्तिशाली इंस्टेंस की आवश्यकता है, अन्यथा आपके इंस्टेंस की मेमोरी खत्म हो सकती है या सबसे सरल प्रश्नों का उत्तर देने में अत्यधिक समय लग सकता है। हालाँकि, कृपया ध्यान दें कि इस उदाहरण की लागत लगभग $4/घंटा होगी, इसलिए अपने उपयोग की सावधानीपूर्वक निगरानी करना महत्वपूर्ण है।


नोटबुक इंस्टेंस विवरण निर्दिष्ट करें. छवि क्रेडिट: लेखक


एक नई IAM भूमिका बनाएँ:


एक नई भूमिका बनाएँ. छवि क्रेडिट: लेखक


यदि आपके परीक्षण वातावरण में कोई विशेष रूप से संवेदनशील डेटा नहीं है तो आप किसी भी S3 बकेट तक पहुंच प्रदान कर सकते हैं। अन्यथा, आपको और अधिक स्पष्ट होने की आवश्यकता होगी।


S3 पहुंच निर्दिष्ट करें. छवि क्रेडिट: लेखक


नोटबुक इंस्टेंस बनाएं बटन पर क्लिक करें:


नोटबुक उदाहरण बनाएँ. छवि क्रेडिट: लेखक


तब नोटबुक लंबित स्थिति में होगी। यह संभवतः लगभग 10 मिनट तक चलेगा:


लंबित नोटबुक उदाहरण. छवि क्रेडिट: लेखक


इस बीच, हम एक नोटबुक डाउनलोड करेंगे ताकि AWS SageMaker इंस्टेंस का प्रावधान समाप्त होने के बाद हम इसे अपलोड कर सकें।

चरण 3 - नोटबुक डाउनलोड करें

AWS SageMaker.ipynb पर MPT-7B पर नोटबुक पर जाएं और इसे डाउनलोड करें:


Google Colab पर नोटबुक. छवि क्रेडिट: लेखक



नोटबुक डाउनलोड करें. छवि क्रेडिट: लेखक


इस नोटबुक में आपको दो मुख्य कोड ब्लॉक दिखाई देंगे। पहला ब्लॉक 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 के उपयोग पर ध्यान दें, जिसकी आवश्यकता है अन्यथा मॉडल हमारे प्रश्न का उत्तर देने के बाद भी बड़बड़ाना शुरू कर देगा।


यदि आप विभिन्न विकल्पों का पता लगाना चाहते हैं तो मॉडल जनरेट पैरामीटर देखें।


अब, आइए इस नोटबुक को सेजमेकर पर अपलोड करें।

चरण 4 - नोटबुक अपलोड करें

उम्मीद है कि इस समय तक आपके सेजमेकर नोटबुक इंस्टेंस का प्रावधान पूरा हो चुका होगा। जब यह हो जाए, तो ओपन ज्यूपिटर लिंक पर क्लिक करें:


ज्यूपिटर खोलें. छवि क्रेडिट: लेखक


फिर, अपनी स्क्रीन के ऊपरी दाएं कोने में अपलोड बटन पर क्लिक करें और वह नोटबुक चुनें जिसे आपने अभी डाउनलोड किया है:


नोटबुक अपलोड करें. छवि क्रेडिट: लेखक


कर्नेल को conda_python3 पर सेट करें:


कर्नेल सेट करें. छवि क्रेडिट: लेखक


चरण 5 - नोटबुक चलाएँ

सेल चुनें -> सभी चलाएँ :


सभी कक्ष चलाएँ. छवि क्रेडिट: लेखक


फिर ब्राउज़र टैब में एक ऑवरग्लास लोगो दिखाई देगा:


नोटबुक की प्रतीक्षा करें. छवि क्रेडिट: लेखक


फिर आपको मॉडल डाउनलोड होने के लिए लगभग 10 मिनट तक प्रतीक्षा करनी होगी:


मॉडल डाउनलोड करें. छवि क्रेडिट: लेखक


इसके चलने के बाद, आपको प्रश्न का उत्तर दिखाई देगा मुझे परमाणु विखंडन और संलयन के बीच अंतर समझाएं :


मुझे परमाणु विखंडन और संलयन के बीच अंतर समझाएं। छवि क्रेडिट: लेखक


चूँकि मॉडल और टोकननाइज़र पहले ही ऊपर लोड हो चुका है, आप बस Ask_question कोड ब्लॉक को संशोधित कर सकते हैं और कोई अन्य प्रश्न पूछने के लिए रन बटन पर क्लिक कर सकते हैं। यह आपको हर बार किसी नए प्रश्न का परीक्षण करने में 10 मिनट खर्च करने से बचाएगा।


फ़्रांस की राजधानी कौनसी है?। छवि क्रेडिट: लेखक


चरण 6 - नोटबुक बंद करें

जैसे ही आप मॉडल का परीक्षण पूरा कर लेंगे, आप नोटबुक इंस्टेंसेस की अपनी सूची पर वापस जाना चाहेंगे और इसे रोक देंगे। यदि आप नहीं करते हैं, तो $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 की पेशकश करते हैं। यदि आप अपनी कंपनी के डेटा के साथ चैटजीपीटी, एमपीटी, या अन्य मॉडलों का लाभ उठाने में रुचि रखते हैं, तो कृपया हमसे संपर्क करें।