अमेज़ॅन सेजमेकर पर हगिंग फेस ट्रांसफॉर्मर्स का उपयोग करके प्रश्न-उत्तर कार्य के लिए एक बीईआरटी बड़े मॉडल का वितरित फ़ाइन-ट्यूनिंग

स्रोत नोड: 1885069

नए मॉडलों के प्रशिक्षण से लेकर उन्हें उत्पादन में तैनात करने तक, अमेज़न SageMaker मशीन लर्निंग (एमएल) और डीप लर्निंग की शक्ति का उपयोग करने के लिए स्टार्टअप और उद्यमों के लिए उपकरणों का सबसे संपूर्ण सेट प्रदान करता है।

अपने ट्रांसफॉर्मर्स ओपन-सोर्स लाइब्रेरी और एमएल प्लेटफॉर्म के साथ, हगिंग फेस ट्रांसफर लर्निंग और नवीनतम एमएल मॉडल को वैश्विक एआई समुदाय के लिए सुलभ बनाता है, जिससे दुनिया भर की कंपनियों में डेटा वैज्ञानिकों और एमएल इंजीनियरों के लिए हर नए वैज्ञानिक का लाभ उठाने के लिए आवश्यक समय कम हो जाता है। उन्नति.

नए एनएलपी कार्यों या डोमेन में ट्रांसफॉर्मर को लागू करने के लिए बड़े भाषा मॉडल की फाइन-ट्यूनिंग की आवश्यकता होती है, एक ऐसी तकनीक जो पूर्व-प्रशिक्षित मॉडल के संचित ज्ञान का लाभ उठाकर उन्हें एक अतिरिक्त, कुशल प्रशिक्षण प्रक्रिया में नए कार्य या विशिष्ट प्रकार के दस्तावेज़ों में अनुकूलित करती है।

मौजूदा व्यावसायिक समस्या के लिए सटीक पूर्वानुमान तैयार करने के लिए मॉडल को बेहतर बनाने के लिए बड़े ट्रांसफॉर्मर मॉडलों के प्रशिक्षण की आवश्यकता होती है, उदाहरण के लिए, BERT, BART, RoBERTa, T5, जिन्हें स्केलेबल तरीके से निष्पादित करना चुनौतीपूर्ण हो सकता है।

हगिंग फेस डिलीवरी के लिए सेजमेकर के साथ मिलकर काम कर रहा है उपयोग के लिए तैयार डीप लर्निंग कंटेनर (डीएलसी) जो नवीनतम ट्रांसफॉर्मर मॉडलों के प्रशिक्षण और तैनाती को पहले से कहीं अधिक आसान और तेज बनाते हैं। क्योंकि सेजमेकर डेटा पैरेलल (एसएमडीपी), सेजमेकर मॉडल पैरेलल (एसएमएमपी), एस3 पाइप मोड जैसी सुविधाओं को कंटेनर में एकीकृत किया गया है, इनके उपयोग से कंपनियों के लिए ट्रांसफॉर्मर-आधारित एमएल समाधान जैसे प्रश्न-उत्तर, उत्पादन करने का समय काफी कम हो जाता है। पाठ और छवियां, खोज परिणामों को अनुकूलित करना, और ग्राहक सहायता स्वचालन, संवादी इंटरफेस, अर्थ खोज, दस्तावेज़ विश्लेषण और कई अन्य अनुप्रयोगों में सुधार करना।

इस पोस्ट में, हम हगिंग फेस के साथ सेजमेकर वितरित पुस्तकालयों के गहन एकीकरण पर ध्यान केंद्रित करते हैं, जो डेटा वैज्ञानिकों को सेजमेकर में दिन से लेकर घंटों तक ट्रांसफॉर्मर मॉडल के प्रशिक्षण और फाइन-ट्यूनिंग में तेजी लाने में सक्षम बनाता है।

वितरित प्रशिक्षण का अवलोकन

