Amazon SageMaker के साथ क्लासिकल ML और LLM को आसानी से पैकेज और तैनात करें, भाग 1: PySDK सुधार | अमेज़न वेब सेवाएँ

Amazon SageMaker के साथ क्लासिकल ML और LLM को आसानी से पैकेज और तैनात करें, भाग 1: PySDK सुधार | अमेज़न वेब सेवाएँ

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

हम सेजमेकर का उपयोग करके पैकेजिंग और मॉडलों को तैनात करने की प्रक्रिया को सरल बनाने के लिए दो नए तरीके लॉन्च कर रहे हैं।

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

दूसरा नया लॉन्च सेजमेकर स्टूडियो में नए इंटरैक्टिव परिनियोजन अनुभव का उपयोग करना है। हम भाग 2 में इस पर चर्चा करते हैं।

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

सेजमेकर होस्टिंग का उपयोग करते समय अपने ग्राहकों की और मदद करने के लिए, हमने नई पेशकश की है ModelBuilder सेजमेकर पायथन एसडीके में क्लास, जो सेजमेकर एंडपॉइंट्स पर मॉडल तैनात करते समय निम्नलिखित प्रमुख लाभ लाता है:

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

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

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

सेजमेकर मॉडलबिल्डर को जानना

नई ModelBuilder एक पायथन क्लास है जो XGBoost या PyTorch जैसे फ्रेमवर्क का उपयोग करके बनाए गए ML मॉडल को लेने और उन्हें SageMaker पर तैनाती के लिए तैयार मॉडल में परिवर्तित करने पर केंद्रित है। ModelBuilder प्रदान करता है एक build() फ़ंक्शन, जो मॉडल सर्वर के अनुसार कलाकृतियाँ उत्पन्न करता है, और a deploy() स्थानीय रूप से या सेजमेकर एंडपॉइंट पर तैनात करने के लिए फ़ंक्शन। इस सुविधा की शुरूआत सेजमेकर वातावरण के साथ मॉडलों के एकीकरण को सरल बनाती है, उन्हें प्रदर्शन और स्केलेबिलिटी के लिए अनुकूलित करती है। निम्नलिखित चित्र दिखाता है कि कैसे ModelBuilder उच्च स्तर पर कार्य करता है।

Amazon SageMaker के साथ क्लासिकल ML और LLM को आसानी से पैकेज और तैनात करें, भाग 1: PySDK सुधार | अमेज़ॅन वेब सेवाएँ प्लेटोब्लॉकचेन डेटा इंटेलिजेंस। लंबवत खोज. ऐ.

मॉडलबिल्डर वर्ग

RSI मॉडलबिल्डर कक्षा अनुकूलन के लिए विभिन्न विकल्प प्रदान करती है। हालाँकि, फ्रेमवर्क मॉडल को तैनात करने के लिए, मॉडल बिल्डर केवल मॉडल, इनपुट, आउटपुट और भूमिका की अपेक्षा करता है:

class ModelBuilder( model, # model id or model object role_arn, # IAM role schema_builder, # defines the input and output mode, # select between local deployment and depoy to SageMaker Endpoints ...
)

स्कीमबिल्डर

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

class SchemaBuilder( sample_input: Any, sample_output: Any, input_translator: CustomPayloadTranslator = None, output_translator: CustomPayloadTranslator = None
)

हालाँकि, ज्यादातर मामलों में, केवल नमूना इनपुट और आउटपुट ही काम करेगा। उदाहरण के लिए:

input = "How is the demo going?"
output = "Comment la démo va-t-elle?"
schema = SchemaBuilder(input, output)

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

स्थानीय मोड का अनुभव

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

# Train the model
model = XGBClassifier()
model.fit(X_train, y_train)
model.save_model(model_dir + "/my_model.xgb")

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

model_builder_local = ModelBuilder( model=model, schema_builder=SchemaBuilder(X_test, y_pred), role_arn=execution_role, mode=Mode.LOCAL_CONTAINER
)
xgb_local_builder = model_builder_local.build()

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

