डेटा वर्जन कंट्रोल और अमेज़ॅन सेजमेकर एक्सपेरिमेंट्स प्लेटोब्लॉकचैन डेटा इंटेलिजेंस के साथ अपने एमएल प्रयोगों को शुरू से अंत तक ट्रैक करें। लंबवत खोज। ऐ.

अपने एमएल प्रयोगों को डेटा संस्करण नियंत्रण और अमेज़ॅन सेजमेकर प्रयोगों के साथ शुरू से अंत तक ट्रैक करें

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

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

SageMaker प्रयोग

सेजमेकर एक्सपेरिमेंट्स मशीन लर्निंग (एमएल) प्रयोगों पर नज़र रखने के लिए एक एडब्ल्यूएस सेवा है। सेजमेकर प्रयोग पायथन एसडीके इस सेवा का एक उच्च-स्तरीय इंटरफ़ेस है जो आपको पायथन का उपयोग करके प्रयोग जानकारी को ट्रैक करने में मदद करता है।

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

सेजमेकर प्रयोगों पर चर्चा करते समय, हम निम्नलिखित अवधारणाओं का उल्लेख करते हैं:

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

डेटा संस्करण नियंत्रण

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

डेटा विज्ञान प्रयोग साझाकरण और सहयोग एक नियमित गिट प्रवाह (कमिट, ब्रांचिंग, टैगिंग, पुल अनुरोध) के माध्यम से किया जा सकता है, वैसे ही यह सॉफ्टवेयर इंजीनियरों के लिए काम करता है। Git और DVC के साथ, डेटा साइंस और ML टीमें प्रयोगों को संस्करणित कर सकती हैं, बड़े डेटासेट का प्रबंधन कर सकती हैं और परियोजनाओं को पुन: उत्पन्न करने योग्य बना सकती हैं।

डीवीसी में निम्नलिखित विशेषताएं हैं:

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

सेजमेकर प्रयोग और डीवीसी नमूना

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

निम्नलिखित आरेख समाधान वास्तुकला और कार्यप्रवाह को दर्शाता है।

पहले से स्थापित डीवीसी के साथ एक कस्टम स्टूडियो छवि बनाएं

इस में गिटहब भंडार, हम स्टूडियो के लिए एक कस्टम छवि बनाने का तरीका बताते हैं जिसमें पहले से ही डीवीसी स्थापित है। एक छवि बनाने और इसे सभी स्टूडियो उपयोगकर्ताओं के लिए उपलब्ध कराने का लाभ यह है कि यह स्टूडियो उपयोगकर्ताओं के लिए एक सुसंगत वातावरण बनाता है, जिसे वे स्थानीय रूप से भी चला सकते हैं। हालांकि नमूना पर आधारित है AWS क्लाउड 9, जब तक आपके पास डॉकर स्थापित और चल रहा है, तब तक आप अपने स्थानीय मशीन पर कंटेनर भी बना सकते हैं। यह नमूना निम्नलिखित पर आधारित है Dockerfile और पर्यावरण.वाईएमएल. परिणामी डॉकर छवि को संग्रहीत किया जाता है अमेज़ॅन इलास्टिक कंटेनर रजिस्ट्री (अमेज़ॅन ईएमआर) आपके एडब्ल्यूएस खाते में। निम्नलिखित कोड देखें:

# Login to ECR
aws --region ${REGION} ecr get-login-password | docker login --username AWS --password-stdin ${ACCOUNT_ID}.dkr.ecr.${REGION}.amazonaws.com/smstudio-custom

# Create the ECR repository
aws --region ${REGION} ecr create-repository --repository-name smstudio-custom

# Build the image - it might take a few minutes to complete this step
docker build . -t ${IMAGE_NAME} -t ${ACCOUNT_ID}.dkr.ecr.${REGION}.amazonaws.com/smstudio-custom:${IMAGE_NAME}

# Push the image to ECR
docker push ${ACCOUNT_ID}.dkr.ecr.${REGION}.amazonaws.com/smstudio-custom:${IMAGE_NAME}