मॉडलों को प्रशिक्षित करते समय एमएल चिकित्सकों और डेटा वैज्ञानिकों को दो स्केलिंग चुनौतियों का सामना करना पड़ता है: मॉडल आकार स्केलिंग (मापदंडों और परतों की संख्या) और स्केलिंग प्रशिक्षण डेटा। मॉडल आकार या प्रशिक्षण डेटा को स्केल करने से बेहतर सटीकता प्राप्त हो सकती है, लेकिन गहन शिक्षण में ऐसे मामले भी हो सकते हैं जहां त्वरक (सीपीयू या जीपीयू) पर मेमोरी की मात्रा प्रशिक्षण डेटा के आकार और प्रशिक्षण डेटा के आकार के संयोजन को सीमित कर देती है। नमूना। उदाहरण के लिए, बड़े भाषा मॉडल का प्रशिक्षण करते समय, बैच का आकार अक्सर नमूनों की एक छोटी संख्या तक सीमित होता है, जिसके परिणामस्वरूप कम सटीक मॉडल हो सकता है।

वितरित प्रशिक्षण मॉडल को कई प्रोसेसरों के बीच प्रशिक्षित करने के लिए कार्यभार को विभाजित कर सकता है, जिसे कहा जाता है श्रमिकों. ये कार्यकर्ता मॉडल प्रशिक्षण को गति देने के लिए समानांतर रूप से कार्य करते हैं।

हम जो मापना चाहते हैं (मॉडल या डेटा) उसके आधार पर वितरित प्रशिक्षण के दो दृष्टिकोण हैं: डेटा समानांतर और मॉडल समानांतर.

वितरित प्रशिक्षण के लिए डेटा समानांतर सबसे आम दृष्टिकोण है। डेटा समानता में विभिन्न त्वरक पर मॉडल वास्तुकला और भार की एक प्रति बनाना शामिल है। फिर, पूरे प्रशिक्षण सेट को एक ही त्वरक में पारित करने के बजाय, हम प्रशिक्षण सेट को विभिन्न त्वरक में विभाजित कर सकते हैं, और प्रशिक्षण सेट को तेजी से पूरा कर सकते हैं। हालाँकि यह त्वरक को अपनी ग्रेडिएंट जानकारी को एक पैरामीटर सर्वर पर वापस संचारित करने की आवश्यकता के चरण को जोड़ता है, यह समय प्रति त्वरक संपूर्ण डेटासेट के एक अंश पर पुनरावृति की गति को बढ़ावा देने से कहीं अधिक है। इस वजह से, डेटा समानता प्रशिक्षण के समय को कम करने में काफी मदद कर सकती है। उदाहरण के लिए, किसी एकल मॉडल को समानांतरीकरण के बिना प्रशिक्षित करने में 4 घंटे लगते हैं। वितरित प्रशिक्षण का उपयोग करके इसे 24 मिनट तक कम किया जा सकता है। सेजमेकर वितरित प्रशिक्षण ग्रेडिएंट अपडेट में अत्याधुनिक तकनीकों को भी लागू करता है।

एक मॉडल समानांतर दृष्टिकोण का उपयोग बड़े मॉडलों के साथ किया जाता है जो एक त्वरक (जीपीयू) पर फिट होने के लिए बहुत बड़े होते हैं। यह दृष्टिकोण एक समानांतरीकरण रणनीति को लागू करता है जहां मॉडल आर्किटेक्चर को टुकड़ों में विभाजित किया जाता है और विभिन्न त्वरक पर रखा जाता है। इनमें से प्रत्येक शार्ड का कॉन्फ़िगरेशन तंत्रिका नेटवर्क वास्तुकला पर निर्भर है, और इसमें आम तौर पर कई परतें शामिल होती हैं। त्वरक के बीच संचार हर बार तब होता है जब प्रशिक्षण डेटा एक शार्ड से दूसरे शार्ड में जाता है।

संक्षेप में, आपको बड़े डेटासेट के कारण समय-गहन कार्यों के लिए वितरित प्रशिक्षण डेटा समानता का उपयोग करना चाहिए या जब आप अपने प्रशिक्षण प्रयोगों में तेजी लाना चाहते हैं। जब आपका मॉडल एक त्वरक पर फिट नहीं हो सकता तो आपको मॉडल समानता का उपयोग करना चाहिए।

.. पूर्वापेक्षाएँ