# note: all the serialization and deserialization is handled by the model builder.
predictor_local = xgb_local_builder.deploy(
# instance_type='ml.c5.xlarge',
# initial_instance_count=1
) # Make prediction for test data. predictor_local.predict(X_test)

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

को देखें मॉडल-बिल्डर-xgboost.ipynb स्थानीय और सेजमेकर एंडपॉइंट दोनों का उपयोग करके तैनाती का परीक्षण करने के लिए उदाहरण ModelBuilder.

सेजमेकर एंडपॉइंट पर पारंपरिक मॉडल तैनात करें

निम्नलिखित उदाहरणों में, हम दिखाते हैं कि कैसे उपयोग करें ModelBuilder पारंपरिक एमएल मॉडल तैनात करने के लिए।

XGBoost मॉडल

पिछले अनुभाग के समान, आप इसे बदलकर एक XGBoost मॉडल को SageMaker एंडपॉइंट पर तैनात कर सकते हैं mode बनाते समय पैरामीटर ModelBuilder वस्तु:

model_builder = ModelBuilder( model=model, schema_builder=SchemaBuilder(sample_input=sample_input, sample_output=sample_output), role_arn=execution_role, mode=Mode.SAGEMAKER_ENDPOINT
)
xgb_builder = model_builder.build()
predictor = xgb_builder.deploy( instance_type='ml.c5.xlarge', initial_instance_count=1
)

ध्यान दें कि सेजमेकर एंडपॉइंट पर तैनात करते समय, आपको कॉल करते समय इंस्टेंस प्रकार और इंस्टेंस गिनती निर्दिष्ट करने की आवश्यकता होती है deploy समारोह.

को देखें मॉडल-बिल्डर-xgboost.ipynb XGBoost मॉडल को तैनात करने का उदाहरण।

ट्राइटन मॉडल

आप का उपयोग कर सकते हैं ModelBuilder PyTorch मॉडल को चालू करने के लिए ट्राइटन अनुमान सर्वर. उसके लिए, आपको निर्दिष्ट करना होगा model_server पैरामीटर के रूप में ModelServer.TRITON, एक मॉडल पास करें, और एक है SchemaBuilder ऑब्जेक्ट, जिसके लिए मॉडल से नमूना इनपुट और आउटपुट की आवश्यकता होती है। मॉडलबिल्डर आपके बाकी काम का ध्यान रखेगा।

model_builder = ModelBuilder( model=model, schema_builder=SchemaBuilder(sample_input=sample_input, sample_output=sample_output), role_arn=execution_role, model_server=ModelServer.TRITON, mode=Mode.SAGEMAKER_ENDPOINT
) triton_builder = model_builder.build() predictor = triton_builder.deploy( instance_type='ml.g4dn.xlarge', initial_instance_count=1
)

का संदर्भ लें मॉडल-बिल्डर-triton.ipynb ट्राइटन के साथ एक मॉडल तैनात करने के लिए।

गले मिलते चेहरे वाले मॉडल

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

# custom inference spec with hugging face pipeline
class MyInferenceSpec(InferenceSpec): def load(self, model_dir: str): return pipeline("translation_en_to_fr", model="t5-small") def invoke(self, input, model): return model(input) inf_spec = MyInferenceSpec()

हम परिभाषित करके अनुमान कार्यभार के इनपुट और आउटपुट को भी परिभाषित करते हैं SchemaBuilder मॉडल इनपुट और आउटपुट के आधार पर ऑब्जेक्ट:

schema = SchemaBuilder(value,output)

फिर हम बनाते हैं ModelBuilder ऑब्जेक्ट बनाएं और मॉडल को सेजमेकर एंडपॉइंट पर उसी तर्क का पालन करते हुए तैनात करें जैसा कि दूसरे उदाहरण में दिखाया गया है:

