जैसे-जैसे ग्राहक क्लाउड पर अपने प्रवासन में तेजी लाते हैं और अपने व्यवसाय को बदलते हैं, कुछ लोग खुद को ऐसी स्थितियों में पाते हैं जहां उन्हें मल्टीक्लाउड वातावरण में आईटी संचालन का प्रबंधन करना पड़ता है। उदाहरण के लिए, हो सकता है कि आपने किसी ऐसी कंपनी का अधिग्रहण कर लिया हो जो पहले से ही किसी भिन्न क्लाउड प्रदाता पर चल रही हो, या आपके पास कार्यभार हो सकता है जो AWS द्वारा प्रदान की गई अद्वितीय क्षमताओं से मूल्य उत्पन्न करता हो। एक अन्य उदाहरण स्वतंत्र सॉफ्टवेयर विक्रेता (आईएसवी) हैं जो अपने अंतिम ग्राहकों को लाभ पहुंचाने के लिए अपने उत्पादों और सेवाओं को विभिन्न क्लाउड प्लेटफार्मों पर उपलब्ध कराते हैं। या कोई संगठन ऐसे क्षेत्र में काम कर रहा हो सकता है जहां प्राथमिक क्लाउड प्रदाता उपलब्ध नहीं है, और डेटा संप्रभुता या डेटा रेजिडेंसी आवश्यकताओं को पूरा करने के लिए, वे द्वितीयक क्लाउड प्रदाता का उपयोग कर सकते हैं।
इन परिदृश्यों में, जैसे ही आप जेनेरिक एआई, बड़े भाषा मॉडल (एलएलएम) और मशीन लर्निंग (एमएल) प्रौद्योगिकियों को अपने व्यवसाय के मुख्य भाग के रूप में अपनाना शुरू करते हैं, आप इसका लाभ उठाने के लिए विकल्पों की तलाश कर सकते हैं। एडब्ल्यूएस एआई और एमएल मल्टीक्लाउड वातावरण में AWS के बाहर की क्षमताएँ। उदाहरण के लिए, आप इसका उपयोग करना चाह सकते हैं अमेज़न SageMaker एमएल मॉडल बनाने और प्रशिक्षित करने या उपयोग करने के लिए अमेज़न सैजमेकर जम्पस्टार्ट पूर्व-निर्मित फाउंडेशन या तृतीय पक्ष एमएल मॉडल को तैनात करने के लिए, जिसे आप कुछ बटन के क्लिक पर तैनात कर सकते हैं। या फिर आप इसका फायदा उठाना चाह सकते हैं अमेज़ॅन बेडरॉक जेनेरिक एआई अनुप्रयोगों को बनाने और स्केल करने के लिए, या आप लाभ उठा सकते हैं AWS की पूर्व-प्रशिक्षित AI सेवाएँ, जिसके लिए आपको मशीन लर्निंग कौशल सीखने की आवश्यकता नहीं है। AWS उन परिदृश्यों के लिए सहायता प्रदान करता है जहाँ संगठन चाहते हैं Amazon SageMaker पर अपना स्वयं का मॉडल लाएँ or भविष्यवाणियों के लिए अमेज़ॅन सेजमेकर कैनवास में.
इस पोस्ट में, हम मल्टीक्लाउड वातावरण में AWS की AI/ML क्षमताओं के सबसे व्यापक और गहरे सेट का लाभ उठाने के लिए कई विकल्पों में से एक का प्रदर्शन करते हैं। हम दिखाते हैं कि आप एडब्ल्यूएस में एमएल मॉडल कैसे बना और प्रशिक्षित कर सकते हैं और मॉडल को दूसरे प्लेटफॉर्म पर तैनात कर सकते हैं। हम Amazon SageMaker का उपयोग करके मॉडल को प्रशिक्षित करते हैं, मॉडल कलाकृतियों को संग्रहीत करते हैं अमेज़न सरल भंडारण सेवा (अमेज़ॅन S3), और मॉडल को Azure में तैनात और चलाएँ। यह दृष्टिकोण फायदेमंद है यदि आप एमएल के लिए सुविधाओं के सबसे व्यापक सेट के लिए एडब्ल्यूएस सेवाओं का उपयोग करते हैं, फिर भी हमने जिन स्थितियों पर चर्चा की है उनमें से एक में आपको अपने मॉडल को किसी अन्य क्लाउड प्रदाता में चलाने की आवश्यकता है।
मुख्य अवधारणाएं
अमेज़ॅन सैजमेकर स्टूडियो मशीन लर्निंग के लिए एक वेब-आधारित, एकीकृत विकास वातावरण (आईडीई) है। सेजमेकर स्टूडियो डेटा वैज्ञानिकों, एमएल इंजीनियरों और डेटा इंजीनियरों को एक वेब इंटरफेस पर डेटा तैयार करने, निर्माण, प्रशिक्षण और एमएल मॉडल तैनात करने की अनुमति देता है। सेजमेकर स्टूडियो के साथ, आप एमएल विकास जीवनचक्र के हर चरण के लिए उद्देश्य-निर्मित टूल तक पहुंच सकते हैं, डेटा तैयार करने से लेकर निर्माण, प्रशिक्षण और अपने एमएल मॉडल को तैनात करने तक, डेटा विज्ञान टीम की उत्पादकता में दस गुना तक सुधार कर सकते हैं। सेजमेकर स्टूडियो नोटबुक त्वरित शुरुआत, सहयोगी नोटबुक हैं जो सेजमेकर और अन्य एडब्ल्यूएस सेवाओं में उद्देश्य-निर्मित एमएल टूल के साथ एकीकृत होते हैं।
सेजमेकर एक व्यापक एमएल सेवा है जो व्यापार विश्लेषकों, डेटा वैज्ञानिकों और एमएलओपीएस इंजीनियरों को एमएल विशेषज्ञता की परवाह किए बिना किसी भी उपयोग के मामले के लिए एमएल मॉडल बनाने, प्रशिक्षित करने और तैनात करने में सक्षम बनाती है।
एडब्ल्यूएस प्रदान करता है डीप लर्निंग कंटेनर्स (DLCs) PyTorch, TensorFlow और Apache MXNet जैसे लोकप्रिय ML फ्रेमवर्क के लिए, जिनका उपयोग आप प्रशिक्षण और अनुमान के लिए SageMaker के साथ कर सकते हैं। डीएलसी डॉकर छवियों के रूप में उपलब्ध हैं अमेज़ॅन इलास्टिक कंटेनर रजिस्ट्री (अमेज़ॅन ईसीआर)। डॉकर छवियों को लोकप्रिय गहन शिक्षण ढांचे के नवीनतम संस्करणों के साथ-साथ प्रशिक्षण और अनुमान के लिए आवश्यक अन्य निर्भरताओं के साथ पूर्वस्थापित और परीक्षण किया जाता है। सेजमेकर द्वारा प्रबंधित पूर्व-निर्मित डॉकर छवियों की पूरी सूची के लिए, देखें डॉकर रजिस्ट्री पथ और उदाहरण कोड. अमेज़ॅन ईसीआर सुरक्षा स्कैनिंग का समर्थन करता है, और इसके साथ एकीकृत है अमेज़न इंस्पेक्टर आपके संगठन की छवि अनुपालन सुरक्षा आवश्यकताओं को पूरा करने और भेद्यता मूल्यांकन स्कैनिंग को स्वचालित करने के लिए भेद्यता प्रबंधन सेवा। संगठन भी उपयोग कर सकते हैं एडब्ल्यूएस ट्रेनियम और एडब्ल्यूएस इन्फेंटेंटिया एमएल प्रशिक्षण कार्य या अनुमान चलाने के लिए बेहतर मूल्य-प्रदर्शन के लिए।
समाधान अवलोकन
इस अनुभाग में, हम वर्णन करते हैं कि सेजमेकर का उपयोग करके एक मॉडल कैसे बनाया और प्रशिक्षित किया जाए और मॉडल को एज़्योर फ़ंक्शंस में तैनात किया जाए। हम मॉडल बनाने, प्रशिक्षित करने और तैनात करने के लिए सेजमेकर स्टूडियो नोटबुक का उपयोग करते हैं। हम PyTorch के लिए पूर्व-निर्मित डॉकर छवि का उपयोग करके SageMaker में मॉडल को प्रशिक्षित करते हैं। हालाँकि इस मामले में हम प्रशिक्षित मॉडल को Azure में तैनात कर रहे हैं, आप मॉडल को अन्य प्लेटफ़ॉर्म जैसे परिसर या अन्य क्लाउड प्लेटफ़ॉर्म पर तैनात करने के लिए उसी दृष्टिकोण का उपयोग कर सकते हैं।
जब हम एक प्रशिक्षण कार्य बनाते हैं, तो सेजमेकर एमएल कंप्यूट इंस्टेंस लॉन्च करता है और मॉडल को प्रशिक्षित करने के लिए हमारे प्रशिक्षण कोड और प्रशिक्षण डेटासेट का उपयोग करता है। यह परिणामी मॉडल कलाकृतियों और अन्य आउटपुट को S3 बकेट में सहेजता है जिसे हम प्रशिक्षण कार्य के इनपुट के रूप में निर्दिष्ट करते हैं। जब मॉडल प्रशिक्षण पूरा हो जाता है, तो हम इसका उपयोग करते हैं न्यूरल नेटवर्क एक्सचेंज खोलें (ONNX) PyTorch मॉडल को ONNX मॉडल के रूप में निर्यात करने के लिए रनटाइम लाइब्रेरी।
अंत में, हम Azure CLI का उपयोग करके Python में लिखे गए कस्टम अनुमान कोड के साथ ONNX मॉडल को Azure फ़ंक्शंस में तैनात करते हैं। ONNX अधिकांश का समर्थन करता है आमतौर पर उपयोग किए जाने वाले एमएल फ्रेमवर्क और उपकरण. ध्यान देने वाली एक बात यह है कि यदि आप एक अलग लक्ष्य परिनियोजन ढांचे का उपयोग करना चाहते हैं, जैसे कि PyTorch से TensorFlow, तो ML मॉडल को ONNX में परिवर्तित करना उपयोगी है। यदि आप स्रोत और लक्ष्य दोनों पर समान ढांचे का उपयोग कर रहे हैं, तो आपको मॉडल को ONNX प्रारूप में बदलने की आवश्यकता नहीं है।
निम्नलिखित चित्र इस दृष्टिकोण के लिए वास्तुकला को दर्शाता है।
हम इसके साथ सेजमेकर स्टूडियो नोटबुक का उपयोग करते हैं सेजमेकर पायथन एसडीके हमारे मॉडल को बनाने और प्रशिक्षित करने के लिए। सेजमेकर पायथन एसडीके सेजमेकर पर एमएल मॉडल के प्रशिक्षण और तैनाती के लिए एक ओपन-सोर्स लाइब्रेरी है। अधिक जानकारी के लिए देखें Amazon SageMaker स्टूडियो नोटबुक बनाएं या खोलें.
निम्नलिखित अनुभागों में कोड स्निपेट का परीक्षण डेटा साइंस 3.0 छवि और पायथन 3.0 कर्नेल का उपयोग करके सेजमेकर स्टूडियो नोटबुक वातावरण में किया गया है।
इस समाधान में, हम निम्नलिखित चरण प्रदर्शित करते हैं:
- एक PyTorch मॉडल को प्रशिक्षित करें।
- PyTorch मॉडल को ONNX मॉडल के रूप में निर्यात करें।
- मॉडल और अनुमान कोड को पैकेज करें।
- मॉडल को Azure फ़ंक्शंस में परिनियोजित करें।
.. पूर्वापेक्षाएँ
आपके पास निम्नलिखित पूर्वापेक्षाएँ होनी चाहिए:
- एक एडब्ल्यूएस खाता।
- एक सेजमेकर डोमेन और सेजमेकर स्टूडियो उपयोगकर्ता। इन्हें बनाने के निर्देशों के लिए, देखें त्वरित सेटअप का उपयोग करके अमेज़न सैजमेकर डोमेन पर ऑनबोर्ड.
- एज़्योर सीएलआई।
- Azure फ़ंक्शंस बनाने और प्रबंधित करने की अनुमति वाले सेवा प्रिंसिपल के लिए Azure और क्रेडेंशियल तक पहुंच।
PyTorch के साथ एक मॉडल को प्रशिक्षित करें
इस अनुभाग में, हम PyTorch मॉडल को प्रशिक्षित करने के चरणों का विवरण देंगे।
निर्भरताएं स्थापित करें
मॉडल प्रशिक्षण और मॉडल परिनियोजन के लिए आवश्यक चरणों को पूरा करने के लिए पुस्तकालय स्थापित करें:
pip install torchvision onnx onnxruntime
आरंभिक सेटअप पूरा करें
हम आयात करके शुरुआत करते हैं अजगर के लिए AWS SDK (Boto3) और सेजमेकर पायथन एसडीके. सेटअप के भाग के रूप में, हम निम्नलिखित को परिभाषित करते हैं:
- एक सत्र ऑब्जेक्ट जो सेजमेकर और हमारे अपने खाते के संदर्भ में सुविधाजनक तरीके प्रदान करता है।
- एक सेजमेकर भूमिका एआरएन का उपयोग प्रशिक्षण और होस्टिंग सेवा को अनुमतियाँ सौंपने के लिए किया जाता है। हमें इसकी आवश्यकता है ताकि ये सेवाएँ S3 बकेट तक पहुँच सकें जहाँ हमारा डेटा और मॉडल संग्रहीत हैं। आपकी व्यावसायिक आवश्यकताओं को पूरा करने वाली भूमिका बनाने के निर्देशों के लिए, देखें सेजमेकर रोल्स. इस पोस्ट के लिए, हम अपने स्टूडियो नोटबुक इंस्टेंस के समान निष्पादन भूमिका का उपयोग करते हैं। ये रोल हमें कॉल करने पर मिलता है
sagemaker.get_execution_role()
. - डिफ़ॉल्ट क्षेत्र जहां हमारा प्रशिक्षण कार्य चलेगा।
- डिफ़ॉल्ट बकेट और उपसर्ग का उपयोग हम मॉडल आउटपुट को संग्रहीत करने के लिए करते हैं।
निम्नलिखित कोड देखें:
import sagemaker
import boto3
import os execution_role = sagemaker.get_execution_role()
region = boto3.Session().region_name
session = sagemaker.Session()
bucket = session.default_bucket()
prefix = "sagemaker/mnist-pytorch"
प्रशिक्षण डेटासेट बनाएं
हम सार्वजनिक बकेट में उपलब्ध डेटासेट का उपयोग करते हैं sagemaker-example-files-prod-{region}
. डेटासेट में निम्नलिखित फ़ाइलें हैं:
- ट्रेन-छवियाँ-idx3-ubyte.gz - प्रशिक्षण सेट छवियाँ शामिल हैं
- ट्रेन-लेबल-idx1-ubyte.gz - प्रशिक्षण सेट लेबल शामिल हैं
- t10k-images-idx3-ubyte.gz - परीक्षण सेट छवियाँ शामिल हैं
- t10k-लेबल-idx1-ubyte.gz - परीक्षण सेट लेबल शामिल हैं
हम उपयोगtorchvision.datasets
हमारे प्रशिक्षण डेटा बकेट में अपलोड करने से पहले स्थानीय रूप से सार्वजनिक बकेट से डेटा डाउनलोड करने के लिए मॉड्यूल। हम इस बकेट लोकेशन को सेजमेकर प्रशिक्षण कार्य के इनपुट के रूप में पास करते हैं। हमारी प्रशिक्षण स्क्रिप्ट प्रशिक्षण डेटा को डाउनलोड करने और तैयार करने और फिर मॉडल को प्रशिक्षित करने के लिए इस स्थान का उपयोग करती है। निम्नलिखित कोड देखें:
MNIST.mirrors = [ f"https://sagemaker-example-files-prod-{region}.s3.amazonaws.com/datasets/image/MNIST/"
] MNIST( "data", download=True, transform=transforms.Compose( [transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,))] ),
)
प्रशिक्षण स्क्रिप्ट बनाएं
सेजमेकर के साथ, आप अपना स्वयं का मॉडल ला सकते हैं स्क्रिप्ट मोड. स्क्रिप्ट मोड के साथ, आप पूर्व-निर्मित सेजमेकर कंटेनरों का उपयोग कर सकते हैं और अपनी स्वयं की प्रशिक्षण स्क्रिप्ट प्रदान कर सकते हैं, जिसमें किसी भी कस्टम लाइब्रेरी और निर्भरता के साथ मॉडल परिभाषा है। सेजमेकर पायथन एसडीके हमारी स्क्रिप्ट को एक के रूप में पास करता है entry_point
कंटेनर में, जो हमारे मॉडल को प्रशिक्षित करने के लिए प्रदान की गई स्क्रिप्ट से ट्रेन फ़ंक्शन को लोड और चलाता है।
जब प्रशिक्षण पूरा हो जाता है, तो सेजमेकर मॉडल आउटपुट को S3 बकेट में सहेजता है जिसे हमने प्रशिक्षण कार्य के लिए एक पैरामीटर के रूप में प्रदान किया है।
हमारा प्रशिक्षण कोड निम्नलिखित से अनुकूलित है PyTorch उदाहरण स्क्रिप्ट. कोड का निम्नलिखित अंश मॉडल परिभाषा और ट्रेन फ़ंक्शन दिखाता है:
# define network class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.conv1 = nn.Conv2d(1, 32, 3, 1) self.conv2 = nn.Conv2d(32, 64, 3, 1) self.dropout1 = nn.Dropout(0.25) self.dropout2 = nn.Dropout(0.5) self.fc1 = nn.Linear(9216, 128) self.fc2 = nn.Linear(128, 10) def forward(self, x): x = self.conv1(x) x = F.relu(x) x = self.conv2(x) x = F.relu(x) x = F.max_pool2d(x, 2) x = self.dropout1(x) x = torch.flatten(x, 1) x = self.fc1(x) x = F.relu(x) x = self.dropout2(x) x = self.fc2(x) output = F.log_softmax(x, dim=1) return output
# train def train(args, model, device, train_loader, optimizer, epoch): model.train() for batch_idx, (data, target) in enumerate(train_loader): data, target = data.to(device), target.to(device) optimizer.zero_grad() output = model(data) loss = F.nll_loss(output, target) loss.backward() optimizer.step() if batch_idx % args.log_interval == 0: print('Train Epoch: {} [{}/{} ({:.0f}%)]tLoss: {:.6f}'.format( epoch, batch_idx * len(data), len(train_loader.dataset), 100. * batch_idx / len(train_loader), loss.item())) if args.dry_run: break
मॉडल को प्रशिक्षित करें
अब जब हमने अपना वातावरण स्थापित कर लिया है और अपना इनपुट डेटासेट और कस्टम प्रशिक्षण स्क्रिप्ट बना लिया है, तो हम सेजमेकर का उपयोग करके मॉडल प्रशिक्षण शुरू कर सकते हैं। हम SageMaker पर प्रशिक्षण कार्य शुरू करने के लिए SageMaker Python SDK में PyTorch अनुमानक का उपयोग करते हैं। हम अनुमानक को आवश्यक पैरामीटर देते हैं और फिट विधि को कॉल करते हैं। जब हम PyTorch अनुमानक पर फिट कहते हैं, तो SageMaker हमारी स्क्रिप्ट को प्रशिक्षण कोड के रूप में उपयोग करके एक प्रशिक्षण कार्य शुरू करता है:
from sagemaker.pytorch import PyTorch output_location = f"s3://{bucket}/{prefix}/output"
print(f"training artifacts will be uploaded to: {output_location}") hyperparameters={ "batch-size": 100, "epochs": 1, "lr": 0.1, "gamma": 0.9, "log-interval": 100
} instance_type = "ml.c4.xlarge"
estimator = PyTorch( entry_point="train.py", source_dir="code", # directory of your training script role=execution_role, framework_version="1.13", py_version="py39", instance_type=instance_type, instance_count=1, volume_size=250, output_path=output_location, hyperparameters=hyperparameters
) estimator.fit(inputs = { 'training': f"{inputs}", 'testing': f"{inputs}"
})
प्रशिक्षित मॉडल को ONNX मॉडल के रूप में निर्यात करें
प्रशिक्षण पूरा होने और हमारे मॉडल को अमेज़ॅन S3 में पूर्वनिर्धारित स्थान पर सहेजे जाने के बाद, हम ONNX रनटाइम का उपयोग करके मॉडल को ONNX मॉडल में निर्यात करते हैं।
हम प्रशिक्षण पूरा होने के बाद चलाने के लिए अपनी प्रशिक्षण स्क्रिप्ट में अपने मॉडल को ONNX पर निर्यात करने के लिए कोड शामिल करते हैं।
PyTorch हमारे इनपुट का उपयोग करके मॉडल को चलाकर और आउटपुट की गणना करने के लिए उपयोग किए गए ऑपरेटरों के ट्रेस को रिकॉर्ड करके मॉडल को ONNX में निर्यात करता है। हम PyTorch के साथ सही प्रकार के यादृच्छिक इनपुट का उपयोग करते हैं torch.onnx.export
मॉडल को ONNX पर निर्यात करने का कार्य। हम अपने इनपुट में पहले आयाम को डायनामिक के रूप में भी निर्दिष्ट करते हैं ताकि हमारा मॉडल एक वेरिएबल स्वीकार कर सके batch_size
अनुमान के दौरान इनपुट की.
def export_to_onnx(model, model_dir, device): logger.info("Exporting the model to onnx.") dummy_input = torch.randn(1, 1, 28, 28).to(device) input_names = [ "input_0" ] output_names = [ "output_0" ] path = os.path.join(model_dir, 'mnist-pytorch.onnx') torch.onnx.export(model, dummy_input, path, verbose=True, input_names=input_names, output_names=output_names, dynamic_axes={'input_0' : {0 : 'batch_size'}, # variable length axes 'output_0' : {0 : 'batch_size'}})
ONNX गहन शिक्षण मॉडल के लिए एक खुला मानक प्रारूप है जो PyTorch, Microsoft Cognitive Toolkit (CNTK), और अधिक जैसे गहन शिक्षण ढांचे के बीच अंतरसंचालनीयता को सक्षम बनाता है। इसका मतलब है कि आप मॉडल को प्रशिक्षित करने के लिए इनमें से किसी भी ढांचे का उपयोग कर सकते हैं और बाद में पूर्व-प्रशिक्षित मॉडल को ONNX प्रारूप में निर्यात कर सकते हैं। मॉडल को ONNX पर निर्यात करके, आपको परिनियोजन उपकरणों और प्लेटफ़ॉर्म के व्यापक चयन का लाभ मिलता है।
मॉडल कलाकृतियों को डाउनलोड करें और निकालें
ONNX मॉडल जिसे हमारी प्रशिक्षण स्क्रिप्ट ने सहेजा है, उसे SageMaker द्वारा Amazon S3 में आउटपुट स्थान पर कॉपी किया गया है, जिसे हमने प्रशिक्षण कार्य शुरू करते समय निर्दिष्ट किया था। मॉडल कलाकृतियों को एक संपीड़ित संग्रह फ़ाइल के रूप में संग्रहीत किया जाता है जिसे कहा जाता है model.tar.gz
. हम इस संग्रह फ़ाइल को अपने स्टूडियो नोटबुक उदाहरण में एक स्थानीय निर्देशिका में डाउनलोड करते हैं और मॉडल कलाकृतियों, अर्थात् ONNX मॉडल को निकालते हैं।
import tarfile local_model_file = 'model.tar.gz'
model_bucket,model_key = estimator.model_data.split('/',2)[-1].split('/',1)
s3 = boto3.client("s3")
s3.download_file(model_bucket,model_key,local_model_file) model_tar = tarfile.open(local_model_file)
model_file_name = model_tar.next().name
model_tar.extractall('.')
model_tar.close()
ONNX मॉडल को मान्य करें
ONNX मॉडल को नाम की फ़ाइल में निर्यात किया जाता है mnist-pytorch.onnx
हमारी प्रशिक्षण स्क्रिप्ट द्वारा। इस फ़ाइल को डाउनलोड करने और निकालने के बाद, हम वैकल्पिक रूप से इसका उपयोग करके ONNX मॉडल को मान्य कर सकते हैं onnx.checker
मापांक। check_model
इस मॉड्यूल में फ़ंक्शन एक मॉडल की स्थिरता की जांच करता है। यदि परीक्षण विफल हो जाता है तो एक अपवाद उठाया जाता है।
import onnx onnx_model = onnx.load("mnist-pytorch.onnx")
onnx.checker.check_model(onnx_model)
मॉडल और अनुमान कोड को पैकेज करें
इस पोस्ट के लिए, हम Azure फ़ंक्शंस के लिए .zip परिनियोजन का उपयोग करते हैं। इस पद्धति में, हम अपने मॉडल, संबंधित कोड और Azure फ़ंक्शंस सेटिंग्स को एक .zip फ़ाइल में पैकेज करते हैं और इसे Azure फ़ंक्शंस में प्रकाशित करते हैं। निम्नलिखित कोड हमारे परिनियोजन पैकेज की निर्देशिका संरचना दिखाता है:
mnist-onnx
├── function_app.py
├── model
│ └── mnist-pytorch.onnx
└── requirements.txt
निर्भरताएँ सूचीबद्ध करें
हम अपने अनुमान कोड के लिए निर्भरताएँ सूचीबद्ध करते हैं requirements.txt
हमारे पैकेज के मूल में फ़ाइल। जब हम पैकेज प्रकाशित करते हैं तो इस फ़ाइल का उपयोग Azure फ़ंक्शंस वातावरण बनाने के लिए किया जाता है।
azure-functions
numpy
onnxruntime
अनुमान कोड लिखें
हम अपने मॉडल को लोड करने और अनुमान चलाने के लिए ONNX रनटाइम लाइब्रेरी का उपयोग करके, निम्नलिखित अनुमान कोड लिखने के लिए पायथन का उपयोग करते हैं। यह Azure फ़ंक्शंस ऐप को एंडपॉइंट उपलब्ध कराने का निर्देश देता है /classify
तुलनात्मक पथ।
import logging
import azure.functions as func
import numpy as np
import os
import onnxruntime as ort
import json app = func.FunctionApp() def preprocess(input_data_json): # convert the JSON data into the tensor input return np.array(input_data_json['data']).astype('float32') def run_model(model_path, req_body): session = ort.InferenceSession(model_path) input_data = preprocess(req_body) logging.info(f"Input Data shape is {input_data.shape}.") input_name = session.get_inputs()[0].name # get the id of the first input of the model try: result = session.run([], {input_name: input_data}) except (RuntimeError) as e: print("Shape={0} and error={1}".format(input_data.shape, e)) return result[0] def get_model_path(): d=os.path.dirname(os.path.abspath(__file__)) return os.path.join(d , './model/mnist-pytorch.onnx') @app.function_name(name="mnist_classify")
@app.route(route="classify", auth_level=func.AuthLevel.ANONYMOUS)
def main(req: func.HttpRequest) -> func.HttpResponse: logging.info('Python HTTP trigger function processed a request.') # Get the img value from the post. try: req_body = req.get_json() except ValueError: pass if req_body: # run model result = run_model(get_model_path(), req_body) # map output to integer and return result string. digits = np.argmax(result, axis=1) logging.info(type(digits)) return func.HttpResponse(json.dumps({"digits": np.array(digits).tolist()})) else: return func.HttpResponse( "This HTTP triggered function successfully.", status_code=200 )
मॉडल को Azure फ़ंक्शंस में परिनियोजित करें
अब जब हमारे पास आवश्यक .zip प्रारूप में कोड पैक हो गया है, तो हम इसे Azure फ़ंक्शंस में प्रकाशित करने के लिए तैयार हैं। हम Azure CLI का उपयोग करके ऐसा करते हैं, जो Azure संसाधनों को बनाने और प्रबंधित करने के लिए एक कमांड लाइन उपयोगिता है। निम्नलिखित कोड के साथ Azure CLI स्थापित करें:
!pip install -q azure-cli
फिर निम्नलिखित चरणों को पूरा करें:
- Azure में लॉग इन करें:
!az login
- संसाधन निर्माण पैरामीटर सेट करें:
import random random_suffix = str(random.randint(10000,99999)) resource_group_name = f"multicloud-{random_suffix}-rg" storage_account_name = f"multicloud{random_suffix}" location = "ukwest" sku_storage = "Standard_LRS" functions_version = "4" python_version = "3.9" function_app = f"multicloud-mnist-{random_suffix}"
- आवश्यक संसाधनों के साथ Azure फ़ंक्शंस ऐप बनाने के लिए निम्नलिखित कमांड का उपयोग करें:
!az group create --name {resource_group_name} --location {location} !az storage account create --name {storage_account_name} --resource-group {resource_group_name} --location {location} --sku {sku_storage} !az functionapp create --name {function_app} --resource-group {resource_group_name} --storage-account {storage_account_name} --consumption-plan-location "{location}" --os-type Linux --runtime python --runtime-version {python_version} --functions-version {functions_version}
- Azure फ़ंक्शंस सेट करें ताकि जब हम फ़ंक्शंस पैकेज तैनात करें, तो
requirements.txt
फ़ाइल का उपयोग हमारी एप्लिकेशन निर्भरताएँ बनाने के लिए किया जाता है:!az functionapp config appsettings set --name {function_app} --resource-group {resource_group_name} --settings @./functionapp/settings.json
- Python v2 मॉडल को चलाने के लिए फ़ंक्शंस ऐप को कॉन्फ़िगर करें और .zip परिनियोजन के बाद प्राप्त कोड पर एक बिल्ड निष्पादित करें:
{ "AzureWebJobsFeatureFlags": "EnableWorkerIndexing", "SCM_DO_BUILD_DURING_DEPLOYMENT": true }
- हमारे पास सही कॉन्फ़िगरेशन के साथ संसाधन समूह, स्टोरेज कंटेनर और फ़ंक्शंस ऐप होने के बाद, फ़ंक्शंस ऐप पर कोड प्रकाशित करें:
!az functionapp deployment source config-zip -g {resource_group_name} -n {function_app} --src {function_archive} --build-remote true
मॉडल का परीक्षण करें
हमने एक HTTP ट्रिगर के रूप में Azure फ़ंक्शंस में ML मॉडल को तैनात किया है, जिसका अर्थ है कि हम फ़ंक्शन को कॉल करने और मॉडल को चलाने के लिए फ़ंक्शन में HTTP अनुरोध भेजने के लिए फ़ंक्शंस ऐप URL का उपयोग कर सकते हैं।
इनपुट तैयार करने के लिए, सेजमेकर उदाहरण फ़ाइल बकेट से परीक्षण छवि फ़ाइलें डाउनलोड करें और मॉडल द्वारा आवश्यक प्रारूप में नमूनों का एक सेट तैयार करें:
from torch.utils.data import DataLoader
from torchvision import datasets, transforms
import matplotlib.pyplot as plt transform=transforms.Compose( [transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,))]
) test_dataset = datasets.MNIST(root='../data', download=True, train=False, transform=transform)
test_loader = DataLoader(test_dataset, batch_size=16, shuffle=True) test_features, test_labels = next(iter(test_loader))
नमूना इनपुट के साथ अनुमान समापन बिंदु पर पोस्ट अनुरोध भेजने के लिए अनुरोध लाइब्रेरी का उपयोग करें। अनुमान समापन बिंदु निम्नलिखित कोड में दिखाए अनुसार प्रारूप लेता है:
import requests, json def to_numpy(tensor): return tensor.detach().cpu().numpy() if tensor.requires_grad else tensor.cpu().numpy() url = f"https://{function_app}.azurewebsites.net/api/classify"
response = requests.post(url, json.dumps({"data":to_numpy(test_features).tolist()}) )
predictions = json.loads(response.text)['digits']
क्लीन अप
जब आप मॉडल का परीक्षण पूरा कर लें, तो स्टोरेज कंटेनर और फ़ंक्शंस ऐप सहित निहित संसाधनों के साथ संसाधन समूह को हटा दें:
!az group delete --name {resource_group_name} --yes
इसके अतिरिक्त, लागत कम करने के लिए सेजमेकर स्टूडियो के भीतर निष्क्रिय संसाधनों को बंद करने की सिफारिश की गई है। अधिक जानकारी के लिए देखें Amazon SageMaker Studio के भीतर निष्क्रिय संसाधनों को स्वचालित रूप से बंद करके लागत बचाएं.
निष्कर्ष
इस पोस्ट में, हमने दिखाया कि आप सेजमेकर के साथ एक एमएल मॉडल कैसे बना और प्रशिक्षित कर सकते हैं और इसे किसी अन्य क्लाउड प्रदाता पर तैनात कर सकते हैं। समाधान में, हमने सेजमेकर स्टूडियो नोटबुक का उपयोग किया, लेकिन उत्पादन कार्यभार के लिए, हमने इसका उपयोग करने की अनुशंसा की एमएलओपीएस मॉडल विकास और तैनाती में तेजी लाने के लिए दोहराए जाने योग्य प्रशिक्षण वर्कफ़्लोज़ बनाना।
यह पोस्ट मल्टीक्लाउड वातावरण में मॉडल को तैनात करने और चलाने के सभी संभावित तरीके नहीं दिखाता है। उदाहरण के लिए, आप किसी भी प्लेटफ़ॉर्म पर कंटेनरीकृत एप्लिकेशन के रूप में मॉडल को चलाने के लिए अपने मॉडल को अनुमान कोड और निर्भरता लाइब्रेरी के साथ एक कंटेनर छवि में भी पैकेज कर सकते हैं। इस दृष्टिकोण के बारे में अधिक जानकारी के लिए देखें Amazon CodeCatalyst का उपयोग करके मल्टीक्लाउड वातावरण में कंटेनर एप्लिकेशन तैनात करें. पोस्ट का उद्देश्य यह दिखाना है कि संगठन मल्टीक्लाउड वातावरण में AWS AI/ML क्षमताओं का उपयोग कैसे कर सकते हैं।
लेखक के बारे में
राजा वैद्यनाथन AWS में एक समाधान वास्तुकार है जो वैश्विक वित्तीय सेवा ग्राहकों का समर्थन करता है। राजा ग्राहकों के साथ उनके व्यवसाय पर दीर्घकालिक सकारात्मक प्रभाव डालने वाली जटिल समस्याओं का समाधान निकालने के लिए काम करते हैं। वह आईटी रणनीति, एंटरप्राइज़ डेटा प्रबंधन और एप्लिकेशन आर्किटेक्चर में कुशल एक मजबूत इंजीनियरिंग पेशेवर हैं, जिनकी एनालिटिक्स और मशीन लर्निंग में विशेष रुचि है।
अमनदीप बाजवा वित्तीय सेवा उद्यमों का समर्थन करने वाले AWS में एक वरिष्ठ समाधान वास्तुकार हैं। वह उद्योग के रुझानों और संगठनात्मक प्राथमिकताओं के आधार पर उपयुक्त क्लाउड परिवर्तन रणनीति की पहचान करके संगठनों को उनके व्यावसायिक परिणाम प्राप्त करने में मदद करता है। अमनदीप जिन कुछ क्षेत्रों पर परामर्श देता है उनमें क्लाउड माइग्रेशन, क्लाउड रणनीति (हाइब्रिड और मल्टीक्लाउड सहित), डिजिटल परिवर्तन, डेटा और एनालिटिक्स और सामान्य रूप से प्रौद्योगिकी शामिल हैं।
प्रेमा अय्यर AWS एंटरप्राइज सपोर्ट के लिए वरिष्ठ तकनीकी खाता प्रबंधक हैं। वह विभिन्न परियोजनाओं पर बाहरी ग्राहकों के साथ काम करती है, जिससे उन्हें AWS का उपयोग करते समय अपने समाधानों के मूल्य को बेहतर बनाने में मदद मिलती है।
- एसईओ संचालित सामग्री और पीआर वितरण। आज ही प्रवर्धित हो जाओ।
- प्लेटोडेटा.नेटवर्क वर्टिकल जेनरेटिव एआई। स्वयं को शक्तिवान बनाएं। यहां पहुंचें।
- प्लेटोआईस्ट्रीम। Web3 इंटेलिजेंस। ज्ञान प्रवर्धित। यहां पहुंचें।
- प्लेटोईएसजी. कार्बन, क्लीनटेक, ऊर्जा, पर्यावरण, सौर, कचरा प्रबंधन। यहां पहुंचें।
- प्लेटोहेल्थ। बायोटेक और क्लिनिकल परीक्षण इंटेलिजेंस। यहां पहुंचें।
- स्रोत: https://aws.amazon.com/blogs/machine-learning/train-and-deploy-ml-models-in-a-multicloud-environment-using-amazon-sagemaker/
- :हैस
- :है
- :नहीं
- :कहाँ
- $यूपी
- 1
- 10
- 100
- 13
- 25
- 28
- 32
- 7
- 9
- a
- About
- में तेजी लाने के
- स्वीकार करता है
- पहुँच
- लेखा
- पाना
- प्राप्त
- लाभ
- बाद
- AI
- ऐ / एमएल
- सब
- की अनुमति देता है
- साथ में
- पहले ही
- भी
- हालांकि
- वीरांगना
- अमेज़न SageMaker
- अमेज़ॅन सेजमेकर कैनवास
- अमेज़ॅन सैजमेकर स्टूडियो
- अमेज़ॅन वेब सेवा
- an
- विश्लेषकों
- विश्लेषिकी
- और
- गुमनाम
- अन्य
- कोई
- अपाचे
- अनुप्रयोग
- आवेदन
- अनुप्रयोगों
- दृष्टिकोण
- उपयुक्त
- स्थापत्य
- पुरालेख
- हैं
- क्षेत्रों के बारे में जानकारी का उपयोग करके ट्रेडिंग कर सकते हैं।
- AS
- मूल्यांकन
- At
- को स्वचालित रूप से
- स्वतः
- उपलब्ध
- एडब्ल्यूएस
- कुल्हाड़ियों
- नीला
- आधारित
- BE
- किया गया
- से पहले
- शुरू करना
- लाभदायक
- लाभ
- बेहतर
- के बीच
- के छात्रों
- लाना
- व्यापक
- निर्माण
- इमारत
- व्यापार
- लेकिन
- by
- कॉल
- बुलाया
- बुला
- कर सकते हैं
- कैनवास
- क्षमताओं
- ले जाना
- मामला
- जाँचता
- कक्षा
- वर्गीकृत
- क्लिक करें
- बादल
- कोड
- संज्ञानात्मक
- सहयोगी
- कंपनी
- पूरा
- जटिल
- अनुपालन
- व्यापक
- गणना करना
- विन्यास
- निहित
- कंटेनर
- कंटेनरों
- शामिल हैं
- प्रसंग
- सुविधा
- बदलना
- परिवर्तित
- मूल
- लागत
- सका
- बनाना
- बनाया
- बनाना
- निर्माण
- साख
- रिवाज
- ग्राहक
- तिथि
- आँकड़ा प्रबंधन
- डेटा तैयारी
- डेटा विज्ञान
- डेटासेट
- गहरा
- ध्यान लगा के पढ़ना या सीखना
- गहरी
- चूक
- परिभाषित
- परिभाषा
- दिखाना
- निर्भरता
- निर्भरता
- तैनात
- तैनात
- तैनाती
- तैनाती
- वर्णन
- विस्तार
- विवरण
- विकास
- युक्ति
- डिवाइस
- विभिन्न
- डिजिटल
- डिजिटल परिवर्तन
- अंक
- आयाम
- चर्चा की
- do
- डाक में काम करनेवाला मज़दूर
- डोमेन
- किया
- dont
- नीचे
- डाउनलोड
- दौरान
- गतिशील
- e
- अन्य
- आलिंगन
- सक्षम बनाता है
- समर्थकारी
- समाप्त
- endpoint
- अभियांत्रिकी
- इंजीनियर्स
- उद्यम
- उद्यम
- वातावरण
- युग
- अवधियों को
- प्रत्येक
- उदाहरण
- सिवाय
- अपवाद
- निष्पादन
- विशेषज्ञता
- निर्यात
- निर्यात
- बाहरी
- उद्धरण
- विफल रहता है
- विशेषताएं
- कुछ
- पट्टिका
- फ़ाइलें
- वित्तीय
- वित्तीय सेवाओं
- खोज
- प्रथम
- फिट
- निम्नलिखित
- के लिए
- प्रारूप
- बुनियाद
- ढांचा
- चौखटे
- से
- समारोह
- कार्यों
- सामान्य जानकारी
- उत्पन्न करता है
- उत्पादक
- जनरेटिव एआई
- मिल
- वैश्विक
- वैश्विक वित्तीय
- समूह
- है
- he
- मदद
- मदद करता है
- होस्टिंग
- कैसे
- How To
- एचटीएमएल
- http
- HTTPS
- संकर
- ID
- पहचान
- निष्क्रिय
- if
- दिखाता है
- की छवि
- छवियों
- प्रभाव
- आयात
- का आयात
- में सुधार
- में सुधार लाने
- in
- शामिल
- सहित
- स्वतंत्र
- उद्योग
- करें-
- प्रारंभिक
- निवेश
- निविष्टियां
- स्थापित
- उदाहरण
- निर्देश
- एकीकृत
- एकीकृत
- इरादा
- रुचियों
- इंटरफेस
- इंटरोऑपरेबिलिटी
- में
- IT
- आईटी इस
- काम
- नौकरियां
- जेपीजी
- JSON
- भाषा
- बड़ा
- ताज़ा
- शुरूआत
- जानें
- सीख रहा हूँ
- लंबाई
- लीवरेज
- पुस्तकालयों
- पुस्तकालय
- जीवन चक्र
- लाइन
- लिनक्स
- सूची
- भार
- भार
- स्थानीय
- स्थानीय स्तर पर
- स्थान
- लॉगिंग
- लंबे समय तक
- देख
- बंद
- मशीन
- यंत्र अधिगम
- बनाना
- प्रबंधन
- कामयाब
- प्रबंध
- प्रबंधक
- बहुत
- नक्शा
- matplotlib
- मई..
- साधन
- मिलना
- की बैठक
- तरीका
- तरीकों
- माइक्रोसॉफ्ट
- हो सकता है
- प्रवास
- ML
- एमएलओपीएस
- मोड
- आदर्श
- मॉडल
- मॉड्यूल
- अधिक
- अधिकांश
- नाम
- नामांकित
- यानी
- आवश्यकता
- जरूरत
- की जरूरत है
- जाल
- नेटवर्क
- तंत्रिका
- तंत्रिका नेटवर्क
- नोटबुक
- numpy
- वस्तु
- of
- on
- ONE
- खुला
- खुला स्रोत
- परिचालन
- संचालन
- ऑपरेटरों
- ऑप्शंस
- or
- आदेश
- संगठन
- संगठनात्मक
- संगठनों
- OS
- अन्य
- हमारी
- आउट
- परिणामों
- उत्पादन
- बाहर
- अपना
- पैकेज
- पैक
- प्राचल
- पैरामीटर
- भाग
- विशेष
- पार्टी
- पास
- गुजरता
- पथ
- निष्पादन
- अनुमतियाँ
- मंच
- प्लेटफार्म
- प्लेटो
- प्लेटो डेटा इंटेलिजेंस
- प्लेटोडाटा
- लोकप्रिय
- सकारात्मक
- संभव
- पद
- भविष्यवाणियों
- तैयारी
- तैयार करना
- आवश्यक शर्तें
- प्राथमिक
- प्रिंसिपल
- समस्याओं
- प्रसंस्कृत
- उत्पादन
- उत्पादकता
- उत्पाद
- पेशेवर
- परियोजनाओं
- प्रदान करना
- बशर्ते
- प्रदाता
- प्रदान करता है
- सार्वजनिक
- प्रकाशित करना
- अजगर
- pytorch
- त्वरित
- उठाया
- बिना सोचे समझे
- तैयार
- प्राप्त
- की सिफारिश की
- रिकॉर्डिंग
- को कम करने
- उल्लेख
- भले ही
- क्षेत्र
- रजिस्ट्री
- सापेक्ष
- repeatable
- का अनुरोध
- अनुरोधों
- की आवश्यकता होती है
- अपेक्षित
- आवश्यकताएँ
- संसाधन
- उपयुक्त संसाधन चुनें
- प्रतिक्रिया
- परिणाम
- जिसके परिणामस्वरूप
- वापसी
- सही
- भूमिका
- जड़
- रन
- दौड़ना
- चलाता है
- sagemaker
- वही
- बचाया
- स्केल
- स्कैनिंग
- परिदृश्यों
- विज्ञान
- वैज्ञानिकों
- लिपि
- एसडीके
- माध्यमिक
- अनुभाग
- वर्गों
- सुरक्षा
- देखना
- चयन
- स्व
- भेजें
- वरिष्ठ
- सेवा
- सेवाएँ
- सत्र
- सेट
- सेटिंग्स
- व्यवस्था
- आकार
- वह
- चाहिए
- दिखाना
- पता चला
- दिखाया
- दिखाता है
- शट डाउन
- बंद करना
- सरल
- स्थितियों
- कुशल
- कौशल
- So
- सॉफ्टवेयर
- समाधान
- समाधान ढूंढे
- कुछ
- स्रोत
- संप्रभुता
- विनिर्दिष्ट
- ट्रेनिंग
- मानक
- प्रारंभ
- शुरू
- शुरू होता है
- कदम
- भंडारण
- की दुकान
- संग्रहित
- स्ट्रेटेजी
- तार
- मजबूत
- संरचना
- स्टूडियो
- इसके बाद
- सफलतापूर्वक
- ऐसा
- समर्थन
- सहायक
- समर्थन करता है
- लेना
- लेता है
- लक्ष्य
- टीम
- तकनीकी
- टेक्नोलॉजीज
- टेक्नोलॉजी
- दस
- tensorflow
- परीक्षण
- परीक्षण किया
- परीक्षण
- टेक्स्ट
- कि
- RSI
- स्रोत
- लेकिन हाल ही
- उन
- अपने
- फिर
- इन
- वे
- बात
- तीसरा
- इसका
- बार
- सेवा मेरे
- टूलकिट
- उपकरण
- मशाल
- टॉर्चविजन
- निशान
- रेलगाड़ी
- प्रशिक्षित
- प्रशिक्षण
- बदालना
- परिवर्तन
- परिवर्तन की रणनीति
- रूपांतरण
- रुझान
- ट्रिगर
- शुरू हो रहा
- <strong>उद्देश्य</strong>
- कोशिश
- टाइप
- अद्वितीय
- अपलोड की गई
- अपलोड हो रहा है
- यूआरएल
- उपयोग
- उदाहरण
- प्रयुक्त
- उपयोगकर्ता
- का उपयोग करता है
- का उपयोग
- उपयोगिता
- सत्यापित करें
- मूल्य
- परिवर्तनशील
- विविधता
- विक्रेताओं
- संस्करणों
- भेद्यता
- करना चाहते हैं
- था
- तरीके
- we
- वेब
- वेब सेवाओं
- वेब आधारित
- कुंआ
- कब
- कौन कौन से
- मर्जी
- साथ में
- अंदर
- workflows
- कार्य
- लिखना
- लिखा हुआ
- X
- अभी तक
- आप
- आपका
- जेफिरनेट
- ज़िप