सेजमेकर में हगिंग फेस ट्रांसफॉर्मर्स मॉडल का वितरित प्रशिक्षण करने के लिए, आपको निम्नलिखित शर्तें पूरी करनी होंगी:

वितरित प्रशिक्षण लागू करें

हगिंग फेस ट्रांसफॉर्मर्स लाइब्रेरी एक ट्रेनर एपीआई प्रदान करती है जो लाइब्रेरी द्वारा प्रदान किए जाने वाले मॉडलों को प्रशिक्षित करने या फाइन-ट्यून करने के लिए अनुकूलित है। आप इसे अपने मॉडलों पर भी उपयोग कर सकते हैं यदि वे ट्रांसफॉर्मर मॉडल की तरह ही काम करते हैं; देखना ट्रेनर अधिक जानकारी के लिए। इस एपीआई का उपयोग हमारे यहां किया जाता है उदाहरण स्क्रिप्ट, जो दिखाता है कि विभिन्न एनएलपी कार्यों के लिए डेटा को प्रीप्रोसेस कैसे किया जाए, जिसे आप अपनी स्वयं की कस्टम समस्या को हल करने वाली स्क्रिप्ट लिखने के लिए मॉडल के रूप में ले सकते हैं। ट्रेनर एपीआई का वादा यह है कि यह स्क्रिप्ट सेजमेकर सहित किसी भी वितरित सेटअप पर बॉक्स से बाहर काम करती है।

ट्रेनर एपीआई प्रशिक्षण के लिए आवश्यक सभी चीजें लेता है। इसमें आपका डेटासेट, आपका मॉडल (या एक फ़ंक्शन जो आपका मॉडल लौटाता है), a शामिल है compute_metrics फ़ंक्शन जो उन मेट्रिक्स को लौटाता है जिन्हें आप पूर्वानुमानों और लेबलों के सरणियों से ट्रैक करना चाहते हैं, आपका ऑप्टिमाइज़र और सीखने की दर अनुसूचक (अच्छे डिफ़ॉल्ट प्रदान किए जाते हैं), साथ ही सभी हाइपरपैरामीटर जिन्हें आप अपने प्रशिक्षण के लिए ट्यून कर सकते हैं जिन्हें डेटा क्लास में समूहीकृत किया जाता है। TrainingArguments. इन सबके साथ, यह आपके मॉडल को प्रशिक्षित करने, किसी भी डेटासेट पर मीट्रिक परिणाम प्राप्त करने, या किसी डेटासेट पर पूर्वानुमान प्राप्त करने के लिए तीन तरीकों को उजागर करता है - प्रशिक्षण, मूल्यांकन और भविष्यवाणी। ट्रेनर ऑब्जेक्ट के बारे में अधिक जानने के लिए, देखें ट्रेनर एपीआई के साथ एक मॉडल को फाइन-ट्यूनिंग करना और वीडियो ट्रेनर एपीआई, जो आपको एक सरल उदाहरण से परिचित कराता है।

पर्दे के पीछे, ट्रेनर एपीआई उस वातावरण का विश्लेषण करके शुरू होती है जिसमें आप अपनी स्क्रिप्ट बनाते समय लॉन्च कर रहे हैं TrainingArguments. उदाहरण के लिए, यदि आपने सेजमेकर के साथ अपना प्रशिक्षण शुरू किया है, तो यह देखता है SM_FRAMEWORK_PARAMS यह पता लगाने के लिए कि क्या आपने सेजमेकर डेटा समानता या मॉडल समानता को सक्षम किया है, पर्यावरण में परिवर्तनशील। फिर यह आवश्यक आरंभीकरण चरण (जैसे) करने से पहले पर्यावरण से प्रासंगिक चर (जैसे प्रक्रिया की रैंक या विश्व आकार) प्राप्त करता है smdistributed.dataparallel.torch.distributed.init_process_group()).