builder = ModelBuilder( inference_spec=inf_spec, mode=Mode.SAGEMAKER_ENDPOINT, # you can change it to Mode.LOCAL_CONTAINER for local testing schema_builder=schema, image_uri=image,
)
model = builder.build( role_arn=execution_role, sagemaker_session=sagemaker_session,
)
predictor = model.deploy( initial_instance_count=1, instance_type='ml.g5.2xlarge'
)

का संदर्भ लें मॉडल-बिल्डर-हगिंगफेस.ipynb हगिंग फेस पाइपलाइन मॉडल को तैनात करने के लिए।

सेजमेकर एंडपॉइंट पर फाउंडेशन मॉडल तैनात करें

निम्नलिखित उदाहरणों में, हम दिखाते हैं कि कैसे उपयोग करें ModelBuilder फाउंडेशन मॉडल तैनात करने के लिए। पहले बताए गए मॉडलों की तरह, केवल मॉडल आईडी की आवश्यकता है।

हगिंग फेस हब

यदि आप एक फाउंडेशन मॉडल तैनात करना चाहते हैं हगिंग फेस हब, आपको बस पूर्व-प्रशिक्षित मॉडल आईडी पास करना है। उदाहरण के लिए, निम्नलिखित कोड स्निपेट तैनात करता है मेटा-लामा/लामा-2-7बी-एचएफ स्थानीय रूप से मॉडल करें। आप मोड को इसमें बदल सकते हैं Mode.SAGEMAKER_ENDPOINT सेजमेकर एंडपॉइंट पर तैनात करने के लिए।

model_builder = ModelBuilder( model="meta-llama/Llama-2-7b-hf", schema_builder=SchemaBuilder(sample_input, sample_output), model_path="/home/ec2-user/SageMaker/LoadTestResources/meta-llama2-7b", #local path where artifacts will be saved mode=Mode.LOCAL_CONTAINER, env_vars={ # Llama 2 is a gated model and requires a Hugging Face Hub token. "HUGGING_FACE_HUB_TOKEN": "<YourHuggingFaceToken>" }
)
model = model_builder.build()
local_predictor = model.deploy()

हगिंग फेस हब पर गेटेड मॉडल के लिए, आपको हगिंग फेस हब के माध्यम से पहुंच का अनुरोध करना होगा और इसे पर्यावरण चर के रूप में पास करके संबंधित कुंजी का उपयोग करना होगा। HUGGING_FACE_HUB_TOKEN. कुछ हगिंग फेस मॉडलों को रिमोट कोड पर भरोसा करने की आवश्यकता हो सकती है। इसे एक पर्यावरण चर के रूप में भी उपयोग करके सेट किया जा सकता है HF_TRUST_REMOTE_CODE। डिफ़ॉल्ट रूप से, ModelBuilder हगिंग फेस टेक्स्ट जनरेशन अनुमान का उपयोग करेगा (TGI) हगिंग फेस मॉडल के लिए अंतर्निहित कंटेनर के रूप में कंटेनर। यदि आप AWS लार्ज मॉडल अनुमान का उपयोग करना चाहेंगे (एलएमआई) कंटेनर, आप सेट कर सकते हैं model_server पैरामीटर के रूप में ModelServer.DJL_SERVING जब आप कॉन्फ़िगर करते हैं ModelBuilder वस्तु।

की एक साफ़ सुथरी विशेषता ModelBuilder जब आप उपयोग करते हैं तो कंटेनर पैरामीटर की स्थानीय ट्यूनिंग चलाने की क्षमता होती है LOCAL_CONTAINER तरीका। इस सुविधा का उपयोग केवल चलाकर किया जा सकता है tuned_model = model.tune().

का संदर्भ लें डेमो-मॉडल-बिल्डर-हगिंगफेस-llama2.ipynb हगिंग फेस हब मॉडल को तैनात करने के लिए।

सेजमेकर जम्पस्टार्ट

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

model_builder = ModelBuilder( model="huggingface-llm-falcon-7b-bf16", schema_builder=SchemaBuilder(sample_input, sample_output), role_arn=execution_role
) sm_ep_model = model_builder.build() predictor = sm_ep_model.deploy()

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