अब आप कर सकते हैं एक नया स्टूडियो डोमेन बनाएं or मौजूदा स्टूडियो डोमेन को अपडेट करें जिसकी नई बनाई गई डॉकर छवि तक पहुंच है।

हम का उपयोग करें AWS क्लाउड डेवलपमेंट किट (एडब्ल्यूएस सीडीके) के माध्यम से निम्नलिखित संसाधन बनाने के लिए एडब्ल्यूएस CloudFormation:

  • आपके नए या मौजूदा स्टूडियो डोमेन के लिए सही अनुमतियों के साथ एक सेजमेकर निष्पादन भूमिका
  • डॉकर छवि से एक सेजमेकर छवि और सेजमेकर छवि संस्करण conda-env-dvc-kernel जो हमने पहले बनाया था
  • An AppImageConfig यह निर्दिष्ट करता है कि कर्नेल गेटवे को कैसे कॉन्फ़िगर किया जाना चाहिए
  • एक स्टूडियो उपयोगकर्ता (data-scientist-dvc) सही सेजमेकर निष्पादन भूमिका और उसके लिए उपलब्ध कस्टम स्टूडियो छवि के साथ

विस्तृत निर्देशों के लिए देखें एक कस्टम छवि को सेजमेकर स्टूडियो से संबद्ध करें.

प्रयोगशाला चलाएं