ट्रेनर में संपूर्ण प्रशिक्षण लूप होता है, इसलिए यह सुनिश्चित करने के लिए आवश्यक चरणों को समायोजित कर सकता है smdistributed.dataparallel आपकी स्क्रिप्ट में कोड की एक पंक्ति बदले बिना आवश्यक होने पर बैकएंड का उपयोग किया जाता है। डिबगिंग के लिए यह अभी भी आपकी स्थानीय मशीन पर (यद्यपि बहुत धीमी गति से) चल सकता है। यह आपके डेटासेट को इस तरह से साझा करना संभालता है कि प्रत्येक प्रक्रिया स्वचालित रूप से अलग-अलग नमूने देखती है, प्रत्येक युग में फेरबदल के साथ, अनुकूलन चरण से पहले आपके ग्रेडिएंट को सिंक्रनाइज़ करना, यदि आपने इसे सक्रिय किया है तो मिश्रित परिशुद्धता प्रशिक्षण, यदि आप एक बड़े बैच आकार को फिट नहीं कर सकते हैं तो ग्रेडिएंट संचय आपके GPU, और कई अन्य अनुकूलन।

यदि आपने मॉडल समानता को सक्रिय किया है, तो यह सुनिश्चित करता है कि जिन प्रक्रियाओं को समान डेटा देखना है (यदि उनका dp_rank समान है) समान बैच प्राप्त करें, और वह अलग-अलग प्रक्रियाओं के साथ dp_rank प्रत्येक युग में फेरबदल के साथ, फिर से वही नमूने न देखें। यह सुनिश्चित करता है कि चेकपॉइंटिंग के दौरान मॉडल या ऑप्टिमाइज़र के राज्य शब्दकोश ठीक से सिंक्रनाइज़ हैं, और फिर से मिश्रित परिशुद्धता और ग्रेडिएंट संचय जैसे सभी अनुकूलन को संभालता है।

मूल्यांकन और पूर्वानुमान विधियों का उपयोग करते समय, ट्रेनर आपके सभी जीपीयू का लाभ उठाने के लिए एक वितरित मूल्यांकन करता है। यह प्रत्येक प्रक्रिया के लिए आपके डेटा को विभाजित करने को ठीक से संभालता है dp_rank यदि मॉडल समानता सक्रिय है) और यह सुनिश्चित करता है कि भविष्यवाणियां उसी क्रम में ठीक से एकत्र की गई हैं जिस क्रम में आप उपयोग कर रहे डेटासेट को भेजे जाने से पहले कर रहे हैं compute_metrics कार्य करता है या अभी लौटा है। ट्रेनर एपीआई का उपयोग करना अनिवार्य नहीं है। उपयोगकर्ता अभी भी हगिंग फेस के भीतर Keras या PyTorch का उपयोग कर सकते हैं। हालाँकि, ट्रेनर एपीआई एक सहायक अमूर्त परत प्रदान कर सकता है।

सेजमेकर हगिंग फेस एस्टिमेटर्स का उपयोग करके एक मॉडल को प्रशिक्षित करें

एस्टिमेटर सेजमेकर प्रशिक्षण के लिए एक उच्च-स्तरीय इंटरफ़ेस है और एंड-टू-एंड सेजमेकर प्रशिक्षण और तैनाती कार्यों को संभालता है। जब आप कॉल करते हैं तो आपकी स्क्रिप्ट का प्रशिक्षण शुरू हो जाता है fit एक पर HuggingFace अनुमानक. एस्टिमेटर में, आप परिभाषित करते हैं कि किस फाइन-ट्यूनिंग स्क्रिप्ट का उपयोग करना है entry_point, जो instance_type उपयोग करने के लिए, और कौन से हाइपरपैरामीटर पारित किए गए हैं। इसके बारे में अधिक जानकारी के लिए HuggingFace पैरामीटर, देखें आलिंगन चेहरा अनुमानक.

वितरित प्रशिक्षण: डेटा समानांतर

इस उदाहरण में, हम ट्रांसफॉर्मर और डेटासेट लाइब्रेरी का उपयोग करके प्रश्न और उत्तर कार्य पर एक वितरित Seq2Seq-ट्रांसफॉर्मर मॉडल को प्रशिक्षित करने के लिए नए हगिंग फेस डीएलसी और सेजमेकर एसडीके का उपयोग करते हैं। बर्ट-लार्ज-अनकेस्ड-संपूर्ण-शब्द-मास्किंग मॉडल को ठीक से ट्यून किया गया है दस्ता डाटासेट।