अनुमान घटक

ModelBulder आपको मॉडलों को तैनात करने के लिए सेजमेकर में नई अनुमान घटक क्षमता का उपयोग करने की अनुमति देता है। अनुमान घटकों पर अधिक जानकारी के लिए देखें सेजमेकर की नवीनतम सुविधाओं का उपयोग करके मॉडल परिनियोजन लागत को औसतन 50% तक कम करें. आप परिनियोजन के लिए अनुमान घटकों का उपयोग कर सकते हैं ModelBuilder निर्दिष्ट करके endpoint_type=EndpointType.INFERENCE_COMPONENT_BASED में deploy() तरीका। आप भी उपयोग कर सकते हैं tune() विधि, जो त्वरक की इष्टतम संख्या लाती है, और यदि आवश्यक हो तो इसे संशोधित करती है।

resource_requirements = ResourceRequirements( requests={ "num_accelerators": 4, "memory": 1024, "copies": 1, }, limits={},
) goldfinch_predictor_2 = model_2.deploy( mode=Mode.SAGEMAKER_ENDPOINT, endpoint_type=EndpointType.INFERENCE_COMPONENT_BASED, ... )

का संदर्भ लें मॉडल-बिल्डर-अनुमान-घटक.ipynb एक मॉडल को एक अनुमान घटक के रूप में तैनात करना।

मॉडलबिल्डर क्लास को कस्टमाइज़ करें

RSI ModelBuilder क्लास आपको मॉडल लोडिंग को अनुकूलित करने की अनुमति देता है InferenceSpec.

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

अनुमान विशिष्टता

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

class InferenceSpec(abc.ABC): @abc.abstractmethod def load(self, model_dir: str): pass @abc.abstractmethod def invoke(self, input_object: object, model: object): pass

निम्नलिखित कोड इस वर्ग का उपयोग करने का एक उदाहरण दिखाता है:

class MyInferenceSpec(InferenceSpec): def load(self, model_dir: str): return // model object def invoke(self, input, model): return model(input)

कस्टमपेलोडट्रांसलेटर

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

  1. अनुमान अनुरोध क्रमबद्धता (ग्राहक द्वारा नियंत्रित)
  2. अनुमान अनुरोध अक्रमांकन (सर्वर या एल्गोरिथ्म द्वारा नियंत्रित)
  3. पेलोड के विरुद्ध मॉडल को लागू करना
  4. प्रतिक्रिया पेलोड वापस भेजा जा रहा है
  5. अनुमान प्रतिक्रिया क्रमबद्धता (सर्वर या एल्गोरिथ्म द्वारा नियंत्रित)
  6. अनुमान प्रतिक्रिया अक्रमांकन (ग्राहक द्वारा नियंत्रित)

निम्नलिखित चित्र मंगलाचरण प्रक्रिया के दौरान क्रमबद्धता और अक्रमांकन की प्रक्रिया को दर्शाता है।

Amazon SageMaker के साथ क्लासिकल ML और LLM को आसानी से पैकेज और तैनात करें, भाग 1: PySDK सुधार | अमेज़ॅन वेब सेवाएँ प्लेटोब्लॉकचेन डेटा इंटेलिजेंस। लंबवत खोज. ऐ.

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

from sagemaker.serve import CustomPayloadTranslator # request translator
class MyRequestTranslator(CustomPayloadTranslator): # This function converts the payload to bytes - happens on client side def serialize_payload_to_bytes(self, payload: object) -> bytes: # converts the input payload to bytes ... ... return //return object as bytes # This function converts the bytes to payload - happens on server side def deserialize_payload_from_stream(self, stream) -> object: # convert bytes to in-memory object ... ... return //return in-memory object # response translator class MyResponseTranslator(CustomPayloadTranslator): # This function converts the payload to bytes - happens on server side def serialize_payload_to_bytes(self, payload: object) -> bytes: # converts the response payload to bytes ... ... return //return object as bytes # This function converts the bytes to payload - happens on client side def deserialize_payload_from_stream(self, stream) -> object: # convert bytes to in-memory object ... ... return //return in-memory object

