कैसे इम्पर्वा एमेजॉन सेजमेकर नोटबुक्स के माध्यम से एमएल विकास और सहयोग को तेज करता है

स्रोत नोड: 1133741

यह साइबर सुरक्षा के समाधान प्रदाता इम्पर्वा की एक अतिथि पोस्ट है। 

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

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

इस पोस्ट में, हम साझा करते हैं कि हमने एमएल विकास और सहयोग को कैसे तेज किया अमेज़न SageMaker नोटबुक

ज्यूपिटर नोटबुक: सामान्य अनुसंधान का आधार

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

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

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

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

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

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

हमने अपने एमएल विकास को कैसे तेज किया

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

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

इसके अलावा, जब हर कोई किसी रिमोट वर्चुअल मशीन का उपयोग कर रहा है या अमेज़ॅन इलास्टिक कम्प्यूट क्लाउड (अमेज़ॅन EC2) उदाहरण उनके ज्यूपिटर नोटबुक चलाने के लिए, उनकी परियोजनाओं में दस्तावेज़ीकरण की कमी होती है और गड़बड़ हो जाती है।

सेजमेकर नोटबुक

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

असीमित कंप्यूटिंग संसाधन होना बहुत अच्छा है, लेकिन ऐसा नहीं था कि हमने सेजमेकर नोटबुक का उपयोग शुरू करने का फैसला किया। हम उन उद्देश्यों को सारांशित कर सकते हैं जिन्हें हम तीन मुख्य बिंदुओं में प्राप्त करना चाहते थे:

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

आसान शोध

SageMaker नोटबुक्स क्लाउड में रहते हैं, जिससे यह लगभग कहीं से भी स्वाभाविक रूप से सुलभ हो जाता है। ज्यूपिटर नोटबुक शुरू करने में बस कुछ ही मिनट लगते हैं और पिछले रन के आपके सभी आउटपुट सहेजे जाते हैं, जिससे इसमें वापस कूदना बहुत आसान हो जाता है। हालाँकि, हमारी शोध आवश्यकताओं में कुछ अतिरिक्त पहलू शामिल थे जिन्हें समाधान की आवश्यकता थी:

  • त्वरित विचार - पिछले रन के परिणामों की समीक्षा करने के लिए हर समय नोटबुक उपलब्ध होना। यदि उदाहरण जहां आप अपना कोड रखते हैं, नीचे है, तो आपको इसे केवल आउटपुट देखने के लिए शुरू करना होगा। यह निराशाजनक हो सकता है, खासकर यदि आप एक महंगे उदाहरण का उपयोग कर रहे हैं और आप केवल अपने परिणाम देखना चाहते हैं। यह उस समय को कम कर देता है जब टीम के प्रत्येक सदस्य को उदाहरण के लिए 5-15 मिनट से शुरू होने की प्रतीक्षा में खर्च करना पड़ता है।
  • साझा विचार - क्रॉस-इंस्टेंस नोटबुक्स का पता लगाने की क्षमता होना। SageMaker नोटबुक उदाहरण डिफ़ॉल्ट रूप से समर्पित संग्रहण के साथ प्रदान किए जाते हैं। हम इस दीवार को तोड़ना चाहते थे और टीम को एक साथ काम करने में सक्षम बनाना चाहते थे।
  • लगातार पुस्तकालय – SageMaker नोटबुक उदाहरणों में लाइब्रेरी अस्थायी रूप से संग्रहीत की जाती हैं। हम इसे बदलना चाहते थे ताकि सभी आवश्यक पुस्तकालयों को पूरी तरह से स्थापित करने में लगने वाले समय को कम किया जा सके और इसे लगभग 100 मिनट से 5 तक 0% कम किया जा सके।
  • लागत प्रभावी सेवा - शोधकर्ताओं की भागीदारी को कम करते हुए लागत का अनुकूलन। डिफ़ॉल्ट रूप से, एक इंस्टेंस को चालू और बंद करना मैन्युअल रूप से किया जाता है। इससे मानवीय त्रुटि के कारण होने वाले अनावश्यक शुल्क लग सकते हैं।

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

साझा और त्वरित विचार