निम्नलिखित कोड नमूने आपको बनाने के चरण दिखाते हैं HuggingFace डेटा समानता के साथ वितरित प्रशिक्षण के लिए अनुमानक।

  1. हगिंग फेस ट्रांसफॉर्मर्स स्क्रिप्ट चुनें:
    # git configuration to download our fine-tuning script
    git_config = {'repo': 'https://github.com/huggingface/transformers.git','branch': 'v4.6.1'}

जब आप एक HuggingFace अनुमानक, आप एक प्रशिक्षण स्क्रिप्ट निर्दिष्ट कर सकते हैं जो अनुमानक के प्रवेश बिंदु के रूप में GitHub रिपॉजिटरी में संग्रहीत है, इसलिए आपको स्क्रिप्ट को स्थानीय रूप से डाउनलोड करने की आवश्यकता नहीं है। आप उपयोग कर सकते हैं git_config हगिंग फेस ट्रांसफॉर्मर्स उदाहरण स्क्रिप्ट और सही 'शाखा' चलाने के लिए यदि आपका transformers_version कॉन्फ़िगर करने की आवश्यकता है. उदाहरण के लिए, यदि आप उपयोग करते हैं transformers_version 4.6.1, आपको 'का उपयोग करना होगाbranch':'v4.6.1'.

  1. प्रशिक्षण हाइपरपैरामीटर को कॉन्फ़िगर करें जो प्रशिक्षण कार्य में पारित किए जाते हैं:
    # hyperparameters, which are passed into the training job
    hyperparameters={ 'model_name_or_path': 'bert-large-uncased-whole-word-masking', 'dataset_name':'squad', 'do_train': True, 'do_eval': True, 'fp16': True, 'per_device_train_batch_size': 4, 'per_device_eval_batch_size': 4, 'num_train_epochs': 2, 'max_seq_length': 384, 'max_steps': 100, 'pad_to_max_length': True, 'doc_stride': 128, 'output_dir': '/opt/ml/model'
    }

हाइपरपैरामीटर के रूप में, हम किसी को भी परिभाषित कर सकते हैं Seq2SeqTrainingArguments और जिन्हें प्रशिक्षण स्क्रिप्ट में परिभाषित किया गया है।

  1. में वितरण मापदंडों को परिभाषित करें HuggingFace अनुमानक:
    # configuration for running training on smdistributed Data Parallel
    distribution = {'smdistributed':{'dataparallel':{ 'enabled': True }}}

आप का उपयोग कर सकते हैं SageMaker डेटा समानता पुस्तकालय वितरित प्रशिक्षण के लिए बॉक्स से बाहर। हमने डेटा समानता की कार्यक्षमता को सीधे ट्रेनर में जोड़ा। डेटा समानता को सक्षम करने के लिए, आप बस अपने में एक पैरामीटर जोड़ सकते हैं HuggingFace अनुमानक आपके ट्रेनर-आधारित कोड को स्वचालित रूप से इसका उपयोग करने देता है।

  1. बनाओ HuggingFace पिछले चरणों में परिभाषित मापदंडों सहित अनुमानक और प्रशिक्षण शुरू करें:
from sagemaker.huggingface import HuggingFace
# estimator
huggingface_estimator = HuggingFace(entry_point='run_qa.py', source_dir='./examples/pytorch/question-answering', git_config=git_config, instance_type= 'ml.p3.16xlarge', instance_count= 2, volume_size= 200, role= <SageMaker Role>, # IAM role, transformers_version='4.6', pytorch_version='1.7', py_version='py36', distribution= distribution, hyperparameters = hyperparameters) # starting the train job huggingface_estimator.fit()

RSI हगिंग फेस ट्रांसफॉर्मर्स रिपॉजिटरी इसमें भाषा मॉडलिंग से लेकर टोकन वर्गीकरण तक के कार्यों पर मॉडल को ठीक करने के लिए कई उदाहरण और स्क्रिप्ट शामिल हैं। हमारे मामले में, हम उपयोग करते हैं run_qa.py से examples/pytorch/question-answering उदाहरण।

smdistributed.dataparallel सेजमेकर पर मॉडल प्रशिक्षण का समर्थन करता है केवल निम्नलिखित उदाहरण प्रकार. सर्वोत्तम प्रदर्शन के लिए, हम ऐसे इंस्टेंस प्रकार का उपयोग करने की सलाह देते हैं जो समर्थन करता हो लोचदार कपड़ा एडाप्टर (ईएफए):

  • एमएल.पी3.16xबड़ा
  • ml.p3dn.24xlarge (अनुशंसित)
  • ml.p4d.24xlarge (अनुशंसित)

सर्वोत्तम प्रदर्शन और अधिकतम लाभ प्राप्त करने के लिए SMDataParallel, आपको कम से कम दो उदाहरणों का उपयोग करना चाहिए, लेकिन आप इस उदाहरण के परीक्षण के लिए एक का भी उपयोग कर सकते हैं।

निम्नलिखित उदाहरण नोटबुक अधिक विस्तृत चरण-दर-चरण मार्गदर्शन प्रदान करता है।

वितरित प्रशिक्षण: मॉडल समानांतर

मॉडल समानता के साथ वितरित प्रशिक्षण के लिए, हम अनुक्रम वर्गीकरण के लिए सेजमेकर एसडीके के साथ हगिंग फेस ट्रांसफॉर्मर और डेटासेट लाइब्रेरी का उपयोग करते हैं। सामान्य भाषा का मूल्यांकन (GLUE) का उपयोग करके मल्टी-नोड, मल्टी-जीपीयू क्लस्टर पर बेंचमार्क सेजमेकर मॉडल समांतरता लाइब्रेरी.

डेटा समानता के साथ, हम पहले गिट कॉन्फ़िगरेशन, प्रशिक्षण हाइपरपैरामीटर और वितरण पैरामीटर सेट करते हैं HuggingFace अनुमानक:

# git configuration to download our fine-tuning script
git_config = {'repo': 'https://github.com/huggingface/transformers.git','branch': 'v4.6.1'} # hyperparameters, which are passed into the training job
hyperparameters={ 'model_name_or_path':'roberta-large', 'task_name': 'mnli', 'per_device_train_batch_size': 16, 'per_device_eval_batch_size': 16, 'do_train': True, 'do_eval': True, 'do_predict': True, 'num_train_epochs': 2, 'output_dir':'/opt/ml/model', 'max_steps': 500,
} # configuration for running training on smdistributed Model Parallel
mpi_options = { "enabled" : True, "processes_per_host" : 8,
}
smp_options = { "enabled":True, "parameters": { "microbatches": 4, "placement_strategy": "spread", "pipeline": "interleaved", "optimize": "speed", "partitions": 4, "ddp": True, }
} distribution={ "smdistributed": {"modelparallel": smp_options}, "mpi": mpi_options
}

मॉडल समानता लाइब्रेरी आंतरिक रूप से MPI का उपयोग करती है, इसलिए मॉडल समानता का उपयोग करने के लिए, वितरण पैरामीटर का उपयोग करके MPI को सक्षम किया जाना चाहिए। “processes_per_host” पूर्ववर्ती कोड में उन प्रक्रियाओं की संख्या निर्दिष्ट की गई है जिन्हें एमपीआई को प्रत्येक होस्ट पर लॉन्च करना चाहिए। हम इन्हें विकास और परीक्षण के लिए सुझाते हैं। उत्पादन के समय, व्यापक GPU क्षमता का अनुरोध करने पर आप AWS समर्थन से संपर्क कर सकते हैं। अधिक जानकारी के लिए देखें सेजमेकर वितरित मॉडल समानांतर प्रशिक्षण कार्य चलाएँ.

निम्नलिखित उदाहरण नोटबुक संपूर्ण कोड स्क्रिप्ट शामिल हैं।

स्पॉट इंस्टेंस

सेजमेकर पायथन एसडीके के लिए हगिंग फेस फ्रेमवर्क एक्सटेंशन के साथ, हम पूरी तरह से प्रबंधित का भी लाभ उठा सकते हैं अमेज़ॅन इलास्टिक कम्प्यूट क्लाउड (अमेजन EC2) स्पॉट इंस्टेंस और हमारी प्रशिक्षण लागत का 90% तक बचाएँ।

जब तक आपका प्रशिक्षण कार्य शीघ्र पूरा नहीं हो जाता, हम आपको इसका उपयोग करने की सलाह देते हैं चेकपॉइंटिंग प्रबंधित स्पॉट प्रशिक्षण के साथ, इसलिए आपको परिभाषित करने की आवश्यकता है checkpoint_s3_uri.

के साथ स्पॉट इंस्टेंस का उपयोग करने के लिए HuggingFace अनुमानक, हमें सेट करना होगा use_spot_instances पैरामीटर को True पर रखें और अपना परिभाषित करें max_wait और max_run समय। प्रबंधित स्पॉट प्रशिक्षण जीवनचक्र के बारे में अधिक जानकारी के लिए देखें अमेज़ॅन सेजमेकर में प्रबंधित स्पॉट ट्रेनिंग.

स्पॉट प्रशिक्षण अनुमानक स्थापित करने के लिए निम्नलिखित एक कोड स्निपेट है:

from sagemaker.huggingface import HuggingFace # hyperparameters, which are passed into the training job
hyperparameters={'epochs': 1, 'train_batch_size': 32, 'model_name':'distilbert-base-uncased', 'output_dir':'/opt/ml/checkpoints' } # s3 uri where our checkpoints will be uploaded during training
job_name = "using-spot"
checkpoint_s3_uri = f's3://{sess.default_bucket()}/{job_name}/checkpoints' huggingface_estimator = HuggingFace(entry_point='train.py', source_dir='./scripts', instance_type='ml.p3.2xlarge', instance_count=1, base_job_name=job_name, checkpoint_s3_uri=checkpoint_s3_uri, use_spot_instances=True, max_wait=3600, # This should be equal to or greater than max_run in seconds' max_run=1000, # expected max run in seconds role=role, transformers_version='4.6', pytorch_version='1.7', py_version='py36', hyperparameters = hyperparameters)

निम्नलिखित नोटबुक संपूर्ण कोड स्क्रिप्ट शामिल हैं।

निष्कर्ष

इस पोस्ट में, हमने सेजमेकर का उपयोग करके हगिंग फेस ट्रांसफॉर्मर्स के वितरित प्रशिक्षण पर चर्चा की। हमने सबसे पहले डेटा समानता बनाम मॉडल समानता के उपयोग के मामलों की समीक्षा की। डेटा समानता आमतौर पर अधिक उपयुक्त होती है, लेकिन जरूरी नहीं कि यह तब तक सीमित हो जब प्रशिक्षण गणना द्वारा बाधित हो, जबकि आप मॉडल समानता का उपयोग तब कर सकते हैं जब कोई मॉडल एकल त्वरक पर प्रदान की गई मेमोरी के भीतर फिट नहीं हो सकता है। फिर हमने दिखाया कि दोनों तरीकों से कैसे प्रशिक्षण लिया जाए।

हमने जिस डेटा समांतरता उपयोग मामले पर चर्चा की, उसमें एक एकल p3.2xबड़े उदाहरण (एकल GPU के साथ) पर एक मॉडल को प्रशिक्षित करने में 4 घंटे लगते हैं और इस लेखन के समय इसकी लागत लगभग $15 है। डेटा समानता के साथ, हम $24 की लागत पर 28 मिनट में एक ही मॉडल को प्रशिक्षित कर सकते हैं। हालाँकि लागत दोगुनी हो गई है, इससे प्रशिक्षण का समय 10 गुना कम हो गया है। ऐसी स्थिति के लिए जहां आपको कम समय के भीतर कई मॉडलों को प्रशिक्षित करने की आवश्यकता होती है, डेटा समानता अपेक्षाकृत कम लागत में वृद्धि को सक्षम कर सकती है। मॉडल समानता के उपयोग के मामले में, यह उन मॉडलों को प्रशिक्षित करने की क्षमता जोड़ता है जिन्हें हार्डवेयर सीमाओं के कारण पहले बिल्कुल भी प्रशिक्षित नहीं किया जा सका था। दोनों सुविधाएँ एमएल अभ्यासकर्ताओं के लिए नए वर्कफ़्लो को सक्षम बनाती हैं, और इसके माध्यम से आसानी से पहुंच योग्य हैं HuggingFace सेजमेकर पायथन एसडीके के एक भाग के रूप में अनुमानक। इन मॉडलों को होस्ट किए गए एंडपॉइंट पर तैनात करना अन्य अनुमानकों की तरह ही प्रक्रिया का पालन करता है।

यह एकीकरण अन्य सुविधाओं को सक्षम बनाता है जो सेजमेकर पारिस्थितिकी तंत्र का हिस्सा हैं। उदाहरण के लिए, आप अतिरिक्त लागत-अनुकूलन के लिए अनुमानक में एक साधारण ध्वज जोड़कर स्पॉट इंस्टेंस का उपयोग कर सकते हैं। अगले चरण के रूप में, आप इसे ढूंढ और चला सकते हैं प्रशिक्षण डेमो और उदाहरण नोटबुक.


लेखक के बारे में

आर्चिस जोगलेकर इमर्जिंग टेक्नोलॉजीज टीम में एक एआई/एमएल पार्टनर सॉल्यूशंस आर्किटेक्ट हैं। वह AWS में बिल्डिंग ब्लॉक्स का उपयोग करके परफॉर्मेंट, स्केलेबल डीप लर्निंग और वैज्ञानिक कंप्यूटिंग में रुचि रखते हैं। उनके पिछले अनुभव कम्प्यूटेशनल भौतिकी अनुसंधान से लेकर शिक्षा जगत, राष्ट्रीय प्रयोगशालाओं और स्टार्टअप में मशीन लर्निंग प्लेटफॉर्म विकास तक हैं। कंप्यूटर से दूर उनका समय फ़ुटबॉल खेलने और दोस्तों और परिवार के साथ व्यतीत होता है।

जेम्स यी अमेज़ॅन वेब सर्विसेज में इमर्जिंग टेक्नोलॉजीज टीम में एक सीनियर एआई/एमएल पार्टनर सॉल्यूशंस आर्किटेक्ट हैं। उन्हें अपने व्यावसायिक मूल्यों को प्राप्त करने के लिए एआई/एमएल अनुप्रयोगों को डिजाइन करने, तैनात करने और स्केल करने के लिए उद्यम ग्राहकों और भागीदारों के साथ काम करने का शौक है। काम के अलावा, उन्हें फुटबॉल खेलना, यात्रा करना और अपने परिवार के साथ समय बिताना अच्छा लगता है।

फ़िलिप श्मिट हगिंग फेस में मशीन लर्निंग इंजीनियर और टेक लीड हैं, जहां वह अमेज़ॅन सेजमेकर टीम के साथ सहयोग का नेतृत्व करते हैं। वह अत्याधुनिक एनएलपी मॉडल का लोकतंत्रीकरण, अनुकूलन और उत्पादन करने और डीप लर्निंग के लिए उपयोग में आसानी में सुधार के बारे में भावुक है।

सिल्वेन गुग्गर हगिंग फेस में एक रिसर्च इंजीनियर हैं और ट्रांसफॉर्मर्स लाइब्रेरी के मुख्य अनुरक्षकों में से एक हैं। उन्हें ओपन सोर्स सॉफ़्टवेयर पसंद है और वे समुदाय को इसका उपयोग करने में मदद करते हैं।

जेफ बौडियर अग्रणी ओपन-सोर्स एमएल लाइब्रेरी, ट्रांसफॉर्मर्स के निर्माता, हगिंग फेस में उत्पाद बनाता है। इससे पहले जेफ गोप्रो द्वारा अधिग्रहीत स्टुपफ्लिक्स के सह-संस्थापक थे, जहां उन्होंने उत्पाद प्रबंधन, उत्पाद विपणन, व्यवसाय विकास और कॉर्पोरेट विकास के निदेशक के रूप में कार्य किया था।

स्रोत: https://aws.amazon.com/blogs/machine-learning/distributed-fine-tuning-of-a-bert-large-model-for-a-question-answering-task-using-hugging-face- ट्रांसफार्मर-ऑन-अमेज़ॅन-सेजमेकर/

समय टिकट:

से अधिक एडब्ल्यूएस मशीन लर्निंग ब्लॉग