में डेमो-मॉडल-बिल्डर-pytorch.ipynb नोटबुक, हम प्रदर्शित करते हैं कि कैसे आसानी से एक PyTorch मॉडल को SageMaker एंडपॉइंट पर तैनात किया जा सकता है ModelBuilder साथ CustomPayloadTranslator और InferenceSpec वर्ग.

तैनाती के लिए स्टेज मॉडल

यदि आप मॉडल को अनुमान के लिए या मॉडल रजिस्ट्री में चरणबद्ध करना चाहते हैं, तो आप इसका उपयोग कर सकते हैं model.create() or model.register(). सक्षम मॉडल सेवा पर बनाया जाता है, और फिर आप बाद में तैनात कर सकते हैं। निम्नलिखित कोड देखें:

model_builder = ModelBuilder( model=model, schema_builder=SchemaBuilder(X_test, y_pred), role_arn=execution_role, )
deployable_model = model_builder.build() deployable_model.create() # deployable_model.register() for model registry

कस्टम कंटेनरों का उपयोग करें

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

इस मामले में अपनी स्वयं की कंटेनर छवि का उपयोग करने के लिए, आपको फ़ील्ड सेट करने की आवश्यकता है image_uri और model_server परिभाषित करते समय ModelBuilder:

model_builder = ModelBuilder( model=model, # Pass in the actual model object. its "predict" method will be invoked in the endpoint. schema_builder=SchemaBuilder(X_test, y_pred), # Pass in a "SchemaBuilder" which will use the sample test input and output objects to infer the serialization needed. role_arn=execution_role, image_uri=image_uri, # REQUIRED FOR BYOC: Passing in image hosted in personal ECR Repo model_server=ModelServer.TORCHSERVE, # REQUIRED FOR BYOC: Passing in model server of choice mode=Mode.SAGEMAKER_ENDPOINT, dependencies={"auto": True, "custom": ["protobuf==3.20.2"]}
)

यहां ही image_uri कंटेनर छवि ARN होगी जो आपके खाते में संग्रहीत है अमेज़ॅन इलास्टिक कंटेनर रजिस्ट्री (अमेज़ॅन ईसीआर) रिपॉजिटरी। एक उदाहरण इस प्रकार दिखाया गया है:

# Pulled the xgboost:1.7-1 DLC and pushed to personal ECR repo
image_uri = "<your_account_id>.dkr.ecr.us-west-2.amazonaws.com/my-byoc:xgb"

जब image_uri के दौरान सेट किया गया है ModelBuilder निर्माण प्रक्रिया में, यह छवि का स्वत: पता लगाना छोड़ देगा क्योंकि छवि यूआरआई प्रदान की गई है। अगर model_server मॉडलबिल्डर में सेट नहीं है, तो आपको एक सत्यापन त्रुटि संदेश प्राप्त होगा, उदाहरण के लिए:

ValueError: Model_server must be set when image_uri is set. Supported model servers: {<ModelServer.TRITON: 5>, <ModelServer.DJL_SERVING: 4>, <ModelServer.TORCHSERVE: 1>}

इस पोस्ट के प्रकाशन तक, ModelBuilder आपके स्वयं के कंटेनर लाने में सहायता करता है जो हमारे द्वारा बढ़ाए गए हैं पूर्व-निर्मित डीएलसी कंटेनर छवियां या जैसे मॉडल सर्वर के साथ निर्मित कंटेनर डीप जावा लाइब्रेरी (डीजेएल), पाठ जनरेशन अनुमान (टीजीआई), मशाल को सुरक्षित रखें, तथा ट्राइटन अनुमान सर्वर.

कस्टम निर्भरताएँ