प्रयोगशाला चलाने के लिए, निम्नलिखित चरणों को पूरा करें:

  1. स्टूडियो डोमेन में, इसके लिए स्टूडियो लॉन्च करें data-scientist-dvc उपयोगकर्ता.
  2. गिट आइकन चुनें, फिर चुनें एक रिपॉजिटरी क्लोन करें.
    एक रिपॉजिटरी क्लोन करें
  3. भंडार का URL दर्ज करें (https://github.com/aws-samples/amazon-sagemaker-experiments-dvc-demo) और चुनें क्लोन.रेपो बटन क्लोन करें
  4. फ़ाइल ब्राउज़र में, चुनें amazon-sagemaker-experiments-dvc-demo भंडार।
  5. ओपन dvc_sagemaker_script_mode.ipynb स्मरण पुस्तक।
  6. के लिए कस्टम छवि, छवि कोंडा-एनवी-डीवीसी-कर्नेल चुनें।
  7. चुनें चुनते हैं.
    कोंडा-एनवी-डीवीसी-कर्नेल

डेटा संस्करण के लिए डीवीसी को कॉन्फ़िगर करें

हम एक उपनिर्देशिका बनाते हैं जहां हम डेटा तैयार करते हैं: सेजमेकर-डीवीसी-नमूना। इस उपनिर्देशिका के भीतर, हम एक नए Git रिपॉजिटरी को इनिशियलाइज़ करते हैं और रिमोट को हमारे द्वारा बनाए गए रिपॉजिटरी में सेट करते हैं AWS कोडकॉमिट. लक्ष्य इस रिपॉजिटरी में संस्करणित डेटा ट्रैकिंग के लिए डीवीसी कॉन्फ़िगरेशन और फाइलें रखना है। हालाँकि, Git सबप्रोजेक्ट्स को प्रबंधित करने के लिए मूल क्षमताएँ प्रदान करता है, उदाहरण के लिए, git सबमॉड्यूल्स और git सबट्रीज़, और आप उपरोक्त किसी भी टूल का उपयोग करने के लिए इस नमूने का विस्तार कर सकते हैं जो आपके वर्कफ़्लो के लिए सबसे उपयुक्त है।

हमारे मामले में सेजमेकर के साथ कोडकॉमिट का उपयोग करने का मुख्य लाभ इसके साथ एकीकरण है AWS पहचान और अभिगम प्रबंधन (IAM) प्रमाणीकरण और प्राधिकरण के लिए, जिसका अर्थ है कि हम क्रेडेंशियल (या SSH कुंजी) लाने की आवश्यकता के बिना डेटा को पुश और पुल करने के लिए IAM भूमिकाओं का उपयोग कर सकते हैं। सेजमेकर निष्पादन भूमिका पर उपयुक्त अनुमतियाँ सेट करने से स्टूडियो नोटबुक और सेजमेकर प्रशिक्षण और प्रसंस्करण कार्य को कोडकॉमिट के साथ सुरक्षित रूप से बातचीत करने की अनुमति मिलती है।

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

इनिट डीवीसी

डीवीसी और सेजमेकर के साथ प्रक्रिया और प्रशिक्षण

इस खंड में, हम अपनी समस्या से निपटने के लिए दो अलग-अलग दृष्टिकोणों का पता लगाते हैं और हम आपको पहले दिखाए गए उच्च-स्तरीय वैचारिक वास्तुकला के अनुसार सेजमेकर प्रयोगों का उपयोग करके दो परीक्षणों का ट्रैक कैसे रख सकते हैं।

सेजमेकर प्रयोग सेट करें

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

हम नाम का एक प्रयोग बनाते हैं DEMO-sagemaker-experiments-dvc दो परीक्षणों के साथ, dvc-trial-single-file और dvc-trial-multi-files, प्रत्येक डेटासेट के भिन्न संस्करण का प्रतिनिधित्व करता है।

आइए बनाते हैं DEMO-sagemaker-experiments-dvc प्रयोग:

from smexperiments.experiment import Experiment
from smexperiments.trial import Trial
from smexperiments.trial_component import TrialComponent
from smexperiments.tracker import Tracker

experiment_name = 'DEMO-sagemaker-experiments-dvc'

# create the experiment if it doesn't exist
try:
    my_experiment = Experiment.load(experiment_name=experiment_name)
    print("existing experiment loaded")
except Exception as ex:
    if "ResourceNotFound" in str(ex):
        my_experiment = Experiment.create(
            experiment_name = experiment_name,
            description = "How to integrate DVC"
        )
        print("new experiment created")
    else:
        print(f"Unexpected {ex}=, {type(ex)}")
        print("Dont go forward!")
        raise

परीक्षण 1: प्रशिक्षण और सत्यापन के लिए एकल फ़ाइलें उत्पन्न करें

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

सबसे पहले, हम बनाते हैं dvc-trial-single-file परीक्षण करें और इसे जोड़ें DEMO-sagemaker-experiments-dvc प्रयोग। ऐसा करके हम इस परीक्षण से संबंधित सभी परीक्षण घटकों को सार्थक तरीके से व्यवस्थित रखते हैं।

first_trial_name = "dvc-trial-single-file"

try:
    my_first_trial = Trial.load(trial_name=first_trial_name)
    print("existing trial loaded")
except Exception as ex:
    if "ResourceNotFound" in str(ex):
        my_first_trial = Trial.create(
            experiment_name=experiment_name,
            trial_name=first_trial_name,
        )
        print("new trial created")
    else:
        print(f"Unexpected {ex}=, {type(ex)}")
        print("Dont go forward!")
        raise

एकल फ़ाइल संस्करण बनाने के लिए SageMaker प्रसंस्करण कार्य में DVC का उपयोग करें

इस खंड में, हम एक प्रोसेसिंग स्क्रिप्ट बनाते हैं जो सेजमेकर की प्रबंधित डेटा लोडिंग क्षमता का उपयोग करके इनपुट के रूप में सीधे अमेज़ॅन एस 3 से कच्चा डेटा प्राप्त करती है; ट्रेन, सत्यापन और परीक्षण डेटासेट बनाने के लिए इसे संसाधित करता है; और DVC का उपयोग करके परिणामों को वापस Amazon S3 में संग्रहीत करता है। यह समझना बहुत महत्वपूर्ण है कि Amazon S3 में डेटा स्टोर करने के लिए DVC का उपयोग करते समय (या Amazon S3 से डेटा खींचना), हम SageMaker प्रबंधित डेटा लोडिंग क्षमताओं को खो रहे हैं, जो संभावित रूप से हमारे प्रसंस्करण और प्रशिक्षण नौकरियों के प्रदर्शन और लागत पर प्रभाव डाल सकता है। , खासकर जब बहुत बड़े डेटासेट के साथ काम कर रहे हों। विभिन्न सेजमेकर देशी इनपुट मोड क्षमताओं के बारे में अधिक जानकारी के लिए, देखें एक्सेस ट्रेनिंग डेटा.

अंत में, हम सेजमेकर प्रयोगों के माध्यम से प्रसंस्करण कार्य चलाते समय सेजमेकर ट्रैकिंग क्षमताओं के साथ डीवीसी ट्रैकिंग क्षमताओं को एकीकृत करते हैं।

प्रसंस्करण स्क्रिप्ट Git रिपॉजिटरी के पते और उस शाखा की अपेक्षा करती है जिसे हम पर्यावरण चर के माध्यम से पारित DVC मेटाडेटा को संग्रहीत करने के लिए बनाना चाहते हैं। डेटासेट स्वयं DVC द्वारा Amazon S3 में संग्रहीत किए जाते हैं। हालांकि पर्यावरण चर स्वचालित रूप से सेजमेकर प्रयोगों में ट्रैक किए जाते हैं और परीक्षण घटक मापदंडों में दिखाई देते हैं, हम परीक्षण घटकों को अधिक जानकारी के साथ समृद्ध करना चाहते हैं, जो तब ट्रैकर ऑब्जेक्ट का उपयोग करके स्टूडियो यूआई में विज़ुअलाइज़ेशन के लिए उपलब्ध हो जाते हैं। हमारे मामले में, परीक्षण घटकों के मापदंडों में निम्नलिखित शामिल हैं:

  • DVC_REPO_URL
  • DVC_BRANCH
  • USER
  • data_commit_hash
  • train_test_split_ratio

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

पूर्ण प्रीप्रोसेसिंग पायथन लिपि में उपलब्ध है गीथहब रेपो.

with Tracker.load() as tracker:
    tracker.log_parameters({"data_commit_hash": commit_hash})
    for file_type in file_types:
        path = dvc.api.get_url(
            f"{data_path}/{file_type}/california_{file_type}.csv",
            repo=dvc_repo_url,
            rev=dvc_branch
        )
        tracker.log_output(name=f"california_{file_type}",value=path)

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

सेजमेकर प्रसंस्करण कार्य को चलाने के लिए अब हमारे पास सभी सामग्रियां हैं:

  • एक प्रोसेसिंग स्क्रिप्ट जो कई तर्कों को संसाधित कर सकती है (--train-test-split-ratio) और दो पर्यावरण चर (DVC_REPO_URL और DVC_BRANCH)
  • A requiremets.txt पट्टिका
  • एक गिट भंडार (कोडकॉमिट में)
  • एक सेजमेकर प्रयोग और परीक्षण
from sagemaker.processing import FrameworkProcessor, ProcessingInput
from sagemaker.sklearn.estimator import SKLearn

dvc_repo_url = "codecommit::{}://sagemaker-dvc-sample".format(region)
dvc_branch = my_first_trial.trial_name

script_processor = FrameworkProcessor(
    estimator_cls=SKLearn,
    framework_version='0.23-1',
    instance_count=1,
    instance_type='ml.m5.xlarge',
    env={
        "DVC_REPO_URL": dvc_repo_url,
        "DVC_BRANCH": dvc_branch,
        "USER": "sagemaker"
    },
    role=role
)

experiment_config={
    "ExperimentName": my_experiment.experiment_name,
    "TrialName": my_first_trial.trial_name
}

फिर हम इसके साथ प्रोसेसिंग जॉब चलाते हैं preprocessing-experiment.py स्क्रिप्ट, experiment_config, dvc_repo_url, तथा dvc_branch हमने पहले परिभाषित किया था।

%%time

script_processor.run(
    code='./source_dir/preprocessing-experiment.py',
    dependencies=['./source_dir/requirements.txt'],
    inputs=[ProcessingInput(source=s3_data_path, destination="/opt/ml/processing/input")],
    experiment_config=experiment_config,
    arguments=["--train-test-split-ratio", "0.2"]
)

प्रसंस्करण कार्य को पूरा होने में लगभग 5 मिनट लगते हैं। अब आप एकल फ़ाइल डेटासेट के लिए परीक्षण विवरण देख सकते हैं।

निम्न स्क्रीनशॉट दिखाता है कि आप स्टूडियो के भीतर संग्रहीत जानकारी कहां पा सकते हैं। के लिए मान नोट करें dvc-trial-single-file in DVC_BRANCH, DVC_REPO_URL, तथा data_commit_hash पर पैरामीटर्स टैब.

सेजमेकर प्रयोग पैरामीटर टैब

पर इनपुट और आउटपुट विवरण भी नोट करें कलाकृतियों टैब.

सेजमेकर प्रयोग आर्टिफैक्ट टैब

एक अनुमानक बनाएं और मॉडल को एकल फ़ाइल डेटा संस्करण के साथ फिट करें

सेजमेकर प्रशिक्षण कार्य के अंदर डीवीसी एकीकरण का उपयोग करने के लिए, हम एक पास करते हैं dvc_repo_url और dvc_branch जब आप एस्टीमेटर ऑब्जेक्ट बनाते हैं तो पर्यावरण चर के रूप में।

हम पर प्रशिक्षण देते हैं dvc-trial-single-file पहले शाखा।

डीवीसी के साथ डेटा खींचते समय, हम निम्नलिखित डेटासेट संरचना का उपयोग करते हैं:

dataset
    |-- train
    |   |-- california_train.csv
    |-- test
    |   |-- california_test.csv
    |-- validation
    |   |-- california_validation.csv

अब हम का उपयोग करके एक स्किकिट-लर्न एस्टिमेटर बनाते हैं सेजमेकर पायथन एसडीके. यह हमें निम्नलिखित निर्दिष्ट करने की अनुमति देता है:

  • पायथन स्रोत फ़ाइल का पथ, जिसे प्रशिक्षण के प्रवेश बिंदु के रूप में चलाया जाना चाहिए।
  • IAM भूमिका जो Amazon S3 और CodeCommit डेटा तक पहुँचने और SageMaker कार्यों को चलाने के लिए अनुमतियों को नियंत्रित करती है।
  • शब्दकोशों की एक सूची जो प्रशिक्षण कार्यों का मूल्यांकन करने के लिए उपयोग की जाने वाली मीट्रिक को परिभाषित करती है।
  • प्रशिक्षण उदाहरणों की संख्या और प्रकार। हम एक ml.m5.बड़े उदाहरण का उपयोग करते हैं।
  • हाइपरपैरामीटर जो प्रशिक्षण के लिए उपयोग किए जाते हैं।
  • प्रशिक्षण कार्य के दौरान उपयोग करने के लिए पर्यावरण चर। हम उपयोग करते हैं DVC_REPO_URL, DVC_BRANCH, तथा USER.
metric_definitions = [{'Name': 'median-AE', 'Regex': "AE-at-50th-percentile: ([0-9.]+).*$"}]

hyperparameters={ 
        "learning_rate" : 1,
        "depth": 6
    }
estimator = SKLearn(
    entry_point='train.py',
    source_dir='source_dir',
    role=role,
    metric_definitions=metric_definitions,
    hyperparameters=hyperparameters,
    instance_count=1,
    instance_type='ml.m5.large',
    framework_version='0.23-1',
    base_job_name='training-with-dvc-data',
    environment={
        "DVC_REPO_URL": dvc_repo_url,
        "DVC_BRANCH": dvc_branch,
        "USER": "sagemaker"
    }
)

experiment_config={
    "ExperimentName": my_experiment.experiment_name,
    "TrialName": my_first_trial.trial_name
}

हम प्रशिक्षण शुरू करने के लिए पहले परिभाषित प्रयोग_कॉन्फिग के साथ एस्टिमेटर की फिट विधि को कॉल करते हैं।

%%time
estimator.fit(experiment_config=experiment_config)

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

Running dvc pull command
A       train/california_train.csv
A       test/california_test.csv
A       validation/california_validation.csv
3 files added and 3 files fetched
Starting the training.
Found train files: ['/opt/ml/input/data/dataset/train/california_train.csv']
Found validation files: ['/opt/ml/input/data/dataset/train/california_train.csv']

टेस्ट 2: प्रशिक्षण और सत्यापन के लिए कई फाइलें बनाएं

हम एक नया बनाते हैं dvc-trial-multi-files परीक्षण करें और इसे वर्तमान में जोड़ें DEMO-sagemaker-experiments-dvc प्रयोग।

second_trial_name = "dvc-trial-multi-files"
try:
    my_second_trial = Trial.load(trial_name=second_trial_name)
    print("existing trial loaded")
except Exception as ex:
    if "ResourceNotFound" in str(ex):
        my_second_trial = Trial.create(
            experiment_name=experiment_name,
            trial_name=second_trial_name,
        )
        print("new trial created")
    else:
        print(f"Unexpected {ex}=, {type(ex)}")
        print("Dont go forward!")
        raise

पहली प्रोसेसिंग स्क्रिप्ट से अलग, अब हम प्रशिक्षण और सत्यापन के लिए मूल डेटासेट से कई फाइलें बनाते हैं और डीवीसी मेटाडेटा को एक अलग शाखा में संग्रहीत करते हैं।

आप दूसरी प्रीप्रोसेसिंग पायथन लिपि का पता लगा सकते हैं GitHub.

%%time

script_processor.run(
    code='./source_dir/preprocessing-experiment-multifiles.py',
    dependencies=['./source_dir/requirements.txt'],
    inputs=[ProcessingInput(source=s3_data_path, destination="/opt/ml/processing/input")],
    experiment_config=experiment_config,
    arguments=["--train-test-split-ratio", "0.1"]
)

प्रसंस्करण कार्य को पूरा होने में लगभग 5 मिनट लगते हैं। अब आप बहु-फ़ाइल डेटासेट के लिए परीक्षण विवरण देख सकते हैं।

निम्नलिखित स्क्रीनशॉट दिखाते हैं कि आप सेजमेकर प्रयोगों के भीतर संग्रहीत जानकारी को कहां पा सकते हैं परीक्षण घटक स्टूडियो यूआई के भीतर अनुभाग। के लिए मान नोट करें dvc-trial-multi-files in DVC_BRANCH, DVC_REPO_URL, तथा data_commit_hash पर पैरामीटर्स टैब.

सेजमेकर बहु ​​फाइल प्रयोग पैरामीटर टैब

आप इनपुट और आउटपुट विवरण की समीक्षा भी कर सकते हैं कलाकृतियों टैब.

सेजमेकर मल्टी फाइल एक्सपेरिमेंट्स आर्टिफैक्ट्स टैब

अब हम पर प्रशिक्षण लेते हैं dvc-trial-multi-files शाखा। डीवीसी के साथ डेटा खींचते समय, हम निम्नलिखित डेटासेट संरचना का उपयोग करते हैं:

dataset
    |-- train
    |   |-- california_train_1.csv
    |   |-- california_train_2.csv
    |   |-- california_train_3.csv
    |   |-- california_train_4.csv
    |   |-- california_train_5.csv
    |-- test
    |   |-- california_test.csv
    |-- validation
    |   |-- california_validation_1.csv
    |   |-- california_validation_2.csv
    |   |-- california_validation_3.csv

जैसा कि हमने पहले किया था, हम परीक्षण नाम के साथ एक नया स्किकिट-लर्न एस्टिमेटर बनाते हैं dvc-trial-multi-files और प्रशिक्षण कार्य शुरू करें।

%%time

estimator.fit(experiment_config=experiment_config)

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

Running dvc pull command
A       validation/california_validation_2.csv
A       validation/california_validation_1.csv
A       validation/california_validation_3.csv
A       train/california_train_4.csv
A       train/california_train_5.csv
A       train/california_train_2.csv
A       train/california_train_3.csv
A       train/california_train_1.csv
A       test/california_test.csv
9 files added and 9 files fetched
Starting the training.
Found train files: ['/opt/ml/input/data/dataset/train/california_train_2.csv', '/opt/ml/input/data/dataset/train/california_train_5.csv', '/opt/ml/input/data/dataset/train/california_train_4.csv', '/opt/ml/input/data/dataset/train/california_train_1.csv', '/opt/ml/input/data/dataset/train/california_train_3.csv']
Found validation files: ['/opt/ml/input/data/dataset/validation/california_validation_2.csv', '/opt/ml/input/data/dataset/validation/california_validation_1.csv', '/opt/ml/input/data/dataset/validation/california_validation_3.csv']

अपने मॉडल को सेजमेकर में होस्ट करें

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

from sagemaker.serializers import CSVSerializer

predictor = estimator.deploy(1, "ml.t2.medium", serializer=CSVSerializer())

सबसे पहले, हम स्टूडियो में विकास नोटबुक पर स्थानीय रूप से नवीनतम परीक्षण डेटासेट प्राप्त करते हैं। इस उद्देश्य के लिए, हम उपयोग कर सकते हैं dvc.api.read() सेजमेकर प्रोसेसिंग जॉब द्वारा अमेज़ॅन एस 3 में संग्रहीत कच्चे डेटा को लोड करने के लिए।

import io
import dvc.api

raw = dvc.api.read(
    "dataset/test/california_test.csv",
    repo=dvc_repo_url,
    rev=dvc_branch
)

फिर हम पंडों का उपयोग करके डेटा तैयार करते हैं, एक परीक्षण CSV फ़ाइल लोड करते हैं, और कॉल करते हैं predictor.predict डेटा के साथ पहले बनाए गए सेजमेकर एंडपॉइंट को लागू करने और भविष्यवाणियां प्राप्त करने के लिए।

test = pd.read_csv(io.StringIO(raw), sep=",", header=None)
X_test = test.iloc[:, 1:].values
y_test = test.iloc[:, 0:1].values

predicted = predictor.predict(X_test)
for i in range(len(predicted)-1):
    print(f"predicted: {predicted[i]}, actual: {y_test[i][0]}")

समापन बिंदु हटाएं

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

predictor.delete_endpoint()

क्लीन अप

आपके द्वारा बनाए गए सभी संसाधनों को हटाने से पहले, सुनिश्चित करें कि सभी ऐप्स हटा दिए गए हैं data-scientist-dvc उपयोगकर्ता, सभी KernelGateway ऐप्स के साथ-साथ डिफ़ॉल्ट JupiterServer ऐप सहित।

फिर आप निम्न आदेश चलाकर एडब्ल्यूएस सीडीके स्टैक को नष्ट कर सकते हैं:

cdk destroy

यदि आपने किसी मौजूदा डोमेन का उपयोग किया है, तो निम्न आदेश भी चलाएँ:

# inject your DOMAIN_ID into the configuration file
sed -i 's/<your-sagemaker-studio-domain-id>/'"$DOMAIN_ID"'/' ../update-domain-no-custom-images.json
# update the sagemaker studio domain
aws --region ${REGION} sagemaker update-domain --cli-input-json file://../update-domain-no-custom-images.json

निष्कर्ष

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

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

आगे पढ़ने के लिए, निम्नलिखित संसाधनों को देखें:


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

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

ईटन सेलाईटन सेला Amazon Web Services के साथ मशीन लर्निंग स्पेशलिस्ट सॉल्यूशंस आर्किटेक्ट हैं। वह AWS ग्राहकों के साथ मार्गदर्शन और तकनीकी सहायता प्रदान करने के लिए काम करता है, जिससे उन्हें AWS पर मशीन लर्निंग सॉल्यूशंस बनाने और संचालित करने में मदद मिलती है। अपने खाली समय में, ईटन को जॉगिंग और नवीनतम मशीन लर्निंग लेख पढ़ने का आनंद मिलता है।

समय टिकट:

से अधिक AWS मशीन लर्निंग

अमेज़ॅन सेजमेकर स्टूडियो और अमेज़ॅन सेजमेकर ऑटोपायलट का उपयोग करके उपग्रह छवि सुविधाओं का उपयोग करके मैंग्रोव वनों की पहचान करें - भाग 1

स्रोत नोड: 1497650
समय टिकट: जून 21, 2022