हमने इस फ़ाइल सिस्टम को अपने सभी नोटबुक इंस्टेंस से कनेक्ट किया है ताकि उन सभी के पास एक साझा फ़ाइल सिस्टम हो। इस तरह हम अपने कोड को Amazon EFS में सहेज सकते हैं, इसके बजाय नोटबुक इंस्टेंस की फाइल सिस्टम का उपयोग कर सकते हैं और इसे किसी भी नोटबुक इंस्टेंस से एक्सेस कर सकते हैं।

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

तो, आप वास्तव में एक फाइल सिस्टम को एक नोटबुक उदाहरण से कैसे जोड़ते हैं?

हमने एक जीवनचक्र कॉन्फ़िगरेशन बनाया है जो EFS को नोटबुक इंस्टेंस से जोड़ता है, और इस कॉन्फ़िगरेशन को प्रत्येक नोटबुक इंस्टेंस से अटैच किया है जिसे हम साझा वातावरण का हिस्सा बनाना चाहते हैं।

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

निम्न स्क्रिप्ट उपसर्ग मानक बॉयलरप्लेट है:

#!/bin/bash
set -e

अब हम नोटबुक को एक ईएफएस से जोड़ते हैं सुनिश्चित करें कि आप ईएफएस उदाहरण का नाम जानते हैं:

EFS_NAME=EFS_INSTANCE_NAME.efs.REGION.amazonaws.com
mkdir -p /home/ec2-user/SageMaker/efs
sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport $EFS_NAME:/ /home/ec2-user/SageMaker/efs
sudo chmod go+rw /home/ec2-user/SageMaker/efs

लगातार और लागत प्रभावी सेवा

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

# get instance tags location
NOTEBOOK_ARN=$(jq '.ResourceArn' /opt/ml/metadata/resource-metadata.json --raw-output) # extract idle time parameter value from tags list
IDLE_TIME=$(aws sagemaker list-tags --resource-arn $NOTEBOOK_ARN | jq '.Tags[] | select(.Key=="idle") | .Value') # in case idle time not specified set to one hour (3600 sec) [[ -z "$IDLE_TIME" ]] && IDLE_TIME=3600 # fetch the auto stop script from AWS samples repo
wget https://raw.githubusercontent.com/aws-samples/amazon-sagemaker-notebook-instance-lifecycle-config-samples/master/scripts/auto-stop-idle/autostop.py # starting the SageMaker autostop script in cron
(crontab -l 2>/dev/null; echo "*/5 * * * * /usr/bin/python $PWD/autostop.py --time $IDLE_TIME --ignore-connections") | crontab - sudo -u ec2-user -i <<'EOF'
unset SUDO_UID

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

यह स्क्रिप्ट हर बार नोटबुक इंस्टेंस शुरू होने पर चलती है, मिनिकोंडा और कुछ बुनियादी पायथन लाइब्रेरी को लगातार स्टोरेज में स्थापित करती है, और मिनिकोंडा को सक्रिय करती है:

# use an address within the notebook instance’s file system
WORKING_DIR=/home/ec2-user/SageMaker/custom-miniconda
# if this is the first time the lifecycle config is running - install miniconda
if [ ! -d "$WORKING_DIR" ]; then mkdir -p "$WORKING_DIR" # download miniconda wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O "$WORKING_DIR/miniconda.sh" # install miniconda bash "$WORKING_DIR/miniconda.sh" -b -u -p "$WORKING_DIR/miniconda" # delete miniconda installer rm -rf "$WORKING_DIR/miniconda.sh" # create a custom conda environment source "$WORKING_DIR/miniconda/bin/activate" KERNEL_NAME="custom_python" PYTHON="3.9" conda create --yes --name "$KERNEL_NAME" python="$PYTHON" conda activate "$KERNEL_NAME" pip install --quiet ipykernel conda install --yes numpy pip install --quiet boto3 pandas matplotlib sklearn dill EOF
fi
# activate miniconda
source "$WORKING_DIR/miniconda/bin/activate"
for env in $WORKING_DIR/miniconda/envs/*; do BASENAME=$(basename "$env") source activate "$BASENAME" python -m ipykernel install --user --name "$BASENAME" --display-name "Custom ($BASENAME)"
Done # disable SageMaker-provided Conda functionality, leaving in only what we've installed
echo "c.EnvironmentKernelSpecManager.use_conda_directly = False" >> /home/ec2-user/.jupyter/jupyter_notebook_config.py
rm /home/ec2-user/.condarc
EOF

त्वरित पुनरारंभ करें और हमारा काम हो गया!

# restart the Jupyter server
restart jupyter-server

डेटा और कोड संगठन

वह EFS याद रखें जिसके बारे में हमने अभी बात की थी? यह यहाँ और अधिक के लिए है।

हमारे सभी कोड को एक ही स्थान पर संग्रहीत करने के बाद, हमने सोचा कि इसे थोड़ा व्यवस्थित करना बेहतर हो सकता है।

हमने तय किया कि टीम के प्रत्येक सदस्य को अपना स्वयं का नोटबुक उदाहरण बनाना चाहिए जिसका वे केवल उपयोग करते हैं। हालाँकि, उदाहरण के फ़ाइल सिस्टम का उपयोग करने के बजाय, हम Amazon EFS का उपयोग करते हैं और निम्नलिखित पदानुक्रम को लागू करते हैं:

---टीम के सदस्य

------परियोजना

—————————कोड

-----------संसाधन

इस तरह हम सभी एक दूसरे के कोड को आसानी से एक्सेस कर सकते हैं, लेकिन हम अभी भी जानते हैं कि क्या किसका है।

लेकिन पूरी हो चुकी परियोजनाओं का क्या? हमने उन परियोजनाओं के लिए एक अतिरिक्त शाखा जोड़ने का फैसला किया है जो पूरी तरह से प्रलेखित और वितरित की गई हैं:

---टीम के सदस्य

------परियोजना

—————————कोड

-----------संसाधन

---पूर्ण प्रोजेक्ट

------परियोजना

—————————कोड

-----------संसाधन

तो अब जबकि हमारा कोड बड़े करीने से व्यवस्थित है, हम अपने डेटा तक कैसे पहुँच सकते हैं?

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

उसके शीर्ष पर, हमने उपयोग करके एक समर्पित नेटवर्क बनाया अमेज़ॅन वर्चुअल प्राइवेट क्लाउड (Amazon VPC), जिसने नोटबुक इंस्टेंस को हमारे आंतरिक Git रिपॉजिटरी और निजी PyPI रिपॉजिटरी तक पहुंच प्रदान की। इससे उपयोगी आंतरिक कोड और पैकेजों तक पहुंचना आसान हो गया। निम्नलिखित आरेख दिखाता है कि यह सब हमारे नोटबुक प्लेटफॉर्म में कैसा दिखता है।

प्रसव

अंत में, हम आसानी से प्रोजेक्ट डिलीवर करने के लिए इन नोटबुक्स का उपयोग कैसे करते हैं?

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

अगली कुछ पंक्तियों में, हम अपनी वितरण प्रक्रियाओं का वर्णन करते हैं जब हम एक विकास टीम को मॉडल सौंपते हैं, और जब हम स्वयं मॉडल को परिनियोजित करते हैं।

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

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

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

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

आगे क्या होगा

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

सीधे शब्दों में कहें तो, हमने एक ऐसी प्रक्रिया बनाई है जो एमएल विकास और सहयोग में तेजी लाती है जबकि SageMaker नोटबुक की लागत को कम से कम 25% कम करती है, और ओवरहेड समय को कम करती है जो शोधकर्ता इंस्टॉलेशन पर खर्च करते हैं और काम करने के लिए तैयार होने की प्रतीक्षा करते हैं।

हमारे वर्तमान सैजमेकर नोटबुक वातावरण में निम्नलिखित शामिल हैं:

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

हम कुछ अतिरिक्त सुविधाओं को जोड़कर इस वातावरण को और भी बेहतर बनाने की योजना बना रहे हैं:

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

अगले चरण के रूप में, हम आपको प्रयास करने के लिए प्रोत्साहित करते हैं सेजमेकर नोटबुक. अधिक उदाहरणों के लिए, देखें SageMaker ने GitHub रेपो का उदाहरण दिया.


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

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

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

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

स्रोत: https://aws.amazon.com/blogs/machine-learning/how-imperva-expedites-ml-development-and-collaboration-via-amazon-sagemaker-notebooks/

समय टिकट:

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