दौड़ते समय ModelBuilder.build(), डिफ़ॉल्ट रूप से यह स्वचालित रूप से आपके पायथन वातावरण को कैप्चर करता है requirements.txt फ़ाइल करें और कंटेनर में समान निर्भरता स्थापित करें। हालाँकि, कभी-कभी आपका स्थानीय पायथन वातावरण कंटेनर में पर्यावरण के साथ संघर्ष करेगा। ModelBuilder आपको अपनी कस्टम कॉन्फ़िगरेशन प्रदान करने की अनुमति देकर ऐसी निर्भरता विवादों को ठीक करने के लिए कैप्चर की गई निर्भरता को संशोधित करने का एक आसान तरीका प्रदान करता है ModelBuilder. ध्यान दें कि यह केवल टॉर्चसर्व और ट्राइटन के लिए है InferenceSpec. उदाहरण के लिए, आप मॉडलबिल्डर में इनपुट पैरामीटर निर्भरता, जो कि एक पायथन डिक्शनरी है, को निम्नानुसार निर्दिष्ट कर सकते हैं:

dependency_config = { "auto" = True, "requirements" = "/path/to/your/requirements.txt" "custom" = ["module>=1.2.3,<1.5", "boto3==1.16.*", "some_module@http://some/url"]
} ModelBuilder( # Other params dependencies=dependency_config,
).build()

हम निम्नलिखित फ़ील्ड परिभाषित करते हैं:

  • स्वत: - क्या आपके परिवेश में निर्भरता को स्वतः कैप्चर करने का प्रयास करना है।
  • आवश्यकताओं - अपने स्वयं के पथ की एक श्रृंखला requirements.txt फ़ाइल। (यह वैकल्पिक है.)
  • रिवाज - किसी भी अन्य कस्टम निर्भरता की सूची जिसे आप जोड़ना या संशोधित करना चाहते हैं। (यह वैकल्पिक है.)

यदि एक ही मॉड्यूल कई स्थानों पर निर्दिष्ट है, custom तब सर्वोच्च प्राथमिकता होगी requirements, तथा auto सबसे कम प्राथमिकता होगी. उदाहरण के लिए, मान लें कि ऑटोडिटेक्ट के दौरान, ModelBuilder पहचान लेता है numpy==1.25, और एक requirements.txt फ़ाइल प्रदान की गई है जो निर्दिष्ट करती है numpy>=1.24,<1.26. इसके अतिरिक्त, एक कस्टम निर्भरता है: custom = ["numpy==1.26.1"]। इस मामले में, numpy==1.26.1 जब हम कंटेनर में निर्भरताएँ स्थापित करेंगे तो इसे चुना जाएगा।

क्लीन अप

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

predictor.delete_model()
predictor.delete_endpoint()

निष्कर्ष

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

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

सिरिशा उपाध्यायला, रेमंड लियू, गैरी वांग, धवल पटेल, दीपक गर्ग और राम वेगिराजू को विशेष धन्यवाद।


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

Amazon SageMaker के साथ क्लासिकल ML और LLM को आसानी से पैकेज और तैनात करें, भाग 1: PySDK सुधार | अमेज़ॅन वेब सेवाएँ प्लेटोब्लॉकचेन डेटा इंटेलिजेंस। लंबवत खोज. ऐ.मेलानी ली, पीएचडी, सिडनी, ऑस्ट्रेलिया स्थित AWS में एक वरिष्ठ AI/ML विशेषज्ञ TAM हैं। वह एडब्ल्यूएस पर अत्याधुनिक एआई/एमएल टूल का उपयोग करके उद्यम ग्राहकों को समाधान बनाने में मदद करती है और सर्वोत्तम प्रथाओं के साथ एमएल समाधानों को तैयार करने और लागू करने पर मार्गदर्शन प्रदान करती है। अपने खाली समय में, वह प्रकृति का पता लगाना और परिवार और दोस्तों के साथ समय बिताना पसंद करती हैं।

Amazon SageMaker के साथ क्लासिकल ML और LLM को आसानी से पैकेज और तैनात करें, भाग 1: PySDK सुधार | अमेज़ॅन वेब सेवाएँ प्लेटोब्लॉकचेन डेटा इंटेलिजेंस। लंबवत खोज. ऐ.मार्क कारपो Amazon SageMaker सर्विस टीम के साथ एक ML आर्किटेक्ट है। वह बड़े पैमाने पर एमएल वर्कलोड को डिजाइन करने, तैनात करने और प्रबंधित करने में ग्राहकों की मदद करने पर ध्यान केंद्रित करता है। अपने खाली समय में उन्हें यात्रा करना और नई जगहों की खोज करना अच्छा लगता है।

Amazon SageMaker के साथ क्लासिकल ML और LLM को आसानी से पैकेज और तैनात करें, भाग 1: PySDK सुधार | अमेज़ॅन वेब सेवाएँ प्लेटोब्लॉकचेन डेटा इंटेलिजेंस। लंबवत खोज. ऐ.सैम एडवर्ड्स, AWS सिडनी में एक क्लाउड इंजीनियर (AI/ML) है जो मशीन लर्निंग और Amazon SageMaker में विशेषज्ञता रखता है। वह ग्राहकों को मशीन लर्निंग वर्कफ़्लो से संबंधित मुद्दों को हल करने और उनके लिए नए समाधान बनाने में मदद करने का शौक रखते हैं। काम के अलावा, उन्हें रैकेट खेल खेलना और यात्रा करना पसंद है।

Amazon SageMaker के साथ क्लासिकल ML और LLM को आसानी से पैकेज और तैनात करें, भाग 1: PySDK सुधार | अमेज़ॅन वेब सेवाएँ प्लेटोब्लॉकचेन डेटा इंटेलिजेंस। लंबवत खोज. ऐ.रघु रमेश अमेज़ॅन सेजमेकर सर्विस टीम के साथ एक वरिष्ठ एमएल सॉल्यूशंस आर्किटेक्ट हैं। वह ग्राहकों को बड़े पैमाने पर एमएल उत्पादन कार्यभार को सेजमेकर में बनाने, तैनात करने और स्थानांतरित करने में मदद करने पर ध्यान केंद्रित करता है। वह मशीन लर्निंग, एआई और कंप्यूटर विज़न डोमेन में माहिर हैं और उनके पास यूटी डलास से कंप्यूटर साइंस में मास्टर डिग्री है। अपने खाली समय में उन्हें यात्रा करना और फोटोग्राफी करना पसंद है।

Amazon SageMaker के साथ क्लासिकल ML और LLM को आसानी से पैकेज और तैनात करें, भाग 1: PySDK सुधार | अमेज़ॅन वेब सेवाएँ प्लेटोब्लॉकचेन डेटा इंटेलिजेंस। लंबवत खोज. ऐ.शिव राज कोटिनी अमेज़ॅन सेजमेकर अनुमान उत्पाद पोर्टफोलियो में प्रधान उत्पाद प्रबंधक के रूप में काम करता है। वह अनुमान के लिए सेजमेकर में मॉडल परिनियोजन, प्रदर्शन ट्यूनिंग और अनुकूलन पर ध्यान केंद्रित करता है।

Amazon SageMaker के साथ क्लासिकल ML और LLM को आसानी से पैकेज और तैनात करें, भाग 1: PySDK सुधार | अमेज़ॅन वेब सेवाएँ प्लेटोब्लॉकचेन डेटा इंटेलिजेंस। लंबवत खोज. ऐ.मोहन गांधी AWS में एक वरिष्ठ सॉफ्टवेयर इंजीनियर हैं। वह पिछले 10 वर्षों से AWS के साथ हैं और उन्होंने EMR, EFA और RDS जैसी विभिन्न AWS सेवाओं पर काम किया है। वर्तमान में, वह SageMaker Inference अनुभव को बेहतर बनाने पर केंद्रित है। अपने खाली समय में वह लंबी पैदल यात्रा और मैराथन का आनंद लेते हैं।

समय टिकट:

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